Illinois
Methodology
This dashboard is built entirely from Illinois's own cannabis lab-testing records, obtained through a public-records (FOIA) request. Nothing here is modeled, estimated, or inferred from a private classification. Where a judgment call was required, it is documented below — including the things we are still verifying.
The source
The underlying data is Illinois's package-level cannabis compliance testing record. Each row is a single analyte result (potency, microbial, pesticide, and so on) for a single tested package. A typical package produces about five analyte rows. Operators (cultivators) and testing labs are named in cleartext exactly as they appear in the state record — there is no anonymization.
What we counted — and what we didn't
The headline universe is 100,647 completed package tests, Sep 2021 – Feb 2026. Reaching that number required several deliberate exclusions:
- Completed tests only. Records still marked in-progress (not yet finished) are excluded from every figure. An unfinished test is not a result. This mirrors how we treat informational and non-final records in our other state dashboards — we count completed compliance events, not works in progress.
- Failure-only export files excluded. Several source files are filtered exports containing only failures, in a different format with no lab names. Mixing them into the universe would fabricate a failure rate several times higher than the real one. They are excluded from all pass/fail math.
- Deduplicated to the package level. The source arrives in ten overlapping files that share records at their date boundaries. We deduplicate on each package's unique lab-sample ID, keeping the first-seen record, so no package is counted twice.
- Three encodings, one schema break. The files arrive in three different text encodings, and in mid-2025 the state changed how it names each test (for example, "THCA" became "THCA (%) Raw Plant Material"). Both naming conventions are mapped to a single canonical set so no data is silently dropped after the change.
- Flower is the dataset. Roughly 99% of packages are flower (Buds and ShakeTrim). Extracts and edibles appear in trivially small numbers and are not reported as standalone findings.
The two-tier measure
The market-control section tags every operator to its license class — cultivation center or craft grower — against the state's own IDOA cultivation-center and craft-grower registries. Illinois licensed 21 cultivation centers under its medical program; those are the incumbent tier. Craft growers are a separate, later, canopy-capped license class. We then track what share of each quarter's tested flower comes from each tier.
We report this time-controlled: per full quarter, not as a cumulative share of all volume since the data began. A cumulative figure would flatter the incumbents simply because they have been testing longer; a per-quarter share asks the fairer question — of the flower tested this quarter, how much came from each tier. Partial quarters at the edges of the data (the opening quarter of 2021 and the partial first quarter of 2026) are excluded so every point on the chart is a complete three months.
A note on the concentration index (HHI)
We report the Herfindahl-Hirschman Index (831) but deliberately do not lead with it. HHI measures how volume splits among the firms that exist, and it is calibrated for industries with free entry. Illinois caps cultivation licenses and caps craft canopy, so the index understates the real barrier: it cannot see who is prevented from competing. We present it on the page as a foil, not a finding.
Known caveats and open questions
We would rather flag these ourselves than have you find them:
- The craft funnel counts the flower record only. Of 86 licensed craft growers, 31 carry IDOA's "Operational Approved" registry flag (Yes/No field, registry pull June 2, 2026) and 20 appear in the flower testing record. That is a finding about the testing record — not a claim that the other 66 don't exist. Some grow for extraction or manufacturing channels that never surface as flower packages, some are still building, and some have not yet reached market. The craft tier is recent: the canopy expansion's applications only opened in March 2024, and a grow takes years to stand up, so this tier is still arriving.
- "Operational Approved" is a registry field, not a defined term. The 31 figure comes from the IDOA Craft Grower Registry's "Operational Approved" (Yes/No) field, exported June 2, 2026. IDOA has not published a formal public definition of this field; we read it as the agency's affirmative confirmation of operational status, distinct from a licensee-reported operational date. The field also tracks production imperfectly: the 21 incumbent cultivation centers are dated "operational" in the registry as of 2022, yet they were already testing flower in 2021. We flag the flag rather than treat it as a hard state determination.
- The record caught its own seam at the mid-2025 transition. When Illinois moved from BioTrack to Metrc in mid-2025, the results from LK Pure — the lab that tested the incumbent tier almost exclusively, roughly 60% of all testing — fall out of the captured data. We cannot distinguish a reporting-pipeline change from a real volume change from inside the dataset, so we do not. The craft tier barely used LK Pure (it tested at ACT and Steep Hill, both of which carried through the transition intact), which leaves the craft signal clean: we show it at full strength through the end of 2025. Any all-lab share or incumbent/total-volume series does depend on the volume that fell out, so we hold those at the first quarter of 2025 — the last reliable quarter — and mark the seam directly on the affected charts. We never present a raw all-lab craft share after that point: the denominator collapsed on the incumbent side, which would inflate craft's share. This is a property of the public-records export at a system transition, not a claim about any lab's operations.
- One operator records zero failures. The state's single largest cultivator by volume shows a 100% pass rate across more than 14,000 packages — implausible for that volume when comparable operators fail at 3–5%. This is far more likely a completeness gap in the source FOIA export than a real result, and it is flagged directly in the operator explorer. We do not use per-operator pass rates in any headline finding; we are verifying this with the data source before treating its pass rate as final.
- Small labs are not lab-wide signals. Grace Analytical (26 packages) and Deibel Bioscience (a single-client relationship that ended in 2022) carry too little volume for their pass rates to mean anything about the lab itself. They are flagged throughout.
- Lab pass-rate comparisons need context. Labs do not test the same population of operators, and part of any potency difference between labs reflects which products each lab receives, not the lab's behavior.
- Remediation rate is provisional. The share of packages flagged as containing remediated product is strikingly low. We are confirming how Illinois records remediation before drawing any conclusion from it.
- Some breakdowns the New Jersey dashboard carries are not possible here. Illinois's record is richer in one way — every operator is named and tagged to its license class — but thinner in others. There is no failing-analyte field: a package is recorded as overall pass or fail with the panel that failed (microbial, pesticide, heavy metal), but not the specific contaminant, so a contaminant-level failure breakdown is not reported. The record carries no stability-testing time series (T0/T1/T2 retests) and no strain or product-name fields, so the stability, strain-explorer, and product-category views built for New Jersey are deliberately omitted rather than faked. What Illinois can support — the by-name, by-license-class two-tier lens across volume, potency, pass rate, and failures — it supports better than any other state's data.
Check our work
The cleaned, deduplicated, package-level dataset behind every chart is available as a CSV download — one row per package, with operator, lab, date, category, pass/fail, remediation flag, and THCA. If you find an error, we want to know.