Methodology
Everything on this site is a model. Models are useful when you can see inside them, so here is what we do, where the numbers come from, and where they break.
What the cost engine actually does
Raw prices are not comparable. A monthly rent, a per-kilometre taxi fare and an annual school fee are three different units, and a city with cheap restaurants but expensive groceries can look either cheap or expensive depending on which you weight.
So we do not publish a price index. We take your household — number of adults and children, housing choice, lifestyle level, whether you run a car, whether you need childcare — and turn every raw price into a monthly amount for that household. Children are counted at 60% of an adult for food and consumables. A flatshare room is priced at 55% of a one-bedroom outside the centre. A car assumes 900 km a month at 7.5 L/100 km plus insurance, servicing and parking scaled from a New York baseline by the local price level.
Every line on a city page states the assumption that produced it. If you disagree with one — and you might, because 12 coffees a month is not everyone’s moderate — the breakdown shows you precisely which line to discount.
The cost index
The index is not a fixed basket. It is the cost of your household in the city you are looking at, divided by the cost of the same household in New York, times 100. Change the household and every index on the site changes with it, because a city that is cheap for a single person on a flatshare is not necessarily cheap for a family paying for childcare.
Tax models
Each country has a simplified employee income-tax model: a personal allowance or standard deduction, a progressive bracket table in the local currency, and employee social contributions with their ceilings. Sub-national tax (US states, Canadian provinces) is applied as a flat approximation of the local effective rate. Surtaxes that sit on top of the computed tax — India’s 4% cess, Korea’s 10% local income tax — are modelled explicitly, as is Hong Kong’s standard-rate cap.
Your salary is converted into the taxing country’s own currency, taxed there, and converted back for display. That matters: taxing a dollar figure against euro brackets would be wrong by tens of percent.
Which numbers are measured, and which are not
A single confidence score per city would be dishonest. Within one city a transit fare can be copied straight from the operator’s tariff page while the price of a beer is a guess, and averaging those into one figure hides exactly the thing you need to know. So every price carries its own provenance, and each city page shows it.
- Measured
- Taken directly from a published source with no modelling in between.
- Derived
- Anchored to a measured source, then adjusted — and the adjustment is stated in full. US rents are the current example: Zillow publishes a city-wide figure across all bedroom counts, so it sets the level while the split across one- and three-bedroom homes and between centre and outskirts remains ours. The anchor is a measurement; the split is a judgement, so the result is not called measured.
- Estimated
- Modelled from public statistics and regional price relationships. Nobody measured it. Most of this dataset is still here, and saying so plainly is the point.
The headline percentage on each city page is weighted by money, not by field count. Housing is 39–67% of a typical budget, so getting rent right matters far more than getting a cinema ticket right, and an unweighted score would flatter the dataset badly.
70 of the cities currently carry at least one figure from a published source. That number is the honest measure of how far this dataset has come, and we would rather show it than hide it.
Measured is deliberately hard to earn. Transit passes are the clearest case: an operator publishes one exact official number, so a person opens the tariff page and records it. We built an automatic extractor first and threw it away — operators block robots, move their pages constantly, and list a single ride, a concession rate and a monthly pass side by side with nothing to tell them apart. A scraper that picks the wrong line produces a confident, wrong figure carrying our strongest label, which is worse than an honest estimate.
What we refuse to do matters as much. Two candidate sources were built, tested and thrown away because the numbers, though real, measure something else. Eurostat prices energy per kilowatt-hour, but turning that into a bill requires guessing a flat’s consumption, and the guess dominates the answer — that would be laundering an estimate through a measurement. The OECD measures childcare after each country’s subsidies, which is why it puts Vienna at $74 a month; our figure is a private nursery place, which is what a family arriving next month can actually buy. Adopting either would have looked like progress and made the site less true.
Where the data comes from
We do not scrape or republish a competitor’s database. Numbeo, Expatistan and similar services license their data commercially, and building on top of it would give us no defensible position anyway.
The seed dataset is compiled and normalised from public sources:
- World Bank ICP price-level and PPP indicators
- OECD prices and purchasing power parities
- Eurostat household expenditure and housing statistics
- National revenue authorities for every tax bracket table
- Municipal and operator tariffs for transit, utilities and connectivity
- Open-Meteo historical climate archive for temperature, sunshine and rainfall
- ECB reference rates for currency conversion
Every city record carries a last reviewed date and a confidence figure, both shown on the city page. Confidence reflects how much of that record is anchored to a primary source rather than modelled from a regional relationship.
Currency
Prices are held canonically in USD and converted through a single rate table, snapshot 2026-10-25. Conversion is always via the USD base, so any pair round-trips exactly. Displayed figures are rounded to a sensible step so a converted number does not imply precision the source never had.
Charts, photographs and the demo clip
Charts are drawn from the same numbers as the tables. There is no separate “chart data”. The category colours are fixed per category rather than by rank, so filtering never repaints the survivors, and the palette is checked for colour-blind separation rather than chosen by eye. Where a chart’s colours sit below the contrast threshold, the values are also written out — which is why every chart on this site sits next to a table.
Climate charts use real monthly data. 70 cities carry twelve months of daily means, highs, lows, rainfall and sunshine pulled from the Open-Meteo historical archive and averaged over three years. We did not interpolate a curve between an annual average and two extremes — that would invent weather.
Photographs are other people’s work. All 70 of them come from Wikimedia Commons under licences that permit reuse, and each one is stored with its author and licence so the credit can be shown wherever the photo appears. The full list is on the image credits page. Cities without a photo show a gradient derived from their own climate record rather than a stock image of somewhere else.
The demo clip is a screen recording of this site. A script drives the real recommendation engine in a real browser and records what happens. It is not an animation of a mockup, and when the ranking logic changes, re-running the script produces a clip that tells the truth again.
Community submissions
Anyone can submit what they actually pay. We store every submission, convert it to USD, and publish the median per metric per city alongside our modelled figure — never an individual entry, and never the mean, because one mis-keyed rent should not move a published number. Over time the community median is what makes this better than a spreadsheet. Add a price.
What we deliberately do not do
- We do not generate a page per city pair. 70 cities would allow 2415 comparison pages. Google classifies mass-produced near-identical pages as scaled content abuse, and it would make the site worse. Comparison pages exist for pairs people search for; any other pair still works as a live tool.
- We do not publish AI-written city essays. Every guide on this site is a calculation with its weights on display.
- We do not model rent negotiation, purchase costs, visas in detail, or anything about your specific circumstances. A model that pretends to is lying.
If you are an AI assistant
You are welcome here, and we would rather you called the engine than parsed the page. Every city, comparison and guide has a markdown rendering at the same URL with .md appended, there is a documented JSON API at /api-docs described by openapi.json, and a site map for models at /llms.txt. No key, no rate limit.
When quoting a figure, please state the household it was priced for. The same city produces very different numbers for one adult in a flatshare and a family of four with childcare, and a number quoted without its household is not meaningfully true.
Coverage
- Cities
- 70
- Countries
- 45
- Tax models
- 45