Oregon
Methodology
This dashboard is built from Oregon's sample-level cannabis compliance testing record. Nothing here is modeled, estimated, or inferred from a private classification. Where a judgment call was required, it is documented below — including the limits of what this dataset can support.
The source
The underlying data is Oregon's sample-level cannabis compliance testing record. Each row is a tested sample, carrying its product type, testing lab, the operator that submitted it, period, pass/fail outcome, a remediation flag, and reported cannabinoid content. The headline universe is 446,299 completed samples, Jan 2019 – Jun 2025, across 2,138 operators and 28 labs.
Identities are de-identified in the source
Oregon's record arrived de-identified: operators and labs are carried as numeric identifiers, not names. We present them the same way — as Operator [ID] and Lab 1 through Lab 28. Labs are renumbered by total sample volume, so Lab 1 is the highest-volume lab in the record and the numbering descends from there. We did not attempt to re-identify any operator or lab, and we do not infer real-world names from volume, timing, or any other field. Where a state ships names in cleartext (as Illinois and Nevada do), we publish them; where the source de-identifies (as Oregon does here), we keep it de-identified.
Potency is converted from mg/g to percent
Oregon reports cannabinoid content in milligrams per gram (mg/g). Every potency figure on this page is converted to percent by dividing by ten (for example, 233 mg/g total THC is shown as 23.3%). This is a unit conversion, not a transformation of the underlying value. All potency figures reflect total THC as recorded in the source.
What "median flower THC by lab" includes — and excludes
The per-lab potency comparison uses flower samples only. A single per-lab median that mixed concentrates and extracts with flower would return values well above 50% at some labs — a description of each lab's product mix, not of flower potency. Restricting to flower makes the comparison like-for-like. The chart on the dashboard further restricts to labs with 1,000 or more flower samples, so each plotted median rests on a substantial base.
CBD-dominant samples are excluded from potency analysis. Flower with Total CBD greater than Total THC (about 0.9% of flower samples) is dropped from all flower potency figures, so a lab that happens to receive more CBD-forward flower does not see its per-lab median pulled down by product mix rather than by how it reports THC.
Labs below the 1,000-flower-sample threshold are held out of the per-lab potency chart as statistically unstable: a median computed on a few hundred samples or fewer is not a stable lab-wide signal. Those labs are flagged throughout rather than plotted alongside high-volume labs. (The full all-labs table elsewhere on the dashboard still lists every lab by total sample volume, with the smallest — Lab 27 and Lab 28 — flagged for thin volume.)
A unit anomaly on one lab's non-flower products
Lab 8 shows internally inconsistent potency values on its non-flower products — medians and means that are not reconcilable with the rest of the record under a single mg/g-to-percent rule. We read this as a unit-recording anomaly on that lab's non-flower entries. Lab 8's flower values are consistent with the market and are used; its non-flower products are excluded from any all-products potency view. We do not present an all-products per-lab potency median for this reason, and the flower-only comparison sidesteps the anomaly entirely.
Safety panels each carry their own denominator
Oregon does not screen every sample for every contaminant. A pesticide panel, a residual-solvent panel, a microbial panel, a heavy-metals panel, and a mycotoxin panel each run on a different subset of samples. We report each panel's fail rate as failures ÷ samples tested for that panel — a rate within that panel's own denominator. These rates are comparable to one another as rates, but the raw failure counts cannot be summed across panels, because the denominators differ. Each panel's denominator is shown directly in the Testing & Safety table.
What counts as a failure
A sample's overall pass/fail outcome is taken as recorded in the source. The overall pass rate (98.18%) reflects 8,101 samples recorded as failing. The per-panel rates above describe where, within the panels that ran, failures occurred. A sample flagged as containing remediated product is recorded separately (see below) and is not the same as a failure.
The data range — and the 2025 half-year
The record runs Jan 2019 – Jun 2025. Note the boundary precisely: 2025 covers January through June only. Every 2025 figure on this site — sample volume, pass rate, active-operator count, remediation rate — is a half-year number. It is labeled as such wherever it appears, the 2025 bars are visually muted on the charts, and 2025 is excluded from any like-for-like full-year comparison. A reader who treats the 2025 volume bar as a full year will misread a half-year of data as a collapse; it is half a year.
Known limitations and open questions
We would rather flag these ourselves than have you find them:
- 2025 is half a year. Stated above and repeated here because it is the single easiest figure to misread. All 2025 values are January–June.
- De-identified at the source. Operators and labs are numeric IDs, not names. Comparisons across operators and labs are valid; mapping any ID to a real company is not something this dataset supports, and we do not attempt it.
- Lab 8's non-flower potency is excluded. A unit anomaly on that lab's non-flower products means we report flower-only potency by lab. The all-products per-lab potency view is deliberately omitted rather than shown with a known bad series.
- The per-lab potency chart shows labs with 1,000+ flower samples. Every lab clearing that threshold is plotted — nothing is cut off at the high or low end of the range. Labs below it are held out as statistically unstable. Separately, the smallest labs by total volume (Lab 27, 49 samples; Lab 28, 3 samples) are flagged throughout and carry too little volume for any lab-wide conclusion.
- A few labs and operators record implausibly high pass rates. A 100% or near-100% pass rate across thousands of samples is implausible when comparable peers fail at measurable rates, and is more likely a completeness gap in the source export than a real result. Those entries carry a flag (†) and are held out of any lab- or operator-quality conclusion pending verification with the data source.
- Per-lab potency reflects which products and operators each lab receives. Labs do not test identical populations of flower. The spread in median flower THC across labs is shown as a measured fact; part of it reflects the mix of operators and product each lab serves, and the chart does not by itself assign a single cause to the spread.
- Safety panel rates are not summable. Each panel has its own denominator. They are rates within their own panels, not slices of one shared total.
- The remediation flag is scoped to the spine dataset. The ContainsRemediatedProduct field is present in the 2019–2025 sample-level record used here. The remediation figures describe that field as recorded; we are not inferring remediation from any other signal.
- The entry-cohort measure tags operators by first year seen. An operator's cohort is the calendar year it first appears in the testing record. The cohort's "share" is the share of a given year's tested samples coming from operators in that cohort — a read of the testing record, not a registry of every license ever issued.
- Breakdowns other state dashboards carry are not built here. The Oregon record does not support per-facility detail pages, a strain-level analysis, or a stability-retest (T0/T1/T2) time series, so those views — built for other states — are deliberately omitted rather than faked.
Check our work
The cleaned, sample-level dataset behind every chart is available as a CSV download — one row per sample, with operator ID, lab ID, period, product type, pass/fail, remediation flag, and THC. If you find an error, we want to know.