Methodology

Each tracked country gets seven sub-scores. Each sub-score is the country's value on a fixed numeric range, normalised to 0–100. Scores are combined into a single composite using weights stored in the config table.

Dimensions

Cost of living
Monthly EUR estimate for a 1-bedroom apartment in the capital plus groceries and local transport. Source: Numbeo public city pages. Updated periodically. Range 400–2 500 EUR (lower = higher score).
Air quality
Median PM2.5 (µg/m³) of monitoring stations within 25 km of the capital, last 48 hours. Source: OpenAQ v3. Range 10–150 µg/m³ (lower = higher score). Coverage in Cambodia, Philippines and Indonesia is sparse.
Visa accessibility
Subjective ease score 0–100 for an Irish passport holder seeking a long stay (tourist length, in-country extensions, dedicated nomad visa). Source: official immigration sites; values are best-effort and need verification before relying on them.
Safety
Numbeo Safety Index for the capital. Range 0–100 (higher = safer).
Healthcare
Numbeo Health Index for the capital. Range 0–100.
Internet
Median observed download bandwidth (Mbps) per country, last 7 days. Source: Cloudflare Radar IQI. This is real-world bandwidth as users actually experience it on Cloudflare's network — not peak Speedtest values, which are typically much higher. Range 5–30 Mbps. Falls back to a Speedtest-derived seed JSON if the Radar API is unreachable.
Nomad infrastructure
Sum of approximate coworking-space counts across the three most-used cities per country. Range 0–350. Manually seeded; cross-checked against Coworker.com periodically.

Weights

loading…

If a dimension is missing for a country, weights are renormalised across the available subset so a single missing dimension doesn't double-penalise.

Confidence

Score history (latest 12 weeks)

Limitations