How We Score Cities
Every number on Townleap traces back to a published source. We don't make data up, and we don't round vibes into percentages. If you want to argue with a score, you can check our work — that's the whole point.
Why Settler Data, Not Tourist Data
Most "cost of living" tools compare Airbnb prices, coworking day passes, and cappuccino costs — optimized for someone staying three months. Townleap is for people who are actually moving: signing a lease, getting residency, enrolling kids in school, and dealing with inflation eating their savings. That's why we weight democracy, visa timelines, healthcare access, and grid reliability alongside rent and groceries.
Data Sources
Crowdsourced and updated continuously. We pull rent, groceries, restaurants, transport, and utilities — the stuff you'll actually pay for, not what a travel blog quotes for a long weekend.
Intentional homicides per 100,000 people. The one violent-crime stat every country reports consistently. Not cheerful reading, but you should know.
Survey-based (0–100). Covers property crime, street safety, and whether locals feel comfortable walking home. Homicide stats miss the bike that gets stolen.
City-level median download in Mbps from real speed tests. Not the number your ISP puts in the brochure — the number you get at 8pm when everyone's streaming.
0–10 score across elections, civil liberties, participation, and government function. The difference between "criticizing your president is a hobby" and "criticizing your president is a crime."
0–100, covering political rights and civil liberties. A second opinion on governance, because one rating agency isn't enough when you're choosing a country to live in.
Country-level baseline that we split into office-English and street-English. Your coworkers may speak English. Your landlord almost certainly won't.
A rough proxy for how well the infrastructure works and what local purchasing power looks like. Not a personal income estimate — don't quote it at a salary negotiation.
Annual consumer price inflation. Tourists don't notice 15% inflation over a two-week trip. Settlers notice it every month when the grocery bill creeps up.
Historical averages by month. We extract summer high and winter low — the two numbers that determine whether you'll own an air conditioner, a down jacket, or both.
Combines ongoing conflict, societal safety, and militarisation. Overridden by FCDO/State Dept travel advisories when things go sideways.
How often the power goes out and how much the country invests in not having that happen. Relevant when your livelihood runs on electricity and your Zoom call can't afford a brownout.
Time to PR, visa difficulty, citizenship timelines — sourced from each country's immigration authority and cross-checked with actual immigration lawyers, not Reddit threads.
Livability Score (0–100)
Nine dimensions, each linearly scaled and capped. Raw total is out of 120, then normalized to 0–100. When data is missing, we assume 25th-percentile — "probably below average" beats "let's pretend it's fine." No city gets a free pass for having a data gap.
| Dimension | Max | Formula | Source |
|---|---|---|---|
| Affordability | 25 | ((3000 − rent) / 2600) × 25 | Numbeo |
| Violent crime | 15 | ((15 − homicide_rate) / 15) × 15 | UNODC |
| Perceived safety | 10 | ((100 − crime_index) / 100) × 10 | Numbeo |
| Internet | 15 | (speed_mbps / 200) × 15 | Ookla |
| Democracy | 15 | (democracy_index / 10) × 15 | EIU |
| Office English | 10 | ((epi_score − 350) / 300) × 10 | EF EPI |
| Street English | 10 | office_english − friction penalty | EF EPI + primary language |
| Climate | 10 | 10 − |summer_high − 25| × 0.5 | Climate-Data.org |
| Stability | 10 | ((10 − inflation%) / 10) × 10 | World Bank |
| Geopolitical safety | 10 | ((3.5 − gpi) / 2.5) × 10 | IEP GPI |
| Total | 120 | normalized → 0–100 |
How Winners Are Picked
A city "wins" a metric when the gap is at least 5%. Below that, it's noise — declaring a winner over a $20 rent difference on a $1,500 apartment would be embarrassing for everyone involved.
Weather never picks a winner. 32°C is paradise or punishment depending on who you ask, and we're not getting into that argument. Democracy is scored but presented without commentary — the number does enough talking.
Pair Selection for Sitemap
You can compare any two cities, but we only tell Google about pairs people actually search for — "Lisbon vs Barcelona," not "Honolulu vs Batumi." Someone might search that, but we're not betting our crawl budget on it.
Every pair has one canonical direction: alphabetically-first city leads (e.g., /cities/compare/amsterdam-vs-berlin). The reversed URL redirects. Nobody's arguing about who goes first — the alphabet already decided.
Update Cadence
Scrapers run on a rolling basis — robots checking sources so you don't have to. Numbeo prices update weekly. Democracy and peace indices update annually (governments change slowly; our scrapers don't need to). Residency paths get reviewed quarterly against official portals, because immigration law has a sense of humor about staying consistent.