Methodology
Cities
The directory comes from GeoNames: every populated place with at least 50,000 people, plus national capitals. Neighbourhoods and city sections are left out, and the same place listed twice within 10 km is merged. Each city has a stable ID (its GeoNames number) in its web address, so links keep working if a name changes. Places with the same name are shown with their region and country.
Geography labels
Every value keeps the geography it was published for. City and City survey values were measured for the city. Metro area values cover the surrounding metropolitan or census area. Province average and Country values are wider figures shown for context: a province-wide food price is not a price measured in that city, and we label it so. Where several apply, the most local one is shown.
Rents
Canadian rents are CMHC's October Rental Market Survey averages for purpose-built rental apartments. They include existing tenancies, so they're usually lower than what new tenants are asked to pay. Asking rents, paid rents and average rents are separate items and never mixed.
Groceries
Each grocery item has a fixed size (milk per litre, bread per 500 g and so on) so cities compare like for like. When a source publishes a different package size, we scale the price and say so in the item's details. The budget uses a published monthly food benchmark where one exists; otherwise it estimates from at least 60% of our basket items and marks the line as an estimate.
Budgets
Recurring living costs, tuition and one-time costs are kept separate. Weekly amounts become monthly by × 52 ÷ 12. Yearly tuition is spread over the 8, 10 or 12 months you choose. A line with no data is listed under "not included" and the total is marked partial; it's never counted as zero. Values you type in replace ours and are marked as yours.
Cars
A lease's effective monthly cost is the monthly payment plus the upfront non-refundable charges spread over the term, with taxes, at the stated mileage allowance. Buying and leasing are shown separately so a cash price and a running cost are never counted twice.
Comparisons
Percent difference = (comparison − baseline) ÷ baseline × 100. It isn't shown when either value is missing, when the baseline is zero, or when the two values are in currencies that can't be converted. Zero is a real value; a missing value says "No data yet".
Currencies
Amounts are stored in the currency they were published in. Converted amounts use the day's reference rate (ExchangeRate-API Open Access), and the rate date is shown. Purchasing-power-parity (PPP) figures are economic context and are never converted with market rates.
Economy
GDP per capita, unemployment and inflation are World Bank country figures for the latest year available, labelled with the year and basis (nominal or PPP). We don't divide national GDP among cities or present country figures as city measurements.
Climate
Monthly averages are calculated from the ERA5 daily history published on Purr Weather, for the recent years shown, at the model grid point nearest the city. That's shorter than a 30-year climate normal, and we say so.
Freshness
Each category has a freshness limit (150 days for fuel and grocery prices, about 18 months for rents). Older values stay visible with an "Older" label. We never adjust an old price to today's level.
Publishing
Imports are checked before publication: unknown items, missing periods, negative values, missing currencies and unapproved sources are set aside for review. A new data version replaces the previous one all at once; if an import fails, the last good version stays online.