methodology · last reviewed 2026-05-22
How ExpatWhy works.
1,001 cities ·
13 sources ·
zero secrets
Four composite scores per city, a decision engine, verified primary-source data on disaster risk, air quality and tax. Every formula is below. Every source is clickable. The full license map sits in /LICENSES.md.
the four composite scores
Each score is a weighted blend, open below.
These are our own composite indices. Useful for sorting, but they are not externally validated. The Tax & Stay card and the Decision Engine use ONLY verified primary-source inputs.
The classic digital-nomad balance, cost-of-living, infrastructure and weather. Best for arbitrage seekers and remote workers picking a 3-12 month base.
weights
- cost25%
- internet20%
- safety20%
- air quality10%
- weather10%
- english10%
- coworking5%
Weighted for the solo traveler who wants community, easy English, active nightlife and good walkability. Coworking and bars matter more here than schools or family rent.
weights
- cost20%
- internet15%
- safety15%
- weather15%
- nightlife15%
- coworking10%
- english10%
Long-term move with kids. International schools, family-budget rent, safety, air quality and healthcare get the most weight here.
weights
- safety25%
- schools20%
- rent (family)15%
- air quality10%
- english10%
- weather10%
- internet10%
Quality-of-life over hustle. A synthetic ExpatWhy index that weighs safety, social signals, air, weather, English, cost relief and visa ease.
weights
- safety25%
- social (community)15%
- air quality15%
- weather15%
- english10%
- cost relief10%
- visa ease10%
decision engine · open weights
How the /start ranking is built.
The 6-question wizard at /start filters cities by visa-eligibility for your passport and stay length, then scores the remaining ones with the weights at right. Implementation is open at /src/lib/decision-engine.ts.
Visa-gating is a hard filter, and it checks exactly two things: days of visa-free entry on your passport, and whether the country runs a digital nomad visa. Cities that don't cover the chosen stay length on either count are dropped before scoring. Work, study, family, ancestry and employer-sponsored routes aren't modelled, so this is a statement about visa-free access, not about where you may legally live. After that, the weights below apply.
- Cost comfortably inside budget+20
- Cost within budget+10
- Cost tight on budget−10
- Cost over budget−30
- Each must-have matched+15
- Each deal-breaker hit−25
- Persona index bonus (nomad / solo / family / wellbeing)+0 to +10
primary sources · click to verify
Every number here has a source.
Copernicus CAMS
Annual + 12-month PM2.5 / PM10 via Open-Meteo Air Quality API. Verified per city.
CC-BY 4.0
USGS Earthquake Catalog
M5+ and M6+ events within 200 km, last 50 years. Verified per city via FDSN Event Service.
Public domain (US Gov)
NOAA IBTrACS v04r01
Tropical-cyclone tracks within 200 km, since 1980. Local-processed from 306k waypoints.
Public domain (US Gov)
OpenStreetMap (Overpass)
Coworking spaces + wifi-cafés mapped within ~11 km of city center. Verified GPS-tagged amenities.
ODbL 1.0
Open-Meteo (ERA5)
Current weather (now-layer) and monthly climate normals from ECMWF ERA5 reanalysis.
CC-BY 4.0
European Central Bank
Daily Reference Rates for live FX (now-layer). Free XML feed, ~30 currencies.
Free (ECB statement)
Asher & Lyric Women's Danger Index
Country-level female-safety score (0-10).
Editorial use w/ attribution
Velasco LGBT+ Policy Index (OWID)
Country-level measure of legal rights and protections for LGBT+ people, rescaled 0-10.
CC-BY
Wikimedia Commons
Landmark photo per city with photographer credit and license per file.
CC-BY / CC-BY-SA / Public Domain (varies)
Country tax authorities
Tax & Stay Reality data hand-curated from each country's tax authority + Wikipedia 'Taxation in X' (CC-BY-SA).
Public + CC-BY-SA
what we don't use, and why
The sources we refused.
Numbeo
Proprietary, scraping forbidden by TOS.
WHO GHO
CC-BY-NC-SA, non-commercial only. Replaced with World Bank health indicators where needed.
Kiwi.com Tequila API
TOS forbids caching > 24h.
Meetup API
Paid since 2019. Dropped.
OECD Tax Database
Non-commercial license. Tax data sourced from country authority sites + Wikipedia.
OpenAQ v3
Free but API-key gated. Replaced with Open-Meteo Air Quality (Copernicus CAMS data, no auth).
honest confidence tiers
Which numbers we measured vs. estimated.
tier 1 · pipeline-verified
Real measurements, this session
- · Air quality PM2.5 / PM10, 12 months
- · Earthquakes M5+/M6+ within 200km/50yr
- · Tropical cyclones since 1980
- · Coworking + wifi-café GPS density
- · Monthly weather normals
Coverage: 1,001 cities (storm history: 527)
tier 2 · fact-checked editorial
Hand-curated + agent-verified
- · 1,001 editorial city intros
- · 80-country tax database
- · 216-city verified rent ranges
- · US visa-free day matrix · 183 countries (Wikipedia CC-BY-SA + passport-index ODbL, statute-reconciled)
Verify visa thresholds at the issuing site before deciding.
tier 3 · pipeline estimate
Country-level or calibrated
- · 778 cities with PPP-estimate rents
- · Internet speed (country median)
- · Female safety (country index)
- · LGBTQ+ score (country composite)
- · Solo cost (calibration formula)
Carries a visible "estimate" badge in the UI.
change log · public review trail
When we corrected ourselves.
2026-05-22
Wave 3 + 4 verification sweep. Argentina tax regime corrected (no impatriate exemption). Tokyo verified rent range corrected $700-1400 → $1300-2700. 11 Sprint-6 editorial fact-checks applied. Slovenia DNV (since Nov 2025) added. Bulgaria full Schengen status added. Italy Impatriati 70%→50% clarified. Netherlands 30% ruling 2027 reform noted.
2026-05-22
All 31 Sprint-3 editorials fact-checked against official immigration sites. Bangkok DTV added. Mexico City TRV thresholds updated. Korea F-1-D permanent program. Australia Skills in Demand replaces TSS.
2026-05-21
Wave 3 launch: USGS earthquakes (349/349), NOAA IBTrACS storms (349/349), Copernicus CAMS 12-month air quality (349/349), OpenStreetMap coworking density (349/349).
no black boxes
Spot something we got wrong?
We publish weights, sources and our review log here so you can argue with them. Every correction lands publicly in the change log above.