PlantOps BI

KPI Library / Safety

TRIR (Total Recordable Incident Rate)

Formula: Recordable incidents × 200,000 ÷ total hours worked
Typical range: Varies by NAICS code; BLS publishes annual industry averages, many discrete manufacturers target under 2.0

TRIR measures the number of OSHA-recordable injuries and illnesses per 100 full-time employees over a year, normalizing incident counts so plants of different sizes can be compared on the same scale. The 200,000-hour constant in the formula represents 100 employees working 2,000 hours a year, which is where the number comes from.

What good looks like

There is no single “good” TRIR; it depends heavily on industry, which is why OSHA and BLS publish rates by NAICS code rather than one blanket target. Within discrete manufacturing, plants that treat 2.0 or below as a serious operating target are common, and a well-run plant with a strong safety culture can sustain well under 1.0.

TRIR is one of the easiest metrics on this page to game, and it happens more than plants admit. Pressure to keep the number low creates an incentive to reclassify a recordable as a first-aid case, to steer an injured employee toward “restricted duty” language that avoids a recordable, or to delay reporting until a case ages out of the period. None of that changes whether someone got hurt; it only changes whether leadership finds out. Track first-aid case volume alongside TRIR; a first-aid count that keeps rising while TRIR stays flat is worth a hard look.

TRIR in Power BI (DAX)

With an incident fact and a separate hours-worked fact by plant and period:

Recordable Incidents =
CALCULATE (
    COUNTROWS ( fact_safety_incidents ),
    fact_safety_incidents[recordable_flag] = TRUE ()
)

Hours Worked = SUM ( fact_hours_worked[hours_worked] )

TRIR = DIVIDE ( [Recordable Incidents] * 200000, [Hours Worked] )

TRIR (Trailing 12mo) =
CALCULATE (
    [TRIR],
    DATESINPERIOD ( dim_date[date], MAX ( dim_date[date] ), -12, MONTH )
)

Report TRIR on a trailing 12-month basis by default. A single-month TRIR swings wildly on small incident counts, one recordable at a small plant can move the monthly number several points, and that volatility invites people to dismiss the metric entirely.

Common mistakes

  1. Comparing a partial year to a full-year benchmark without annualizing. Six months of data compared against a published annual rate will read artificially low.
  2. Leaving contractor or temp hours out of the denominator while their incidents stay in the numerator. This is one of the most common ways TRIR gets accidentally inflated, and it usually surfaces during an audit, not before.
  3. Reporting TRIR monthly instead of trailing 12 months. Monthly TRIR is mostly noise at typical incident volumes; trailing 12 months is what actually tracks trend.