Townleap

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

Rent & living costsNumbeo

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.

Homicide rateUNODC

Intentional homicides per 100,000 people. The one violent-crime stat every country reports consistently. Not cheerful reading, but you should know.

Crime perceptionNumbeo Crime Index

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."

Freedom scoreFreedom House

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.

GDP per capitaWorld Bank

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.

InflationWorld Bank / IMF

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.

Geopolitical safetyIEP Global Peace Index

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.

Residency pathOfficial government immigration portals

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.

DimensionMaxFormulaSource
Affordability25((3000 − rent) / 2600) × 25Numbeo
Violent crime15((15 − homicide_rate) / 15) × 15UNODC
Perceived safety10((100 − crime_index) / 100) × 10Numbeo
Internet15(speed_mbps / 200) × 15Ookla
Democracy15(democracy_index / 10) × 15EIU
Office English10((epi_score − 350) / 300) × 10EF EPI
Street English10office_english − friction penaltyEF EPI + primary language
Climate1010 − |summer_high − 25| × 0.5Climate-Data.org
Stability10((10 − inflation%) / 10) × 10World Bank
Geopolitical safety10((3.5 − gpi) / 2.5) × 10IEP GPI
Total120normalized → 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.