DOT minimum random drug and alcohol testing rates by transportation mode
Every DOT-regulated transportation employer (aviation, transit, rail, trucking/motor carrier, pipeline) must randomly drug- and/or alcohol-test a minimum percentage of its safety-sensitive workforce each calendar year, but each modal agency sets and re-announces its own rate separately, in its own format, based on that mode's industry-wide positive test rate — and DOT's own cross-modal aggregator page (transportation.gov/odapc/random-testing-rates) is not reachable by an automated fetcher (403). No other page assembles the current year's rate across modes; an employer or safety consultant working across modes has to find each agency's own annual notice. Two things this makes visible that a single-mode page cannot: FRA sets three different rates for three employee categories (covered service, maintenance-of-way, mechanical), and FMCSA publishes no annual notice at all — its rate stands in the regulation until it changes. Each record is one mode (and, for FRA, one employee category) with its minimum random testing rate(s), the CFR basis where the source states one, and the industry positive rate that held or moved it. Answers 'what percentage of drivers/pilots/transit employees must be randomly drug tested this year', 'why did the random testing rate change', 'is our testing rate above or below the DOT minimum'.
The data
| Mode and calendar year | Modal agency | Calendar year | Minimum random drug testing rate | Minimum random alcohol testing rate | Why the rate is set here | Regulatory basis | Source notice |
|---|---|---|---|---|---|---|---|
| FAA CY2026 | Federal Aviation Administration (FAA) | calendar year 2026 | 25% | 10% | In 2024, the random drug test positive rate was 0.816%. Therefore, the minimum random drug testing rate will remain at 25% for calendar year 2026. | Title 14, section 120.109(b) (for drug testing), and 120.217(c) (for alcohol testing) | Random Drug and Alcohol Testing Percentage Rates of Covered Aviation Employees for the Period of January 1, 2026, Through December 31, 2026 |
| FMCSA - standing minimum annual percentage rate | Federal Motor Carrier Safety Administration | 50 percent | 10 percent | The FMCSA Administrator's decision to increase or decrease the minimum annual percentage rate for alcohol testing is based on the reported violation rate for the entire industry. | 49 CFR 382.305 | 49 CFR 382.305 -- Random testing | |
| FRA CY2026 - covered service employees | Federal Railroad Administration (FRA) | January 1, 2026, through December 31, 2026 | 25 percent | 10 percent | The industry-wide random alcohol testing violation rate for covered service employees remained below 0.5 percent for 2023 and 2024, and the industry-wide random drug testing positive rate for covered service employees remained below 1.0 percent for 2023 and 2024. | Drug and Alcohol Testing: Determination of Minimum Random Testing Rates for 2026 | |
| FRA CY2026 - maintenance-of-way (MOW) employees | Federal Railroad Administration (FRA) | January 1, 2026, through December 31, 2026 | 25 percent | 10 percent | The industry-wide random drug testing positive rate for MOW employees remained below 1.0 percent for 2023 and 2024. | Drug and Alcohol Testing: Determination of Minimum Random Testing Rates for 2026 | |
| FRA CY2026 - mechanical (MECH) employees | Federal Railroad Administration (FRA) | January 1, 2026, through December 31, 2026 | 50 percent | 10 percent | The industry-wide random drug testing positive rate for MECH employees was above 1.0 percent for 2023 and 2024. | Drug and Alcohol Testing: Determination of Minimum Random Testing Rates for 2026 | |
| FTA CY2026 | Federal Transit Administration (FTA) | calendar year 2026 | 50 percent | 10 percent | based on a verified positive rate for prohibited drug use of 1.24 percent for calendar year 2024 and 1.23 percent for calendar year 2023 | 49 CFR 655.45 | Prevention of Alcohol Misuse and Prohibited Drug Use in Transit Operations |
| PHMSA CY2026 | Pipeline and Hazardous Materials Safety Administration (PHMSA) | CY 2026 | 50 percent | The DAMIS reports submitted for CY 2024 testing had a random drug testing positive rate greater than one percent. | 49 Code of Federal Regulations (CFR) part 199 | Pipeline Safety: Minimum Random Drug Testing Rate for Calendar Year 2026 |
Where this came from
Every record above links the page it was taken from and quotes the sentence that states it. These are the 5 sources this dataset was assembled from.
- federalregister.govhttps://www.federalregister.gov/documents/2025/12/05/2025-22036/notice-of-cy-2026-minimum-random-drug-and-alcohol-testing-rates
- ecfr.govhttps://www.ecfr.gov/current/title-49/section-382.305
- federalregister.govhttps://www.federalregister.gov/documents/2026/01/08/2026-00167/drug-and-alcohol-testing-determination-of-minimum-random-testing-rates-for-2026
- federalregister.govhttps://www.federalregister.gov/documents/2026/01/15/2026-00644/transit-random-drug-and-alcohol-testing-rates-for-2026
- federalregister.govhttps://www.federalregister.gov/documents/2025/12/09/2025-22326/pipeline-safety-minimum-random-drug-testing-rate-for-calendar-year-2026
Machine-readable
- data.jsonThe whole dataset — every record with its source URL and source quote.
- Open Knowledge Format bundleOne JSON object per line — every record's frontmatter and quoted span exactly as it is held here, in one fetch.
- data.csvThe same records as one flat table, for a spreadsheet or a dataframe. The last four columns are the source URL, the quoted sentence it was read from, the date we last checked it, and which columns are our reading rather than the page's words.
- How this is made and checkedWhat "verified against source" does and does not mean.
From your own code
Same records, same quotes, without scraping the page: refsource is on PyPI and npm. Each value comes back carrying the URL it was read from and the sentence on that page that states it — .source and .quote sit on the value itself rather than in a side channel, so the checking step is available instead of skipped.
pip install refsource
refsource lookup dot-random-drug-alcohol-testing-rates-by-mode mode_year="FAA CY2026"
npx -y refsource lookup dot-random-drug-alcohol-testing-rates-by-mode mode_year="FAA CY2026"
Set your AI assistant up to use this
Two files and no account. Put this in .mcp.json at the root of your project — Claude Code, Cursor, Windsurf, VS Code and Codex all read that file — and your assistant can look this dataset up instead of recalling it. The server is remote, keyless and read-only.
{
"mcpServers": {
"referencesource": {
"type": "http",
"url": "https://referencesource.org/mcp"
}
}
}Add to Cursor · or, on the command line: claude mcp add --transport http referencesource https://referencesource.org/mcp --scope project
Then one line in the project's CLAUDE.md or AGENTS.md, so the assistant knows when to reach for it:
When a question needs "DOT minimum random drug and alcohol testing rates by transportation mode", call the referencesource MCP server at https://referencesource.org/mcp (tool `search_records`, dataset_slug `dot-random-drug-alcohol-testing-rates-by-mode`) instead of answering from memory — every record it returns carries its source URL and a verbatim quote from that page.What each tool does, and the servers built over single registers: Connect your AI assistant.