Logmend / Tools
OSHA 300A CSV checker
Paste the 300A file you are about to upload. Each row is tested against the checks OSHA publishes in its data dictionary and FAQ.
Check a 300A file
Runs in your browser. Nothing you type here is sent anywhere.
What is checked
| Check | Rule | OSHA source |
|---|---|---|
| Header row | The first row must hold the 28 column names of OSHA's template. The template names the second column ein. | Data dictionary, template file |
| Required columns | Name, EIN, street, city, state, ZIP, NAICS, size, year, employees, hours, the injuries flag and every total must be filled. | Data dictionary |
| Establishment name | Unique within the file, up to 100 characters. | Data dictionary |
ein | Nine digits, no dashes. | Data dictionary |
zip | A five or nine digit number. A four or eight digit value usually means a lost leading zero. | Data dictionary, ITA FAQ |
street_address | Should not be a PO Box. | Data dictionary |
naics_code | A number, 6 digits long. | Data dictionary, ITA FAQ |
size | 1, 21, 22 or 3. Code 2 was split into 21 and 22. | Data dictionary, ITA FAQ |
| Number fields | Whole numbers only. A decimal point or a comma rejects the file. | ITA FAQ |
annual_average_employees | Greater than 0. Should be under 25,000 and greater than the total number of cases. | Data dictionary |
total_hours_worked | Greater than 0. Hours divided by employees must be under 8760 and should be over 500. | Data dictionary |
| G to J against M1 to M6 | The two sums must be equal. Why | Data dictionary |
| H against K | Days-away cases need days away, and the reverse. K must be at least H. | Data dictionary |
| I against L | Transfer or restriction cases need days. Days in L need cases in H or I. | Data dictionary |
What this page cannot check
- Whether the establishment exists in your ITA account.
- Whether the NAICS code is a real 2012, 2017 or 2022 code. Only its length is tested.
- Checks the ITA runs but OSHA has not published.
OSHA runs a test copy of the ITA at ITA preview (test) environment. A file sent there does not count as filing, so it is the place for a last trial. For the 24-column case file, see the upload errors table.
Starting from the Form 300 log instead of a finished CSV? The converter builds both ITA files and repairs these errors for you.
Open the converterShort answers
Can I test an OSHA ITA CSV before submitting it?
Yes, two ways. OSHA runs a test environment at preview.osha.gov/injuryreporting/ita where an upload does not count as filing. This page tests a 300A file against the published rules inside your browser, without uploading it.
Does the 300A CSV need a header row?
Yes. The data dictionary says the first row must be a header row containing the column names, and each row after it holds one establishment.
Why was my 300A CSV rejected for a decimal?
OSHA's FAQ says the system rejects the file if any number field has a decimal. Annual average employees and total hours worked are the usual places: enter whole numbers.
Related
- ITA 300A CSV columns
- ITA CSV upload errors and their fixes
- The sum of G-J must equal the sum of M1-M6
- Leading zeros lost from ZIP codes and EINs
Sources
- ITA CSV Documentation: Establishment and Form 300A data dictionary
- OSHA Form 300A CSV template
- OSHA ITA Frequently Asked Questions
- ITA preview (test) environment
Read on 2026-11-10. OSHA can change these documents; the link is the authority. Logmend is an independent information tool. It is not affiliated with or endorsed by OSHA or the U.S. Department of Labor, and it is not tax, legal or professional advice.