The number on the invoice is never the duty you actually pay. I know because I built a lookup that shows the whole stack: HTS Radar takes an HTS code and an origin country and returns the real US import duty — the base rate, plus Section 301, plus Section 232, plus antidumping and countervailing duties, plus fees — layer by layer, each from its official source. The interesting part wasn't the lookup. It was how many separate systems have to agree before a single "duty rate" means anything.
Layer one: the base rate is the least interesting number
Every HTS code has a base rate in the US tariff schedule, and it is the number most tools stop at. It is also, very often, 0%. A product can sit at a 0% base rate and still cost you a quarter of its value at the border, because the base rate is only the first layer. The schedule itself is 29,000+ codes deep, and the hard part of a lookup isn't storing the table — it's matching what a human calls a product ("stainless steel water bottle") to the code the schedule actually means. Get the code wrong and every layer after it is wrong too, confidently.
Layer two: Section 301, the surcharge that rewrites the answer
Section 301 tariffs apply on top of the base rate for goods from China, and they run from 7.5% to 100% depending on the product. This is where most "duty calculators" quietly fall over: they quote the base rate, or they quote a single blended number with no breakdown, and the importer finds out the difference when the customs broker's bill arrives. The stacking has to be explicit — base, then 301, then everything else — because each layer comes from a different authority and changes on a different schedule.
function landedDuty(code, origin) { const layers = [baseRate(code, origin)]; if (origin === "CN") layers.push(section301(code)); layers.push(section232(code, origin)); layers.push(...antidumping(code, origin)); layers.push(...countervailing(code, origin)); return layers; // never a single blended number } A single blended number hides which layer moved when the total changes. Keep the layers separate and a duty change becomes a readable event: "Section 301 went from 25% to 50% on this code", not "your cost went up".
Layer three: AD/CVD, the cases that decide whole product lines
Antidumping and countervailing duty cases are the sharpest layer. A single case can add 100%+ to a product's cost, and there are 890 of them active. They are also scope-defined: a case covers specific products from specific countries, and whether your product falls inside the scope is a reading exercise, not a lookup. The same HTS code can be inside scope for one producer and outside it for another. My rule for the site: a code is only ever flagged as a possible match with the scope text next to it — never a definitive "you owe this rate". A confident wrong number at the border costs real money.
Layer four: the UFLPA list, where the question isn't the rate
The Uyghur Forced Labor Prevention Act adds a different kind of check: 192 entities on the official list, and if your supplier touches one of them, the shipment can be stopped regardless of the duty math. This isn't a rate layer at all — it's a yes/no gate that sits beside the money. A lookup that only answers "how much?" and never asks "can this shipment enter?" is answering the wrong question for a growing share of importers.
The rule that held across all four layers
Every figure comes from an official source — USITC for the schedule, USTR for Section 301, Commerce for AD/CVD cases, DHS for the UFLPA list, CBP for the rest — and where the official data doesn't answer the question, the site says so instead of guessing. The free tier watches one code × origin pair with an email alert when anything in its stack changes; the paid tier watches 25. The point of the watchlist isn't the lookup — it's that tariffs change while you're not looking, and the first time you hear about it shouldn't be the broker's invoice.
If you import anything, or you build tools that model other people's rules: how do you handle a number that is really four different numbers wearing one label? That's where these systems keep their secrets.
Data sources
- The lookup and duty stack: https://htsradar.com/
- The US tariff schedule (USITC): https://hts.usitc.gov/
- Section 301 actions (USTR): https://ustr.gov/issue-areas/enforcement/section-301-investigations

