How to Read a COA — 2025 Edition
Updated: August 2025
Not sure what you’re looking at? This is your 90-second decoder for any cannabis COA (Certificate of Analysis)—what to check first, what “PASS” really means, and quick red flags.
TL;DR: Match the batch ID, confirm safety panels = PASS, glance at potency & terpenes, and you’re done.
Step 1 — Match the product to the COA (10 seconds)
Scan the QR on your box with your phone camera.
On the COA page, confirm:
Brand & product name match what’s in your hand
Batch/lot ID is the same as your package
Sample type = finished product (not raw bulk oil)
Dates (sample collected / results reported) look recent for your purchase
If the batch/lot ID doesn’t match, treat it like a mismatch—find the right COA first.
Step 2 — Safety panels = PASS (30 seconds)
You’ll typically see these panels. A clean COA shows PASS across all of them:
Pesticides (Category I & II)
Heavy Metals (lead, arsenic, cadmium, mercury)
Residual Solvents (for extracts/oils)
Microbials (like salmonella, E. coli)
Mycotoxins (aflatoxins/ochratoxin A)
Skim the “Result” column—PASS is what matters. (Individual numbers are measured in very small units like ppm or ppb; the lab compares them to state limits so you don’t have to.)
Step 3 — Potency math (20 seconds)
Potency is usually shown as % by weight and/or mg/g.
Vape carts (most common):
mg in the cart ≈ (mg/g) × net grams of oil
Example: 880 mg/g in a 1.0 g cart ≈ ~880 mg total cannabinoids
THC vs. Total Cannabinoids:
Total THC = THC + THCa (labs convert acids to an equivalent).
Total Cannabinoids includes THC, CBD, minor cannabinoids, etc.
Expect minor variation across lots—match the batch to know what you actually have.
High numbers aren’t everything. Flavor and feel are majorly shaped by terpenes.
Step 4 — Terpenes = flavor & feel
Look for a Terpene Profile table (often % or mg/g).
Common standouts: limonene, myrcene, caryophyllene, pinene, linalool.
A strong, balanced terp profile often correlates with better aroma, flavor, and experience.
Quick Red Flags (30 seconds)
No batch/lot ID or it doesn’t match your package.
Old COA being reused for a new product or different size.
Only potency shown (no safety panels).
Suspicious hosting (random file shares) instead of a lab or brand portal.
“ND” everywhere (non-detect) but no “PASS/FAIL” summary—verify with the brand.
What if the QR doesn’t work?
Double-check you have good signal and try again.
Visit the brand’s COA/Transparency page and search your batch/lot ID.
Ask the retailer for help locating the COA for your exact batch.
Glossary (plain-English)
COA: Lab report proving a batch passed safety testing and listing potency/terpenes.
Batch/Lot ID: The unique code for your specific production run—must match.
PASS: The analyte is below the legal safety limit (good).
mg/g: Milligrams per gram. For a 1.0 g cart, mg/g ≈ total mg in the cart.
ppm / ppb: Parts per million/billion—tiny measurement units used in safety testing.
FAQ
Do COAs expire?
Not formally, but they’re batch-specific. If your package’s batch ID isn’t on the COA, it’s not the right report.
Why doesn’t my label % match the COA exactly?
Small differences can happen across labs or between raw oil and finished goods. Always match by batch ID—that’s the authoritative number.
Where are the terpenes on some reports?
Some labs split them into a separate “Terpene Profile” page/tab. If you don’t see it, search within the COA or look for a second report.
Can I trust a screenshot?
Always prefer the live lab link from the QR or the brand’s COA portal. Screenshots can be outdated.