How to use the calculator
- Enter the ingredients. Type each ingredient and its concentration from SDS section 3: one figure, a range such as 10-30, or <1.
- Enter each ingredient's data, route by route. For oral, dermal and inhalation, enter the LD50 or LC50 from section 11 with its unit, or the ingredient's category, or mark it not acutely toxic or unknown.
- Add what the SDS says about the whole product. Enter the unknown share the SDS states, or a test result on the whole mixture, which replaces the formula (A.1.3.4).
- Read the class and the label. See the category for each route at both ends of the ranges, the pictogram, the signal word, the H statements and any unknown-share statement, then copy or download the PDF.
How OSHA classifies a mixture for acute toxicity
Appendix A to 29 CFR 1910.1200 works in tiers (A.1.3.1). A mixture tested as a whole is classified on its own result. Without a test, similar tested mixtures may carry their class over by bridging. Only when neither applies does the classifier add up the ingredients with the additivity formula, and that is what this calculator runs.
“Where the mixture itself has been tested to determine its acute toxicity, it is classified according to the same criteria as those used for substances, presented in Table A.1.1. If test data for the mixture are not available, the procedures presented below must be followed.” App. A.1.3.4
Bridging (A.1.3.5) covers dilution, batching, concentration, interpolation within one category, substantially similar mixtures and aerosols. It needs data on similar tested mixtures, which a reader of a single SDS rarely has, so the calculator does not attempt it.
The additivity formula, step by step
100 / ATEmix = C1 / ATE1 + C2 / ATE2 + ... + Cn / ATEn
- Pick each ingredient's ATE. Note (b) to Table A.1.1: the LD50 or LC50 where one exists. Otherwise the conversion value of Table A.1.2 for a range test result, or for the ingredient's category.
- Keep the ingredients that count. Those in a category, and oral or dermal LD50s above 2,000 and up to 5,000 mg/kg (A.1.3.6.1(a)). Leave out water and other ingredients presumed not acutely toxic, and limit tests at the Category 4 threshold that showed no toxicity (A.1.3.6.1(b) and (c)).
- Add up Ci / ATEi with each concentration in percent by weight, by volume for gases (A.1.3.3(a)).
- Correct for unknown ingredients when they make up more than 10% (A.1.3.6.2.4).
- Compare ATEmix with Table A.1.1 for the route, and take the label elements of Appendix C.
“Ignore ingredients if the data available are from a limit dose test (at the upper threshold for Category 4 for the appropriate route of exposure as provided in Table A.1.1) and do not show acute toxicity.” App. A.1.3.6.1(c)
“The “relevant ingredients” of a mixture are those which are present in concentrations ≥1% (weight/weight for solids, liquids, dusts, mists and vapors and volume/volume for gases). If there is reason to suspect that an ingredient present at a concentration <1% will affect classification of the mixture for acute toxicity, that ingredient shall also be considered relevant.” App. A.1.3.3(a)
The cases that decide a class, and how the calculator applies each rule
Most of the work in an acute toxicity classification sits in the details of what the SDS prints: a value written “> X”, an ingredient at 0.5%, an LC50 in ppm. Each case below gives the rule of Appendix A and how the calculator applies it. Where the rule leaves a choice open, the calculator runs a protective reading and a lenient one and shows both ends.
A value written "> X" between the Category 4 line and 5,000 mg/kg
The rule. A.1.3.6.1(c) leaves out a limit test at the Category 4 threshold, such as "> 2,000 mg/kg". It does not leave out "> 3,000 mg/kg": the true LD50 may be 3,500, inside the 2,000 to 5,000 band that A.1.3.6.1(a) counts.
How the calculator applies it. Leaves out "> 2,000" and "> 5,000" in both readings. Counts "> 3,000" at 3,000 in the protective reading and leaves it out in the lenient one, then shows both ends.
Ingredients below 1%
The rule. A.1.3.3(a) makes the ingredients at 1% or more the relevant ones, and those below 1% relevant when there is reason to suspect they affect the class, particularly in Categories 1 and 2.
How the calculator applies it. Counts every ingredient in the protective reading. The lenient reading leaves out an ingredient below 1% unless it is in Category 1 or 2. A Category 1 or 2 ingredient below 1% counts in both.
Every ingredient unknown
The rule. A.1.3.6.2.3 classifies on the known ingredients. With none known, there is nothing to classify on.
How the calculator applies it. Says the formula cannot classify the mixture by that route, and points to a test (A.1.3.4) or bridging (A.1.3.5). It never prints "not classified" for a mixture it knows nothing about.
A value written "< X"
The rule. Note (b) to Table A.1.1 uses an LD50 or LC50, or a conversion value for a range test or a category. "< 300 mg/kg" is neither a point value nor a closed range: the true value could sit in Category 1.
How the calculator applies it. Stops the route and asks for the ingredient's category or range test result. It never turns "< X" into a number.
An LC50 in ppm with no molar mass
The rule. Table A.1.1 classifies vapors in mg/l and gases in ppmV. Moving between the two takes the molar mass. Note (d) lets a vapor that is nearly all gaseous phase be classified in ppmV instead.
How the calculator applies it. Converts with mg/l = ppm × molar mass / 24,450 once the molar mass is entered, and refuses to convert without it. The gas scale is one click away for note (d).
An ingredient known only by H300, H310 or H330
The rule. Those statements cover Categories 1 and 2 together, whose Table A.1.2 conversion values differ tenfold.
How the calculator applies it. Uses Category 1 in the protective reading and Category 2 in the lenient one.
Every ingredient in the same category
The rule. A.1.3.3(c): if the converted point estimates for all ingredients of a mixture are within the same category, the mixture should be classified in that category. Table A.1.2 puts the Category 2 conversion value on the Category 1 line (5 mg/kg oral, 50 mg/kg dermal), so the formula alone would push a mixture made only of Category 2 ingredients into Category 1.
How the calculator applies it. Applies A.1.3.3(c) when the ingredients make up the whole mixture and each one has a fixed category, and says so in the result.
A test that lasted 2 or 6 hours
The rule. Note (c) converts 1-hour inhalation data only. OSHA says nothing about other durations.
How the calculator applies it. Keeps the printed value and the value scaled to 4 hours, uses the lower one in the protective reading, and warns.
The part of the mixture no row covers
The rule. Section 3 lists the ingredients classified as health hazards (Table D.1). An ingredient with an LD50 of 3,000 mg/kg still counts in the formula but need not be listed.
How the calculator applies it. Asks you to say what the rest is: not acutely toxic, or of unknown toxicity. As unknown, it counts toward the unknown share like any ingredient without data.
Figures that add up past 100%
The rule. An SDS prints rounded figures, so a few of them may add up slightly past 100%. Beyond the rounding, they cannot all be true.
How the calculator applies it. Uses figures within the rounding as printed, with a warning, and stops the calculation beyond it.
A result that lands on a category line
The rule. The limits of Table A.1.1 are inclusive: 2,000 mg/kg is Category 4.
How the calculator applies it. Holds every line inclusive, even when float arithmetic lands a hair past it, and prints extra digits when a result sits within 1% of a line.
Unknown ingredients: the statement and the correction
“In this situation the mixture is classified based on the known ingredients only.” App. A.1.3.6.2.3
“Where an ingredient with unknown acute toxicity is used in a mixture at a concentration ≥1%, and the mixture is not classified based on testing of the mixture as a whole, a statement that X% of the mixture consists of ingredient(s) of unknown acute toxicity (oral/dermal/inhalation) is required on the label and safety data sheet.” App. C.3.3
Up to 10% unknown in total, the plain formula runs on the known ingredients. Past 10%, A.1.3.6.2.4 replaces the 100 on the left with 100 minus the unknown share, so the known part carries the whole mixture. A mixture that is 60% unknown and 40% of a Category 4 ingredient is therefore classified as if it were that ingredient alone. The calculator also takes the share the SDS itself prints, and uses the larger of that figure and the ingredients you mark Unknown.
Inhalation: gas, vapor, dust or mist
Each form has its own scale. Dust is solid particles in air, mist is liquid droplets, vapor is the gaseous form released from a liquid or solid (note (d) to Table A.1.1). A water-based spray or foam cleaner is a mist, a powder is a dust, a solvent that evaporates is a vapor.
“Inhalation cut-off values in the table are based on 4 hour testing exposures. Conversion of existing inhalation toxicity data which has been generated according to 1 hour exposure is achieved by dividing by a factor of 2 for gases and vapors and 4 for dusts and mists” App. A, note (c) to Table A.1.1
- mg/m³ to mg/l: divide by 1,000.
- Vapor ppm to mg/l: ppm × molar mass / 24,450 (25 °C, 1 atm).
- Gas mg/l to ppmV: mg/l × 24,450 / molar mass.
Cut-offs and conversion values
Upper limit of each category (Table A.1.1, inclusive) and the point estimate the formula uses for an ingredient known only by its category (Table A.1.2). Checked against the eCFR on 2026-10-14.
| Route | Unit | Cat. 1 | Cat. 2 | Cat. 3 | Cat. 4 |
|---|---|---|---|---|---|
| Oral | mg/kg | ≤ 5 (uses 0.5) | ≤ 50 (uses 5) | ≤ 300 (uses 100) | ≤ 2,000 (uses 500) |
| Dermal | mg/kg | ≤ 50 (uses 5) | ≤ 200 (uses 50) | ≤ 1,000 (uses 300) | ≤ 2,000 (uses 1,100) |
| Inhalation, gases | ppmV | ≤ 100 (uses 10) | ≤ 500 (uses 100) | ≤ 2,500 (uses 700) | ≤ 20,000 (uses 4,500) |
| Inhalation, vapors | mg/l | ≤ 0.5 (uses 0.05) | ≤ 2 (uses 0.5) | ≤ 10 (uses 3) | ≤ 20 (uses 11) |
| Inhalation, dusts and mists | mg/l | ≤ 0.05 (uses 0.005) | ≤ 0.5 (uses 0.05) | ≤ 1 (uses 0.5) | ≤ 5 (uses 1.5) |
From the class to the label
Each acute toxicity category comes with a fixed set of label elements in Appendix C: the pictogram, the signal word and the hazard statement. Categories 1 to 3 take the skull and crossbones (GHS06), Category 4 the exclamation mark (GHS07).
| Category | Pictogram | Signal word | Oral | Dermal | Inhalation |
|---|---|---|---|---|---|
| 1 | Skull and crossbones | Danger | H300 Fatal if swallowed | H310 Fatal in contact with skin | H330 Fatal if inhaled |
| 2 | Skull and crossbones | Danger | H300 Fatal if swallowed | H310 Fatal in contact with skin | H330 Fatal if inhaled |
| 3 | Skull and crossbones | Danger | H301 Toxic if swallowed | H311 Toxic in contact with skin | H331 Toxic if inhaled |
| 4 | Exclamation mark | Warning | H302 Harmful if swallowed | H312 Harmful in contact with skin | H332 Harmful if inhaled |
“The pictogram and signal word used shall reflect the most severe hazard category; and all relevant hazard statements shall be used.” App. A.1.3.2
“If the skull and crossbones pictogram is included, the exclamation mark pictogram shall not appear where it is used for acute toxicity” App. C.2.1.2
C.2.1.1 adds that “Danger” displaces “Warning”, C.2.3.4 that a pictogram appears only once, and C.2.2.1 that hazard statements may be combined to improve readability as long as every hazard is conveyed. Other hazard classes, such as skin corrosion or flammability, add their own elements: this calculator covers acute toxicity only.
Worked examples from real safety data sheets
A urethane paint accelerator, oral. Section 11 prints methyl ethyl ketone at 2,483 mg/kg (40%), dibutyltin dilaurate at 45 mg/kg (1.6%), and two esters above 5,000 mg/kg, which stay out. The plain formula gives 1,936 mg/kg. The sheet states that 41% of the mixture is of unknown acute toxicity, so the corrected formula applies and gives 1,142 mg/kg: Category 4, H302 Harmful if swallowed, as the sheet declares.
A paint thinner, inhalation, two ways. With the LC50s of section 11 first, as note (b) orders, xylenes at 29.08 mg/l sit above the 20 mg/l line and the result runs from 16.89 mg/l to 35.12 mg/l: Category 4 at the most toxic end, not classified at the other. With the H332 categories of section 3 instead, it runs from 11.01 to 12.94 mg/l, Category 4 at both ends. Load both examples above to see each ingredient's role.
When your result and the SDS disagree
We rechecked the acute toxicity class on 78 safety data sheets from two manufacturers with this same engine. Of 40 declared classes, 9 came out exactly and 27 sat inside a range the sheet leaves open, because the concentration ranges are wide or an ingredient has no value at all.
Under 1910.1200(d)(1), an employer may rely on the manufacturer's classification. A gap between your number and the sheet is a question for the supplier: which data did it use, and did it test the mixture? Keep the answer with the SDS, and label from the sheet's class. If the supplier does not answer, our guide on what to do when a supplier won't provide an SDS covers your duty and gives a request letter.
In HazComFast
Drop in the supplier's PDF, scanned or not, in English or Spanish. HazComFast reads every page, fills in the hazards, the H and P statements, first aid and PPE, and shows where each value came from. Anything the AI isn't sure about waits for a person to confirm it.
Frequently asked questions
What is ATEmix?
ATEmix is the acute toxicity estimate of a mixture. When the mixture has not been tested as a whole, 29 CFR 1910.1200 Appendix A.1.3.6.1 has the classifier calculate it from the ingredients: 100 / ATEmix equals the sum of Ci / ATEi, where Ci is each ingredient's concentration and ATEi its acute toxicity estimate. The result is compared with the cut-offs of Table A.1.1 for the route: oral, dermal, or inhalation as a gas, a vapor, or a dust or mist.
Which ingredients go into the formula?
A.1.3.6.1 counts ingredients that fall in an acute toxicity category, plus those with an oral or dermal LD50 above 2,000 and up to 5,000 mg/kg "(or the equivalent dose for inhalation)". It leaves out ingredients presumed not acutely toxic, such as water, and limit tests at the Category 4 threshold that showed no acute toxicity. A.1.3.3(a) adds that the relevant ingredients are those at 1% or more, and those below 1% when there is reason to suspect they affect the class.
Should I use the LD50 printed in section 11 or the category listed in section 3?
The LD50 or LC50, where one is available. Note (b) to Table A.1.1 sets the order: the LD50/LC50 first, otherwise the Table A.1.2 conversion value for a range test result, or for the ingredient's classification category. In our recheck of 78 safety data sheets, 26 ingredient lines listed an ingredient as harmful if inhaled in section 3 while section 11 of the same sheet printed an LC50 above the Category 4 limit.
What if an ingredient's acute toxicity is unknown?
If an ingredient of unknown acute toxicity is present at 1% or more, A.1.3.6.2.3 says the mixture is classified on its known ingredients only, and Appendix C.3.3 requires a statement that X% of the mixture consists of ingredient(s) of unknown acute toxicity on the label and the SDS. Up to 10% unknown in total, the plain formula is used. Above 10%, A.1.3.6.2.4 corrects it: (100 minus the unknown share) / ATEmix = the sum of Ci / ATEi.
What if every ingredient is unknown?
Then the formula has nothing to work with, and the mixture cannot be classified this way. It is not the same as "not classified". A test on the mixture (A.1.3.4) or bridging from similar tested mixtures (A.1.3.5) is the way forward. The calculator says so instead of printing a class.
How do I use an LC50 given in ppm, or in mg/m³?
Vapors, dusts and mists are classified in mg/l. A value in mg/m³ is divided by 1,000. A vapor LC50 in ppm needs the ingredient's molar mass: mg/l = ppm × molar mass / 24,450, at 25 °C and 1 atm. Without the molar mass the calculator refuses to convert. A vapor that is nearly all gaseous phase may instead be classified in ppmV on the gas scale, under note (d) to Table A.1.1.
How do I use a 1-hour inhalation LC50?
The inhalation cut-offs assume 4-hour tests. Note (c) to Table A.1.1 converts 1-hour data by dividing by 2 for gases and vapors and by 4 for dusts and mists. Enter 1 as the test duration and the calculator does it. OSHA gives no conversion for other durations, such as 2 or 6 hours, so the calculator keeps both the printed value and the value scaled to 4 hours and shows the range.
The SDS only gives concentration ranges. Can I still calculate?
Yes. Type the range as printed, such as 10-30 or <1. When the exact concentration is a trade secret, 1910.1200(i)(1)(iv) requires one of the prescribed ranges, such as 10% to 30% or 30% to 60%. The calculator works out both ends: the most toxic mix the ranges allow and the least toxic one. If both ends fall in the same category, the ranges do not change the answer.
How does the label combine several routes?
A.1.3.2 says the pictogram and signal word reflect the most severe category and all relevant hazard statements are used. Appendix C.2.1 adds that Danger displaces Warning and that the skull and crossbones displaces the exclamation mark used for acute toxicity, and C.2.3.4 that a pictogram appears only once. A mixture in oral Category 4 and inhalation Category 3 therefore carries Danger, the skull and crossbones, H302 and H331.
Does the SDS have to print the acute toxicity estimate?
Appendix D, Table D.1 lists for section 11 "Numerical measures of toxicity (such as acute toxicity estimates)", and for section 2 the unknown acute toxicity statement when an unknown ingredient is present at 1% or more and the mixture was not tested as a whole. An employer may rely on the manufacturer's classification under 1910.1200(d)(1). If your result differs from the sheet, ask the supplier which data it used: it may hold a test on the mixture or values it did not print.
Sources
- 29 CFR 1910.1200, eCFR: Appendix A (A.1.2 with Table A.1.1 and its notes, A.1.3.1 to A.1.3.6, Table A.1.2), Appendix C (C.2.1, C.2.2.1, C.2.3.4, C.3.3), paragraphs (d)(1) and (i)(1)(iv). Read 2026-10-14.
- OSHA, Appendix A to 1910.1200.
- OSHA, Appendix C to 1910.1200.
- OSHA, Appendix D to 1910.1200, Table D.1, sections 2(e), 3 and 11(d). Read 2026-10-14.
- Spanish hazard statements in the PDF: EU CLP Regulation, Annex III, official Spanish text.
Built by HazComFast. The calculation runs in your browser, and the numbers you type stay there.