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. Here's exactly what we use and how we compute the scores you see on comparison and city pages.
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 cost-of-living data, updated continuously. We pull city-level prices for rent, groceries, restaurants, transport, and utilities.
UN Office on Drugs and Crime — intentional homicides per 100,000 population. The one violent-crime stat that's consistently reported worldwide.
Survey-based index (0–100). Captures property crime, street safety, and how safe residents feel — things homicide stats miss.
City-level median download speed in Mbps. Measured from real user speed tests, not ISP marketing.
The Economist Intelligence Unit scores every country 0–10 across electoral process, civil liberties, political participation, government function, and political culture.
Freedom in the World score (0–100). Covers political rights and civil liberties — a second lens on governance beyond the EIU index.
Country-level proficiency from 2.2M test takers. Raw scores ~350–700, normalized to 0–100 for comparison.
Current USD. A rough proxy for infrastructure quality and local purchasing power — not a personal income estimate.
Annual consumer price inflation. High inflation eats savings; it matters more to settlers than to tourists.
Historical average temperatures by month. We extract summer high and winter low for the comparison tables.
Composite of ongoing conflict, societal safety, and militarisation. Capped by FCDO/State Dept travel advisories when active.
Energy resilience score based on grid interruption data and infrastructure investment. Matters when your livelihood depends on electricity.
Time to permanent residency, visa difficulty, and citizenship timeline sourced from each country's immigration authority. Cross-checked with immigration law firms.
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 for a city, we substitute the 25th-percentile score across all cities — a conservative "probably below average" assumption so gaps don't inflate scores.
| 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 |
| English | 10 | ((epi_score − 350) / 300) × 10 | EF EPI |
| 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 difference is at least 5% relative to the larger value. Below that threshold, it's noise — we don't declare a winner for a $20 rent difference on a $1,500 apartment.
Weather metrics never declare a winner: 32°C summers are heaven for some and hell for others. Democracy is scored but presented without editorial — the number speaks for itself.
Pair Selection for Sitemap
You can compare any two cities in our catalog, but we only push same-region pairs and high-traffic cross-region pairs to search engines. This keeps our crawl budget focused on comparisons people actually search for — "Lisbon vs Barcelona" instead of "Honolulu vs Batumi."
Every pair has one canonical URL direction. The alphabetically-first city leads (e.g., /cities/compare/amsterdam-vs-berlin). The reversed URL 301-redirects to the canonical. Curated pairs (hand-picked for SEO) may override the alphabetical order.
Update Cadence
Data is refreshed via automated scrapers on a rolling basis. Numbeo prices update weekly. Democracy and peace indices update annually when new reports are published. Residency paths are reviewed quarterly against official government portals. Every update is committed to the repository with source attribution.