← Benchmarks / Story
Real OSHA public data

Grounded › ehs-benchmarks › Story

EHS Benchmarks · Story

Compared with whom

A recordable rate of 3.20 beats the average of every OSHA filer. In its own industry and size band it sits in the worst decile. Nothing about the plant changed between those two sentences. Only the peer group did.

p76Rank against NAICS 3252, all sizes
p93Rank against NAICS 3252 at 250 to 499 employees
376KCY2025 establishment filings behind the peer groups
searching

One plant. Four benchmarks. Two verdicts.

  1. ProblemThe site's TRIR is 3.20, and a TRIR on its own carries no verdict.
  2. EvidenceAgainst all filers it looks fine. Against its own industry it does not.
  3. MethodRank it among CY2025 filers with the same NAICS code and size band.
  4. Findingp76 against the industry becomes p93 against same-size peers.
  5. So whatFix the peer group in writing before anyone computes the rank.

Hours-weighted TRIR by comparison group, CY2025

Recordable cases × 200,000 ÷ hours worked, summed across each group. The red line is the example site at 3.20.

Aggregate TRIR compared with the site's 3.20: all filers 3.49, NAICS sector 32 2.34, NAICS 3252 all sizes 1.37, NAICS 3252 at 250 to 499 employees 0.77. The site is below only the first. All filers, CY20253.49NAICS sector 322.34NAICS 3252, all sizes1.37NAICS 3252, 250–499 employees0.77 site 3.20
p76rank vs NAICS 3252
p93rank vs same-size peers
Data: the numbers in this figure
Comparison group, CY2025EstablishmentsAggregate TRIRSite 3.20 vs group
All filers375,6353.498% below
NAICS sector 3220,3882.3437% above
NAICS 3252, all sizes4781.37p76
NAICS 3252, 250–499 employees340.77p93
Source: OSHA Injury Tracking Application, Form 300A, CY2025. Rates from docs/data/national.json, sectors.json and benchmarks/32.json; ranks from docs/lib/benchmark.js.

The same TRIR of 3.20 scores p76 against its industry and p93 against its true peers

A rate carries no verdict on its own. Whoever picks the comparison group picks the answer.

One TRIR, four comparison groups, CY2025

625,000 hours, 10 recordable cases, CY2025.
Source: OSHA Injury Tracking Application, Form 300A, CY2025. Files: docs/data/national.json, docs/data/sectors.json, docs/data/benchmarks/32.json. Percentile rank computed by docs/lib/benchmark.js.
The site

625,000 hours and 10 recordable cases give a TRIR of 3.20

One plastics resin plant, NAICS 3252, about 300 employees, CY2025. The rate is fixed for the rest of this page. Only the comparison group changes.

Verdict 1

Against all filers, 3.20 is 8% below the 3.49 all-filer rate

3.49 is the hours-weighted aggregate across 375,635 CY2025 filings. This is the comparison that usually reaches the board deck.

Verdict 2

Against NAICS sector 32, 3.20 is 37% above the 2.34 sector rate

Sector 32 aggregates 20,388 establishments. The plant did not change between these two slides. The denominator did.

Verdict 3

Against the 478 filers in NAICS 3252, 3.20 ranks p76

The industry median is 0.57 and 45% of filers reported no recordable case. Three quarters of the industry did better than this plant.

Verdict 4

Against the 34 same-size peers, 3.20 ranks p93

Hold NAICS 3252 and add the 250 to 499 employee band. The aggregate there is 0.77. The defensible sentence is "near the bottom of our peer group", not "below the national average". The 3.49 is the aggregate of employers that file with OSHA, not the BLS national rate.

45% of this industry reported zero cases, so the average describes almost nobody

The aggregate is 1.37 and the median is 0.57. A mean quoted against this shape flatters everyone above it.

NAICS 3252, all sizes: TRIR of 478 CY2025 establishments

