APIDangerous goods classification for parcel shippers
Send product text.
Get a hazmat determination you can defend.
A listing, an ingredient list, an SDS extract — anything that describes the product. One call returns the UN number, hazard class, packing group and proper shipping name, plus what 4 carriers accept by ground and by air, every field cited to the provision it came from.
And when it cannot decide, it says so. An input that does not support a determination returns needs_review and isHazmat: null, naming the one datum it needs. Never a plausible guess.
- Entries
- 64
- of the HMT
- Classes
- 9
- 15 divisions
- Carriers
- 4
- ground + air
- Ruleset
- 2026.08.1
- hash-pinned
- 49 CFRrevised 1 Oct 2025
- IATA DGR67th edition
- IMDG CodeAmendment 42-24
description: “Isopropyl alcohol 99%, 500 ml spray bottle”
Isopropanol
UN1219
- determination
- classified
- isHazmat
- true
- packingGroup
- II
cited49 CFR 172.101 Hazardous Materials Table
Classify something now
No account, no card. One classification a day on the free tier — the same engine that ran the examples above.
Three answers, never four
classified, not_regulated, or needs_review. On needs_review the response names the exact datum it needs, a flash point, a concentration, a watt-hour rating, and isHazmat comes back null. Unknown is not the same as false. A wrong UN number on a shipping paper is worse than no UN number.
Carrier rules, not just regulations
A substance being legally shippable is not the same as a carrier taking it. Every determination carries UPS, FedEx, USPS and Amazon FBA positions for ground and air separately, with the governing publication cited.
Pinned to a ruleset hash
Every result carries the version and content hash of the rules that produced it. Issue a signed certificate against a stored determination, and put SKUs under continuous re-classification so an edition turnover does not quietly invalidate your catalogue.
Built for the whole lifecycle, not just the first call
A determination made today is only as good as it stays. Certificates give you a signed record of what was decided and under which ruleset; monitoring tells you the moment that ruleset changes underneath a SKU you already shipped.
- sku
- PB-20K
- unNumber
- UN3480
- determination
- classified
- ruleset
- 2026.08.1
- hash
- f31c40d328285540…
Verifiable independently against the public key at /api/certificate-key.
- sku
- CLN-IPA-500
- field
- packingGroup
- was
- II
- now
- III
- reason
- DGR 2026 edition turnover
Delivered to your webhook, field by field — not a re-sent copy of the whole record.
Hazard classes
64 entries encoded across the nine classes and their divisions.
- Class 1 — Explosives
- Division 2.1 — Flammable gas
- Division 2.2 — Non-flammable, non-toxic gas
- Division 2.3 — Toxic gas
- Class 3 — Flammable liquids
- Division 4.1 — Flammable solids
- Division 4.2 — Spontaneously combustible
- Division 4.3 — Dangerous when wet
- Division 5.1 — Oxidizers
- Division 5.2 — Organic peroxides
- Division 6.1 — Toxic substances
- Division 6.2 — Infectious substances
- Class 7 — Radioactive material
- Class 8 — Corrosives
- Class 9 — Miscellaneous
Carrier rules
What each carrier accepts, by class, ground and air.
- UPSUPS Guide for Shipping Ground and Air Hazardous Materials
- FedExFedEx Express and FedEx Ground hazardous materials shipping requirements
- USPSUSPS Publication 52, Hazardous, Restricted, and Perishable Mail
- Amazon FBAAmazon Dangerous Goods Identification Guide and FBA dangerous goods programme
f31c40d32828554081ce3e567617cd8c- 49 CFR as revised through the 1 October 2025 annual revision
- IATA DGR 67th edition (effective 1 January 2026)
- IMDG Code Amendment 42-24 (mandatory from 1 January 2026)
Common questions
- Is my product hazmat?
- It depends on whether the product meets the criteria of one of the nine hazard classes in 49 CFR 173. Send Classify7 a description, an ingredient list with CAS numbers, or the transport section of the safety data sheet, and it returns one of three answers: classified (with the UN number, class, packing group and proper shipping name), not_regulated (with the reason it falls outside the regulations), or needs_review (with the exact datum it needs — usually a flash point or a concentration). It will not return a guess.
- What is my UN number?
- A UN number identifies a substance or article for transport. It is assigned from the 49 CFR 172.101 Hazardous Materials Table on the basis of what the material is and how it behaves — not on what it is sold as. Nail polish and paint thinner share UN1263 because both are paint-related material; a power bank is UN3480 while the identical cell inside a laptop is UN3481. Classify7 returns the UN number with the evidence that selected it.
- Can I ship this with USPS, UPS, FedEx or Amazon FBA?
- Being legally shippable is not the same as a carrier accepting it, and it is nearly always the carrier rule that stops a parcel. Classify7 returns each carrier's published position for ground and air separately: accepted, contract-required, restricted, prohibited, or review-required. USPS prohibits standalone lithium batteries outright, domestically and internationally; Amazon FBA requires a dangerous goods review per ASIN before the first inbound shipment.
- Which lithium battery packing instruction applies?
- It depends on the chemistry, how the battery is packed, and its size. Lithium ion alone is PI965; packed with equipment PI966; contained in equipment PI967. Lithium metal alone is PI968; packed with equipment PI969; contained in equipment PI970. Ion is sized in watt-hours (20 Wh per cell, 100 Wh per battery), metal in grams of lithium content (1 g per cell, 2 g per battery). PI965 Section II and PI968 Section II were withdrawn on 1 January 2022, so there is no longer any excepted route for a standalone lithium battery by air.
- How current is the ruleset, and can I prove which one was used?
- Every determination carries the ruleset version and a hash of the rule data that produced it. On a paid plan you can issue an Ed25519-signed certificate against a stored determination, in PDF or JSON, recording the SKU, the verdict and that hash. The public key is published at /api/certificate-key so a recipient can verify it without contacting us. Put a SKU under monitoring and a call to the recheck endpoint re-classifies it, and every other stale SKU, the moment the hash changes; nothing runs on its own, so point your own scheduler at it for a hands-off check.
- What happens when a product is not in the table?
- It returns needs_review, and says so. The entry table is a curated subset of the 49 CFR 172.101 table covering commercial parcel, e-commerce and FBA shipping — not all ~3,000 entries. An absent match means 'not encoded', never 'safe to ship as general cargo'. Treating silence as a clearance is how mis-declared parcels happen.