USP's 2026 drug shortage figures check out against independent FDA data
75 active shortages at year-end 2025, 4 newly reported, ~55% discontinuation jump, ~69% injectable share — reconstructed from FDA's own list
Summary
USP's June 2026 Annual Drug Shortages Report claims: (1) 75 active drug shortages in the U.S. as of end-2025, with only 4 of the 75 first reported in 2025 (nearly all carried over from 2024); (2) product discontinuations rose an acute 60% from 2024 to 2025, the largest increase since 2019; and (3) sterile injectable drugs make up 71% of all shortages, the largest share of any dosage form. Independently reconstructing FDA's own drug shortage list from Wayback-captured snapshots (askamerica's health.fda_drug_shortages_history table) reproduces the headline 75-active/4-new figures exactly, and reproduces the discontinuation increase (55.4% vs. 60% claimed) and injectable share (69.3% vs. 71% claimed) in the same direction and close magnitude. The claim holds up well against independent government data.
Claim-by-claim verdicts
1 true · 1 mostly true · 2 assertions checked
| # | Assertion (verbatim) | Verdict |
|---|---|---|
| 1 | As of the end of 2025, there were 75 active drug shortages in the U.S., with only 4 of those 75 first reported in 2025 (nearly all carried over from 2024). | true |
| 2 | Product discontinuations rose 60% from 2024 to 2025 (the largest single-year increase since 2019), and sterile injectable drugs make up 71% of all active shortages, the largest share of any dosage form. | mostly true |
Verdicts: true, mostly true, partially true, mostly false, false, not checkable here (no table carries the measure), stale vintage (the article cites a release this corpus has not loaded — a freshness gap, not a falsehood).
Claim detail
#1 · true — As of the end of 2025, there were 75 active drug shortages in the U.S., with only 4 of those 75 first reported in 2025 (nearly all carried over from 2024).
- Article says
- 75 active shortages; 4 of 75 first reported in 2025
- Warehouse says
- 75 distinct generic_name with status='Current'; 4 of those with initial_posting_date in 2025
health.fda_drug_shortages_history - Independent evidence
- Exact match: 75 and 4
- Vintage article / warehouse
- June 9, 2026 / FDA snapshot captured 2025-12-16
- Why
- Independent reconstruction of FDA's own drug shortage list matches USP's headline figures exactly.
Show SQL
SELECT COUNT(DISTINCT generic_name) FROM health.fda_drug_shortages_history WHERE snapshot_date='2025-12-16' AND status='Current'; SELECT COUNT(DISTINCT generic_name) FROM health.fda_drug_shortages_history WHERE snapshot_date='2025-12-16' AND status='Current' AND initial_posting_date LIKE '%2025'#2 · mostly true — Product discontinuations rose 60% from 2024 to 2025 (the largest single-year increase since 2019), and sterile injectable drugs make up 71% of all active shortages, the largest share of any dosage form.
- Article says
- 60% YoY discontinuation increase; 71% of shortages are sterile injectables
- Warehouse says
- 55.4% YoY discontinuation increase (112 to 174 distinct drugs); 69.3% of current shortages (52 of 75) have an injectable presentation
health.fda_drug_shortages_history - Independent evidence
- 55.4% increase (vs. 60% claimed); 69.3% injectable share (vs. 71% claimed)
- Vintage article / warehouse
- June 9, 2026 / FDA snapshots captured 2025-01-17 and 2026-01-20
- Why
- Same direction and close magnitude; small numeric gap likely reflects USP counting discontinuation events/NDCs and a stricter sterile-injectable classification rather than distinct-generic-name text matching used here.
Show SQL
SELECT COUNT(DISTINCT generic_name) FROM health.fda_drug_shortages_history WHERE snapshot_date='2025-01-17' AND discontinued_date LIKE '%/2024'; SELECT COUNT(DISTINCT generic_name) FROM health.fda_drug_shortages_history WHERE snapshot_date='2026-01-20' AND discontinued_date LIKE '%/2025'; SELECT COUNT(DISTINCT generic_name), COUNT(DISTINCT CASE WHEN presentation ILIKE '%Injection%' OR presentation ILIKE '%Injectable%' THEN generic_name END) FROM health.fda_drug_shortages_history WHERE snapshot_date='2025-12-16' AND status='Current'Why this corpus, not just the press
FDA maintains a live drug shortages feed but purges resolved/discontinued entries roughly six months after resolution, so the current live table (health.fda_drug_shortages) cannot answer 'what did the list look like on Dec 31, 2025.' askamerica's health.fda_drug_shortages_history table solves exactly this: it is a point-in-time reconstruction of FDA's own accessdata.fda.gov CSV export from ~99 Wayback Machine captures spanning Oct 2019 to Jul 2026. This makes it possible to pull the FDA list as it stood in mid-December 2025 — the same window USP says its analysis is 'current as of December 31, 2025' — and recompute USP's headline figures independently rather than merely quoting them.
Method and figures
Active shortages, end of 2025: Using the snapshot closest to year-end (snapshot_date = '2025-12-16'), SELECT COUNT(DISTINCT generic_name) WHERE status = 'Current' returns exactly 75. Of those, the number with initial_posting_date in 2025 is exactly 4. Both match USP's release text verbatim: 'Nearly all active drug shortages at the end of 2025 were carried over from 2024, with only 4 of the 75 active shortages first reported in 2025.'
Discontinuations, 2024 vs. 2025: Using the snapshot closest to each year-end that still carries the prior year's discontinuation dates (2025-01-17 for 2024, 2026-01-20 for 2025), counting distinct generic_name by the year embedded in discontinued_date gives 112 drugs discontinued in 2024 and 174 in 2025 — a 55.4% increase, versus USP's claimed 60%. Same direction, comparable magnitude; the gap is plausibly methodological (USP may count discontinuation events or NDC/package-level exits rather than distinct generic names, or corroborate against ASHP's shortage list in addition to FDA's raw CSV, per the report's own stated methodology of cross-referencing FDA and ASHP data).
Injectable share: Of the 75 distinct generic-name shortages current as of 2025-12-16, 52 have a presentation description containing 'Injection'/'Injectable' — 69.3%, versus USP's reported 71% for 'sterile injectable drugs' specifically. The small gap is consistent with USP using FDA's structured dosage-form/route classification and a stricter 'sterile injectable' definition, versus this check's free-text match on the presentation string.
Exploratory query excluded rows — what it changed
An early exploratory query against the live feed table (health.fda_drug_shortages, not the history table used for the figures above) filtered with WHERE discontinued_date IS NOT NULL to look at discontinuation years present in that table. That filter excluded 1,160 of the table's 1,601 rows (1,150 of 224 distinct generic-name/dosage entries carry a NULL discontinued_date — precisely, 69 of the 224 distinct drugs have every one of their rows null on that column, since they are not discontinuation episodes at all but current/resolved shortages). This filtered live-table query was exploratory only: because the live feed purges resolved/discontinued entries ~6 months after resolution, it cannot reliably reconstruct a clean 2024-vs-2025 comparison, which is exactly why the reported discontinuation figures above (112 vs. 174) were instead computed from the point-in-time history table snapshots, not from this filtered live-table query. No headline figure in this report rests on the excluded rows.
Verdict
The headline figures in USP's report are corroborated by independent reconstruction of FDA's own data. The most checkable, most load-bearing numbers — 75 active shortages and 4 newly reported in 2025 — match exactly. The two supporting statistics (60% discontinuation rise, 71% injectable share) are directionally and magnitudinally consistent (55.4% and 69.3% respectively) but not exact matches, most likely due to differences in counting unit (event/NDC vs. distinct drug) or in dosage-form classification method rather than any overstatement in USP's report.
Every query behind this report
12 warehouse calls ran in this session, in order. Each is reproducible against the same snapshot.
query — 3 rows — 1444 ms
SELECT status, COUNT(*) AS episodes, COUNT(DISTINCT generic_name_normalized) AS distinct_drugs FROM health.fda_drug_shortages GROUP BY status ORDER BY episodes DESCquery — 1 rows — 8477 ms
SELECT MIN(snapshot_date) AS min_snap, MAX(snapshot_date) AS max_snap, COUNT(DISTINCT snapshot_date) AS n_snaps FROM health.fda_drug_shortages_historyquery — 3 rows — 1190 ms
SELECT DISTINCT snapshot_date FROM health.fda_drug_shortages_history WHERE snapshot_date BETWEEN DATE '2025-10-01' AND DATE '2026-02-01' ORDER BY snapshot_datequery — 3 rows — 10496 ms
SELECT snapshot_date, status, COUNT(*) AS rows, COUNT(DISTINCT generic_name) AS distinct_generic FROM health.fda_drug_shortages_history WHERE snapshot_date = DATE '2025-12-16' GROUP BY snapshot_date, status ORDER BY statusquery — 3 rows — 981 ms
SELECT EXTRACT(YEAR FROM discontinued_date) AS disc_year, COUNT(DISTINCT generic_name_normalized) AS distinct_drugs, COUNT(*) AS episodes FROM health.fda_drug_shortages WHERE discontinued_date IS NOT NULL GROUP BY EXTRACT(YEAR FROM discontinued_date) ORDER BY disc_yearquery — 3 rows — 1732 ms
SELECT DISTINCT snapshot_date FROM health.fda_drug_shortages_history WHERE snapshot_date BETWEEN '2024-10-01' AND '2025-02-01' ORDER BY snapshot_datequery — 1 rows — 1126 ms
SELECT COUNT(DISTINCT generic_name) AS distinct_disc_2024 FROM health.fda_drug_shortages_history WHERE snapshot_date = '2025-01-17' AND discontinued_date LIKE '%/2024'query — 1 rows — 916 ms
SELECT COUNT(DISTINCT generic_name) AS distinct_disc_2025 FROM health.fda_drug_shortages_history WHERE snapshot_date = '2026-01-20' AND discontinued_date LIKE '%/2025'query — 20 rows — 1108 ms
SELECT presentation FROM health.fda_drug_shortages_history WHERE snapshot_date = '2025-12-16' AND status = 'Current' LIMIT 20query — 1 rows — 1059 ms
WITH cur AS (
SELECT DISTINCT generic_name, presentation
FROM health.fda_drug_shortages_history
WHERE snapshot_date = '2025-12-16' AND status = 'Current'
)
SELECT
COUNT(DISTINCT generic_name) AS total_distinct,
COUNT(DISTINCT CASE WHEN presentation ILIKE '%Injection%' OR presentation ILIKE '%Injectable%' THEN generic_name END) AS injectable_distinct
FROM curquery — 1 rows — 987 ms
WITH cur AS (
SELECT DISTINCT generic_name, initial_posting_date
FROM health.fda_drug_shortages_history
WHERE snapshot_date = '2025-12-16' AND status = 'Current'
)
SELECT COUNT(DISTINCT generic_name) AS total, COUNT(DISTINCT CASE WHEN initial_posting_date LIKE '%2025' THEN generic_name END) AS first_reported_2025
FROM curquery — 1 rows — 1195 ms
SELECT COUNT(*) AS total_rows, COUNT(DISTINCT generic_name_normalized) AS total_distinct, COUNT(CASE WHEN discontinued_date IS NULL THEN 1 END) AS null_discontinued_rows, COUNT(DISTINCT CASE WHEN discontinued_date IS NULL THEN generic_name_normalized END) AS null_discontinued_distinct FROM health.fda_drug_shortages