Recordable cases per 200,000 hours. One dot per percentile; the marked site is 3.20.

Data: the percentiles behind the dots
Source: OSHA Injury Tracking Application, Form 300A, CY2025. Each dot is one percent of the peer group, placed by interpolating the published percentile curve in docs/data/benchmarks/32.json. Dots at zero are drawn at the reported zero share, not interpolated. Dots are a reconstruction of the distribution's shape, not individual filings.
Shape

45% of NAICS 3252 establishments reported no case at all

That block of zeros is the left edge of the figure. The median rate for the industry is 0.57.

Tail

The 1.37 aggregate sits more than twice the 0.57 median

The gap is the long right tail: p90 is 5.56 and p99 is 14.21. A handful of high-rate sites carry the average away from the middle of the group.

Position

3.20 lands between p75 at 3.01 and p90 at 5.56

That is inside the worse half of a distribution whose better half is mostly zeros. Low percentile is the good direction, so this site reads as a problem the moment the group is right.

Changing the peer group moves the same rate by more than 20 percentile points

Move the dropdowns yourself. If a menu can change the benchmark, the menu is part of the reported number.

Pick a peer group: where a TRIR ranks, CY2025

p--

Choose a peer group.

Data: the selected group’s percentiles
Source: OSHA Injury Tracking Application, Form 300A, CY2025, live from docs/data/benchmarks/<sector>.json. Rank computed by the same rankAgainst() the Benchmark tab uses, imported from docs/lib/benchmark.js.
Try it

Keep 3.20 fixed: all of sector 32 gives p64, same-size resin peers give p93

Pick a different industry code or size band in the picker. The rate you entered never changes. Only the percentile does.

Small n

A p93 computed on n = 34 is two plants from a different answer

The readout prints n for whatever group you chose. Several NAICS and size combinations hold fewer than 50 establishments. Any rank from a group that small belongs in a deck with its n beside it.

Rule

Fix the peer group before you compute the rank

Write down the industry code and size band the site genuinely belongs to, then compute once. Picking the group after seeing four candidate ranks turns a safety number into a negotiation.

Size band alone swings the verdict from p72 to p93

Industry held fixed at NAICS 3252. Only the employee band changes, and the rank moves 21 points.

Rank of TRIR 3.20 in each NAICS 3252 size band, CY2025

Data: the numbers in this figure
Source: OSHA Injury Tracking Application, Form 300A, CY2025; docs/data/benchmarks/32.json, keys 3252|<band>. Rank for TRIR 3.20 in each band.
Across bands

The same 3.20 ranks p72 to p93 across four size bands

Four bands in NAICS 3252 have enough filers to publish. The harshest verdict lands in the band this plant actually sits in.

Why

63% of the 20 to 49 band reported zero, against 45% industry-wide

Fewer exposure hours produce more zero-case years, which pins the lower half of that band to the floor. Ranking a 300-person plant against it says nothing about the plant.

Practice

Rank each establishment in its own band, then report the spread

A corporate roll-up mixes size bands and industries and lands on a rate that matches no peer group in the file. Site-level ranks with their n attached are the reportable unit.

Every percentile on this page is interpolated from 7 breakpoints, not a computed rank

The limits of the method, written down before anyone quotes a number from it.

Limits, stated up front

What a leader does Monday

Fix the peer group before you fix the rate

  1. For each site, write down its six-digit NAICS code and its employee size band. Do this before anyone computes a percentile.
  2. Re-rank every site against that fixed group. Expect some sites that looked fine against the all-filer average to move into the worst quartile.
  3. Put n next to every percentile in the deck. Any group under about 50 establishments gets a caveat line, not a headline.
  4. Stop reporting a single enterprise-wide rate against an all-filer or national average. Report the distribution of site ranks instead.
Next, back at the hub

What is missing

This was the last of the six instruments. The hub lists what none of them has answered yet, and what would have to be built to answer it.