| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| <title>HSE Incident Rate Calculator — TRIR / LTIFR / DART / AFR | SmartQHSE</title> |
| <meta name="description" content="Interactive calculator for TRIR (OSHA Total Recordable Incident Rate), LTIFR (Lost Time Injury Frequency Rate), DART (Days Away Restricted Transferred), AFR (Accident Frequency Rate), and Severity Rate. Formulas + benchmarks + open data. CC BY 4.0." /> |
| <link rel="canonical" href="https://huggingface.co/spaces/SmartQHSE/hse-incident-rate-calculator" /> |
| <style>* { box-sizing: border-box; } |
| body { font-family: system-ui, -apple-system, sans-serif; margin: 0; background: #fafaf9; color: #191919; line-height: 1.55; } |
| header { background: #191919; color: white; padding: 32px 24px; text-align: center; } |
| header h1 { margin: 0 0 8px 0; font-size: 28px; font-weight: 700; } |
| header p { margin: 0 auto; opacity: 0.75; font-size: 14px; max-width: 640px; } |
| header a { color: #0B998C; text-decoration: none; } |
| main { max-width: 900px; margin: 0 auto; padding: 24px; } |
| .calc { background: white; border: 1px solid #e5e5e5; border-radius: 12px; padding: 24px; margin-bottom: 20px; } |
| .calc h2 { margin: 0 0 4px 0; font-size: 20px; font-weight: 700; } |
| .calc .formula { font-family: ui-monospace, "Cascadia Code", monospace; background: #f5f5f4; padding: 8px 12px; border-radius: 6px; font-size: 13px; margin: 8px 0 16px 0; color: #37352F; } |
| .calc .source { font-size: 12px; color: #6B6B6B; margin-bottom: 16px; } |
| .calc .source a { color: #0B998C; text-decoration: none; } |
| .input-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 12px; } |
| .input-row label { display: flex; flex-direction: column; font-size: 13px; color: #6B6B6B; gap: 4px; } |
| .input-row input { padding: 10px 12px; border: 1px solid #e5e5e5; border-radius: 8px; font-size: 16px; outline: none; font-family: inherit; } |
| .input-row input:focus { border-color: #0B998C; box-shadow: 0 0 0 3px rgba(11,153,140,0.1); } |
| .result { background: linear-gradient(135deg, #0B998C 0%, #057264 100%); color: white; padding: 16px 20px; border-radius: 8px; font-size: 18px; font-weight: 700; margin-top: 12px; display: flex; justify-content: space-between; align-items: baseline; } |
| .result .label { font-size: 13px; font-weight: 500; opacity: 0.85; } |
| .result .value { font-size: 28px; } |
| .result .note { font-size: 12px; opacity: 0.85; margin-top: 4px; font-weight: 400; } |
| .benchmark { font-size: 12px; color: #6B6B6B; margin-top: 8px; } |
| .benchmark strong { color: #37352F; } |
| nav.intra { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 24px; } |
| nav.intra a { padding: 6px 12px; background: white; border: 1px solid #e5e5e5; border-radius: 999px; text-decoration: none; color: #37352F; font-size: 13px; } |
| nav.intra a:hover { border-color: #0B998C; color: #0B998C; } |
| footer { text-align: center; padding: 32px 24px; color: #6B6B6B; font-size: 13px; border-top: 1px solid #e5e5e5; margin-top: 40px; } |
| footer a { color: #0B998C; text-decoration: none; } |
| </style> |
| </head> |
| <body> |
| <header> |
| <h1>HSE Incident Rate Calculator</h1> |
| <p>TRIR · LTIFR · DART · AFR · Severity Rate · TRIFR — calculated to OSHA 29 CFR 1904, ILO and HSE methods. Benchmarks from <a href="https://huggingface.co/datasets/SmartQHSE/hse-benchmarks-2026">SmartQHSE/hse-benchmarks-2026</a>. CC BY 4.0.</p> |
| </header> |
| <main> |
| <nav class="intra"> |
| <a href="#trir">TRIR</a> |
| <a href="#ltifr">LTIFR</a> |
| <a href="#dart">DART</a> |
| <a href="#afr">AFR</a> |
| <a href="#severity">Severity Rate</a> |
| <a href="#trifr">TRIFR</a> |
| </nav> |
|
|
| <section class="calc" id="trir"> |
| <h2>TRIR — OSHA Total Recordable Incident Rate</h2> |
| <div class="formula">TRIR = (recordable cases × 200,000) ÷ total hours worked</div> |
| <div class="source">Source: <a href="https://www.osha.gov/recordkeeping" target="_blank" rel="noopener">OSHA 29 CFR 1904</a> · 200,000 ≈ 100 employees × 40 hr/wk × 50 wk/yr · <a href="https://www.smartqhse.com/trir-calculator" target="_blank" rel="noopener">Full guide</a></div> |
| <div class="input-row"> |
| <label>Recordable cases<input type="number" id="trir-cases" min="0" step="1" value="3" /></label> |
| <label>Total hours worked<input type="number" id="trir-hours" min="0" step="1000" value="500000" /></label> |
| </div> |
| <div class="result"><span class="label">TRIR</span><span class="value" id="trir-out">—</span></div> |
| <div class="benchmark" id="trir-bench">US private-industry avg: <strong>2.7</strong> · Construction: <strong>2.5</strong> · Mining: <strong>1.7</strong> · Manufacturing: <strong>2.8</strong> (BLS SOII 2024)</div> |
| </section> |
|
|
| <section class="calc" id="ltifr"> |
| <h2>LTIFR — Lost Time Injury Frequency Rate</h2> |
| <div class="formula">LTIFR = (LTI cases × 1,000,000) ÷ total hours worked</div> |
| <div class="source">Source: <a href="https://www.ilo.org/global/statistics-and-databases/lang--en/index.htm" target="_blank" rel="noopener">ILO Resolution III</a> · International standard, per million hours · <a href="https://www.smartqhse.com/safety-blog/ltir-vs-trir-vs-ltifr-differences" target="_blank" rel="noopener">LTIFR vs TRIR</a></div> |
| <div class="input-row"> |
| <label>Lost time injuries<input type="number" id="ltifr-lti" min="0" step="1" value="2" /></label> |
| <label>Total hours worked<input type="number" id="ltifr-hours" min="0" step="1000" value="500000" /></label> |
| </div> |
| <div class="result"><span class="label">LTIFR</span><span class="value" id="ltifr-out">—</span></div> |
| <div class="benchmark">UK HSE all industries: <strong>~1.0</strong> · GCC oil & gas (IOGP): <strong>0.4–0.8</strong> · Construction (UAE OSHAD-SF): <strong>~3.0</strong></div> |
| </section> |
|
|
| <section class="calc" id="dart"> |
| <h2>DART — Days Away, Restricted, or Transferred Rate</h2> |
| <div class="formula">DART = (DART cases × 200,000) ÷ total hours worked</div> |
| <div class="source">Source: <a href="https://www.osha.gov/recordkeeping" target="_blank" rel="noopener">OSHA 29 CFR 1904.7</a> · subset of TRIR; cases with days away or job transfer/restriction</div> |
| <div class="input-row"> |
| <label>DART cases<input type="number" id="dart-cases" min="0" step="1" value="2" /></label> |
| <label>Total hours worked<input type="number" id="dart-hours" min="0" step="1000" value="500000" /></label> |
| </div> |
| <div class="result"><span class="label">DART</span><span class="value" id="dart-out">—</span></div> |
| <div class="benchmark">US private-industry avg: <strong>1.7</strong> (BLS SOII 2024)</div> |
| </section> |
|
|
| <section class="calc" id="afr"> |
| <h2>AFR — Accident Frequency Rate</h2> |
| <div class="formula">AFR = (accidents × 1,000,000) ÷ total hours worked</div> |
| <div class="source">Generic frequency rate per million hours; UK HSE / GCC default. Use this when "accident" is broader than OSHA recordable.</div> |
| <div class="input-row"> |
| <label>Accidents<input type="number" id="afr-acc" min="0" step="1" value="5" /></label> |
| <label>Total hours worked<input type="number" id="afr-hours" min="0" step="1000" value="500000" /></label> |
| </div> |
| <div class="result"><span class="label">AFR</span><span class="value" id="afr-out">—</span></div> |
| </section> |
|
|
| <section class="calc" id="severity"> |
| <h2>Severity Rate — Days Lost per Million Hours</h2> |
| <div class="formula">Severity = (days lost × 1,000,000) ÷ total hours worked</div> |
| <div class="source">Source: <a href="https://www.ilo.org/global/statistics-and-databases/lang--en/index.htm" target="_blank" rel="noopener">ILO Resolution III</a> · how serious the injuries are, on average</div> |
| <div class="input-row"> |
| <label>Total days lost<input type="number" id="sev-days" min="0" step="1" value="40" /></label> |
| <label>Total hours worked<input type="number" id="sev-hours" min="0" step="1000" value="500000" /></label> |
| </div> |
| <div class="result"><span class="label">Severity Rate</span><span class="value" id="sev-out">—</span></div> |
| </section> |
|
|
| <section class="calc" id="trifr"> |
| <h2>TRIFR — Total Recordable Injury Frequency Rate</h2> |
| <div class="formula">TRIFR = (recordable injuries × 1,000,000) ÷ total hours worked</div> |
| <div class="source">Australia / NZ / IOGP standard. Same numerator as TRIR but per-million-hours basis. <a href="https://www.smartqhse.com/safety-blog/ltir-vs-trir-vs-ltifr-differences" target="_blank" rel="noopener">Comparison</a></div> |
| <div class="input-row"> |
| <label>Recordable injuries<input type="number" id="trifr-cases" min="0" step="1" value="3" /></label> |
| <label>Total hours worked<input type="number" id="trifr-hours" min="0" step="1000" value="500000" /></label> |
| </div> |
| <div class="result"><span class="label">TRIFR</span><span class="value" id="trifr-out">—</span></div> |
| <div class="benchmark">IOGP global oil & gas: <strong>~0.83</strong> · Australian construction: <strong>~5.2</strong> (Safe Work Australia)</div> |
| </section> |
|
|
| </main> |
| <footer> |
| <p>Open data: <a href="https://huggingface.co/datasets/SmartQHSE/hse-benchmarks-2026">Benchmarks</a> · <a href="https://huggingface.co/datasets/SmartQHSE/osha-rates-2026">OSHA Rates</a> · <a href="https://huggingface.co/datasets/SmartQHSE/hse-glossary">Glossary</a> · <a href="https://huggingface.co/collections/SmartQHSE/smartqhse-open-hse-data-69f7597712196f8018c2dab5">Full collection</a><br /> |
| Built by <a href="https://www.smartqhse.com">SmartQHSE</a> — the AI-native HSE/QHSE platform. CC BY 4.0.</p> |
| </footer> |
| <script> |
| function calc(rateInputs, multiplier, outId, benchId) { |
| const update = () => { |
| const num = Number(document.getElementById(rateInputs.num).value) || 0; |
| const hrs = Number(document.getElementById(rateInputs.hrs).value) || 0; |
| const out = document.getElementById(outId); |
| if (hrs <= 0) { out.textContent = "—"; return; } |
| const v = (num * multiplier) / hrs; |
| out.textContent = v.toFixed(2); |
| }; |
| document.getElementById(rateInputs.num).addEventListener("input", update); |
| document.getElementById(rateInputs.hrs).addEventListener("input", update); |
| update(); |
| } |
| calc({num:"trir-cases", hrs:"trir-hours"}, 200000, "trir-out"); |
| calc({num:"ltifr-lti", hrs:"ltifr-hours"}, 1000000, "ltifr-out"); |
| calc({num:"dart-cases", hrs:"dart-hours"}, 200000, "dart-out"); |
| calc({num:"afr-acc", hrs:"afr-hours"}, 1000000, "afr-out"); |
| calc({num:"sev-days", hrs:"sev-hours"}, 1000000, "sev-out"); |
| calc({num:"trifr-cases", hrs:"trifr-hours"}, 1000000, "trifr-out"); |
| </script> |
| </body> |
| </html> |
|
|