Methodology
Every ranked list on this site follows the formula below, applied to data recorded from makers and Canadian sellers. No product has been through a hands-on trial by us unless its page says so in a section of its own.
What a product needs to be ranked
- An offer from a first-party Canadian seller: the maker’s own store, or a retailer selling directly. Marketplace sellers never count. Two paid data services add offers: a Google Shopping listing whose seller is the maker (shown as “listed on Google Shopping” with its check date), and amazon.ca when Amazon itself is the seller (from the Keepa price service). When only marketplace sellers offer a product on amazon.ca, its marketplace price is shown under “Not ranked: no first-party Canadian seller found”.
- The offer is in stock and priced in Canadian dollars. A stock status that is not stated counts as not in stock. Prices in other currencies are never converted, and a listed price of zero is not a price.
- The offer comes from our newest check of the product page that did not fail, and that check is no more than 30 days older than the build date. Offers 15 to 30 days old carry the note “Last checked N days ago; price and stock may have changed”. Older offers are not published.
The same product listed on more than one first-party storefront (the maker’s own store and its group’s store, or the same store twice) is one product: same category, same brand and same name once punctuation, letter case and a store-brand prefix are set aside. Every storefront’s offer is shown with its own seller, the lowest fresh in-stock price is the one ranked, the origin statement is the strongest one any storefront carries (product-level over family-level over brand-level), and the ratings of every storefront are listed.
Products that miss a rule are listed under one of five headings, each with the reason: Not ranked: offer check lapsed; Not ranked: out of stock when checked; Not ranked: stock not stated when checked; Not ranked: no first-party Canadian seller found, with the seller class we did find; Not ranked: no CAD price when checked.
The formula
Total = 0.4 × expert + 0.3 × reviews + 0.3 × availability and price. Each component runs from 0 to 100 and is rounded to two decimal places first; the total is computed from those printed figures and rounded to two decimal places, half up, so the equation on every page adds up exactly. Equal totals share a rank, and the next rank skips (1, 2, 2, 4).
Expert (40%)
Each published expert test with a numeric score counts as the score over its scale, times 100. An outlet's score for the product is the mean of its tests, and an owner's is the mean of its outlets', so several outlets of one company count once; owners are matched on their name without LLC, Inc, Ltd or anything in brackets. The component starts from a prior of 75 counted as one more owner: (sum of owner scores + 75) ÷ (number of owners + 1), so one outlet at 94.4 gives 84.7 and three owners at 94.4 give 89.6. An outlet that publishes a verdict with no number is cited but not scored. With no scored test the component is 0 and the page says “No published expert test on file”.
Reviews (30%)
We take one source: the accepted source with the most reviews that is not a store-wide total. Its rating is put on a 5-point scale and adjusted toward 4.5 as if the product started with 50 reviews at that level: ((rating × count) + 4.5 × 50) ÷ (count + 50), shown as a share of 5, times 100. With no such source the component is 0.
Availability and price (30%)
70 for a fresh, in-stock, first-party offer in Canadian dollars, plus 30 × (1 − p), where p is the share of the other ranked products in the category whose lowest fresh price is strictly lower. The cheapest product gets 100 and the dearest gets 70.
Ratings
- Every rating is listed by source, with its date and a link. Ratings from different sources are never combined, on the page or in the formula.
- Ratings on the maker’s own site are accepted. When the same rating and review count appear on two or more products of the same maker in the same retrieval, we treat the figure as a store-wide total: it stays on the page with the note “store-wide total, not used for ranking” and is not used. One product listed on two storefronts counts once, and makers that share a product (a brand and its group’s store) count as one maker for this rule.
- A Google Shopping rating is accepted only when the stored search result shows the listing title containing the brand and every word of the product name. When the stored result is not readable on our machine, or the title does not match, the rating stays unexamined and is not shown.
- A rating on a Google Shopping listing that the paid data service matched to the maker’s own listing is accepted as a Google Shopping rating. It is listed on its own, apart from any rating on the maker’s site, and the two are never combined.
- We do not use Trustpilot.
Made in Canada
- We quote the maker’s own sentence in quotation marks, with the source page, the date we retrieved it and the SHA-256 of the page as retrieved.
- The badge “Made in Canada, in the maker’s words” needs a statement about this product or its product family. A statement about the brand alone never produces the badge. The Canadian-made lists hold only products with the badge.
- The quoted sentence itself must say the product is made here: a making word (made, manufactured, handmade, handcrafted, crafted, built, sewn, assembled, produced, or the French fabriqué, confectionné, cousu, assemblé) tied to Canada, a province or a Canadian city. Canadian materials (“Canadian wool”) or a quality claim (“authentic Canadian quality”) do not count, and neither does a sentence about a different product (a duvet quoted on a pillow). Such a statement is still printed, under “Where it is made”, with the line “The maker's statement does not say this product is made in Canada.” “Assembled in Canada” earns the badge as a qualified claim.
- When the statement carries no qualifier we add: “The maker's statement carries no qualifier. The Competition Bureau's guideline treats 'Made in Canada' as a claim that at least 51 per cent of direct production costs are Canadian and the last substantial transformation happened in Canada; we publish the maker's words and have not verified them.”
- When the maker also says something about the brand that points the other way, we print it beside the claim.
How text from makers is shown
Names and quotations are printed as the source has them, with these display changes: HTML codes left in names upstream are decoded (“&” instead of “&”), long dashes are shown as spaced hyphens, and colour, centre, favourite and program take their Canadian spelling. When a quotation holds a word our copy rules exclude, it is cut before that sentence and the cut is marked […]; a product name holding such a word (a listing title ending in a sales claim) is cut before it.
Images
None yet. Each product shows “No image: licence pending”.
Numbers in this build (November 1, 2026)
- Mattresses: 106 ranked; not ranked: 13 out of stock when checked, 0 stock not stated when checked, 1 no CAD price when checked, 14 no first-party Canadian seller found, 469 offer check lapsed.
- Pillows: 73 ranked; not ranked: 6 out of stock when checked, 1 stock not stated when checked, 0 no CAD price when checked, 25 no first-party Canadian seller found, 302 offer check lapsed.
- Mattress toppers: 20 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 4 no first-party Canadian seller found, 134 offer check lapsed.
- Bed frames: 35 ranked; not ranked: 1 out of stock when checked, 0 stock not stated when checked, 1 no CAD price when checked, 3 no first-party Canadian seller found, 181 offer check lapsed.
- Duvet covers: 36 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 4 no CAD price when checked, 7 no first-party Canadian seller found, 476 offer check lapsed.
- Sofas: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 13 no first-party Canadian seller found, 178 offer check lapsed.
- Sofa beds: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 2 no first-party Canadian seller found, 120 offer check lapsed.
- Office chairs: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 0 no first-party Canadian seller found, 170 offer check lapsed.
- Robot vacuums: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 2 no first-party Canadian seller found, 174 offer check lapsed.
- Portable air conditioners: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 1 no first-party Canadian seller found, 100 offer check lapsed.
- Air purifiers: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 0 no first-party Canadian seller found, 114 offer check lapsed.
- Washing machines: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 2 no first-party Canadian seller found, 31 offer check lapsed.
- E-bikes: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 0 no first-party Canadian seller found, 44 offer check lapsed.
- Carry-on suitcases: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 14 no first-party Canadian seller found, 89 offer check lapsed.
- Dash cams: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 0 no first-party Canadian seller found, 90 offer check lapsed.
- Winter boots: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 0 no first-party Canadian seller found, 137 offer check lapsed.
- Winter jackets: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 0 no first-party Canadian seller found, 144 offer check lapsed.
- Snow blowers: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 1 no first-party Canadian seller found, 141 offer check lapsed.
- Dog foods: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 0 no first-party Canadian seller found, 152 offer check lapsed.
- Infant car seats: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 0 no first-party Canadian seller found, 159 offer check lapsed.
- Bags: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 0 no first-party Canadian seller found, 581 offer check lapsed.
- Sheets: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 0 no first-party Canadian seller found, 270 offer check lapsed.
- Shoes: 0 ranked; not ranked: 0 out of stock when checked, 0 stock not stated when checked, 0 no CAD price when checked, 0 no first-party Canadian seller found, 922 offer check lapsed.
- Offers used here were observed between and .
- Review ledger: 1018 ratings by source; 195 accepted, 296 unexamined, 527 rejected; 105 flagged as store-wide totals.