A country scores as capable if either lens sees it:
cap = max(physical share, trade score). Colour marks the class that matters most — can the trade data even see it? Teal = a refiner visible in trade (it exports refined). Amber = a domestic-absorbing refiner only physical data catches. Grey = a raw exporter (ships ore, no refining). The sub-type on each bar says how: integrated (mines + refines), import-fed (refines imported ore), or mine-to-metal.
How it’s measured & caveats
From the BACI bilateral matrix, per country × material: net_down = (refined_exp − refined_imp)/(refined_exp + refined_imp) (>0 = net exporter of refined), feedstock_import = ore_imp/(ore_imp+ore_exp) (~1 = sources ore by import), and trade_score = refined_world_share × max(net_down,0) — a robust, re-export-penalised, export-control-proof marker. Physical refined share is BGS/USGS from the atlas data. cap = max(physical, trade_score).
Caveats: the physical share is a single recent vintage, so the year slider moves the trade signal, not the physical one — migration is clearest where trade carries the story (e.g. the magnet stage). The NdFeB magnet stage is trade-only (no physical magnet series), so premium magnet makers that net-import magnets (Japan, Germany) are undercounted — the same trade-blindness, now without a physical rescue. REE feedstock codes (2805.30 / 2846.90) are aggregated. Refining concentration is cross-checked against two authoritative sources: the IEA Critical Minerals Dataset (CC BY 4.0) — refining capacity by country for the energy-transition minerals — and the EU Critical Raw Materials 2023 study (European Commission), which gives the top global supplier and bottleneck stage (extraction vs processing) for ~31 materials, including the specialty metals where trade and USGS/BGS fall silent (tungsten, gallium, germanium, PGMs). A third, forward layer — the USGS World Minerals Outlook to 2029 (SIR 2025-5021, CC0) — adds 2024 capacity concentration and world capacity growth for 8 commodities (lithium capacity is set to roughly double; magnesium contracts). A final diversification pipeline overlay names representative publicly announced projects building capacity outside the dominant producer (Lynas, MP Materials, Iluka, Rio Tinto Rincón, Umicore…), with the IEA’s aggregate finding that refining/downstream capacity still lags mining to 2035 — curated, not exhaustive (the IEA’s project-level list is not public). The capability score cap = max(physical share, trade score) mixes two units, so read it as a detector and a class (integrated / import-fed / …), not a cardinal 0–1 measure — the bar length is indicative, the type is the finding. The IEA / EU-CRM / USGS cross-check lines are different vintages and stages, so they can disagree with the bar and with each other (that’s expected, not an error). “Most product-space-adjacent non-refiners”: raw density is ~95–98% just a country’s overall diversity (big diversified economies are close to everything — a control-test finding), so the list is ranked on density with breadth (diversity + ECI) regressed out — proximity to this stage beyond what size alone buys. Even so, read them as plausible, not destined. Built by build_feedstock.py. See also Break the chokepoint (the decision layer: what kind of moat, who could break it, who is building it), The refining wedge (does concentration rise from ore to metal? + IEA capacity), the product-space map and complexity.
Capability over time — all 32 materials
Trade-based capability score with the year slider. The first ~11 (a clean ore→refined HS pair) carry the full feedstock fingerprint — import-fed vs mine-to-metal; the rest are typed from physical mine-vs-refine. Below, the same 32 get a plain mine-vs-refine read, then the chokepoint ranking and the supply-shock test.
Every critical material — who mines it vs who refines it
The cards above score capability from trade, with the full ore→refined feedstock fingerprint where a clean HS pair exists (~11 materials) and a physical-derived type otherwise. This second grid gives the same all 32 materials the plainest read of all — each country’s mine share (grey) above its refine share (teal), the mine→refine handoff itself: a country that refines far more than it mines is import-fed; one that does both is integrated; one that digs but doesn’t refine is a raw exporter.
All critical materials, by refining chokepoint
The full ore→refined trade fingerprint (import-fed vs mine-to-metal) needs a clean HS pair, which ~11 of 32 materials have; the rest are typed from physical shares. Refining concentration needs only refined-output shares, so it spans all 29 that report them. HHI over BGS/USGS refined shares (magnets: HS 850511 exports). Colour = chokepoint band.
The fallback test — if the top refiner stopped supplying
A supply-shock counterfactual, not a forecast. The leader’s share of world refined output is the magnitude at risk; the fallback is who else exports the refined form onto the world market — the countries the rest of the world could actually buy from (a hoarded-at-home refiner is not a fallback; an exporter is). A material is a single point of failure only if the leader holds ≥50% of output and no other exporter reaches a third of its export volume. Export fallbacks can include re-export hubs, so read them as availability, not independent capacity.
Reading it: the miner and the refiner are usually different countries, and the refiner sits downstream where the value is. The amber bars are the story the export data alone would miss — China refining copper, alumina and titanium sponge for its own industry, invisible to any trade metric. At the magnet stage, capability collapses onto a single country: watch China climb from 0.39 (2018) to 0.58 (2024) as the rest of the world stays near zero.
Robustness & HS-code provenance
HS-code provenance — which codes are clean
Independent robustness: two separate reconciliations of UN Comtrade — BACI (CEPII) and the Harvard Growth Lab Atlas (Bustos-Yildirim method, queried live via its public GraphQL API) — plus raw reporter-declared Comtrade. Agreement between the two independent reconciliations is the belt-and-braces check; a ⚠ marks a leader that differs from BACI. OECD BIMTS is balanced trade at aggregate (not HS6) level, so it can’t cross-check individual refined codes. Built by build_robustness.py + build_harvard.py; provenance by build_provenance.py.
Method lineage: Hidalgo & Hausmann product space / economic complexity; feedstock-signature capability mapping addresses the export-RCA-≠-capability critique (constrain with physical output; read the direction of transformation). Cf. the product-space paper on China’s critical minerals (Frontiers Env. Sci. 2023) and the Fitness-Criticality algorithm (Valverde-Carbonell, Pietrobelli & Menéndez, Resources Policy 2024).