Methodology note
How Strainline measures cannabis prices
Strainline is a cannabis price index built from the public menus of licensed dispensaries. Every figure on the site is an observed price, dated, and ranked cheapest first with zero paid placement. This page explains how those numbers are produced.
Median, not average
The headline figure for any market, category, or strain is the median price, the middle value once every observed price is sorted. Cannabis prices have a long upper tail (a few boutique products cost many times the typical price), which pulls a simple average upward and misrepresents what most shoppers actually pay. The median is the price a typical buyer sees.
Alongside the median we publish the typical range (25th to 75th percentile), the band that the middle half of prices fall within, plus the lowest and highest observed prices. The band is what keeps the median honest: it shows how tightly or widely prices are spread, so a single number is never mistaken for the only price.
Normalized prices, familiar units
To compare prices fairly across products of different sizes, we normalize to a common basis: per gram for flower, pre-rolls, and concentrates, and per mg of THC for edibles. Ranking and trend math always run on the normalized basis, so a bulk ounce and a single gram are compared on equal terms.
Where it helps a shopper, we also show the price in the unit people actually buy, such as the median price of an eighth (3.5g) of flower. We never compare an eighth in one place to an ounce in another on raw package price.
How we measure price movement
Trends compare rolling 30-day and 90-day windows of observed prices, grouped by day. We describe only what already happened (for example, prices down 4% over the past 30 days) and never predict future prices.
Sample size and what it means
A statistic is only as trustworthy as the sample behind it, and a median built from a handful of listings is not the same object as one built from hundreds.
Price-index tables carry the counts behind each figure: the number of listings and the number of distinct dispensaries the median and the percentile band were computed from. Read the count alongside the number: we publish both rather than deciding for you which samples are large enough.
Freshness
Menus are scraped on a rolling schedule per dispensary, so how recently any given price was checked varies from one shop to the next. That is why we do not quote a single refresh interval. Instead every price-index page carries an “updated” date derived from the data itself, never the moment the page happened to render. Read that date as the claim: it is the age of what you are looking at.
Known biases
These push our figures in known directions. We would rather name them than let a reader discover them.
- A price index can only reach shops that publish prices. A dispensary with no online menu cannot appear here at all, however real it is.
- Menus are not inventory. A product listed in stock can be sold out by the time you arrive. We report what the menu said and when it said it.
What we do not claim
- That we cover every dispensary. We do not, and we publish no coverage percentage at all: the ones we could compute are not yet measured in a way we are willing to stand behind. Region and dispensary counts are counts, not a share of any market.
- That the prices here are the prices you will be charged. Menu prices exclude taxes and fees, which vary by jurisdiction, and a store can change a price at any time.
- That an absent shop is a shop that does not exist. It is at least as likely to be a shop we have not matched or not yet reached.
- Any accuracy figure without a labeled reference set behind it. Where we state accuracy, we state the sample and the interval with it.
- Any prediction. We describe price movements that have already been observed and never forecast.
- That our own pipeline metrics measure the market. They measure us.
Independence
Rankings are computed only from price per unit, package weight, and cultivation method. No dispensary or brand can pay to rank higher or to change a displayed price. Any sponsored placement, if ever shown, is labeled and kept entirely separate from the cheapest-first results.