Methodology

Each tracked country gets five sub-scores, each normalised to 0-100 where higher always means better-for-you. Every dimension is driven by one objective open dataset (World Bank, IHME/OWID, UNODC, WHO, Cloudflare Radar), no blends, no hand-tuned multipliers. Scores combine into a single composite using fixed weights. Below: what each dimension measures, where the data comes from, and how confident we are in each value.

Dimensions

Five sub-scores. Each one comes from a single objective open dataset, no editorial blends, no hand-tuned multipliers. Raw values are clamped to a fixed reference range and scaled 0 to 100. Inverted dimensions (cost, AQI, safety) rank the cheapest / cleanest / safest at 100. Visa was dropped 2026-05-20 (no defensible open-source single-source metric); policy detail surfaces on country and /visa pages instead.

Cost of living

Consumer price level vs USD: World Bank GDP-level PPP conversion factor divided by the official exchange rate. A single number per country: "this basket costs X% of what it costs in the US".

Scoring
Reference range 0.20 to 0.60, lower raw → higher score
Source
World Bank PA.NUS.PPP / PA.NUS.FCRF
Note
Country-level average. Sample rent listings and lifestyle estimates appear on each country page for context but don't feed the score.

Air quality

Annual mean PM2.5 (population-weighted) from IHME's Global Burden of Disease air-pollution exposure series, refreshed every pipeline tick from Our World in Data's mirror. Bali inherits Indonesia.

Scoring
Reference range 10 to 150 µg/m³, lower raw → higher score
Source
OWID outdoor-air-pollution-exposure (IHME GBD)
Note
Annual mean smooths over the burning-season spikes shown below. Live OpenAQ readings appear on city pages as current-conditions context but don't feed the score.

Burning season calendar

When the smoke arrives in each country. Mainland SE Asia burns in the cool dry months (Jan-Apr); Indonesia burns when its dry season peaks (Jun-Oct); Bali is largely spared. Worth knowing if you have lungs that complain or you're planning a multi-month stay.

J F M A M J J A S O N D
ThailandFeb-Apr
VietnamJan-Mar
CambodiaJan-Mar
LaosJan-Apr
PhilippinesJan-Mar
MalaysiaFeb-Apr
IndonesiaJun-Oct
BaliLargely spared
Mild / brief Significant Severe

Severity is qualitative: mild = mostly clear with a haze risk in bad years (PH, MY); significant = annual multi-week WHO breach (TH, VN, KH); severe = repeated 100+ µg/m³ peaks (north LA, Sumatra/Kalimantan in ID).

Safety

UNODC intentional homicide rate per 100,000 population. Latest year published by UNODC for each country, mirrored via the World Bank.

Scoring
Reference range 0.5 to 20 per 100k, lower raw → higher score
Source
World Bank VC.IHR.PSRC.P5 (UNODC)
Note
UNODC coverage is sparse for mainland SE Asia. Some country values date to 2011 (TH, VN, KH); confidence is flagged accordingly. Laos has no UNODC entry and so has no safety score.

Healthcare

WHO Universal Health Coverage Service Coverage Index, mirrored via the World Bank. A 0 to 100 composite of 14 tracer indicators across access, prevention, treatment and capacity, designed for cross-country comparison.

Scoring
Identity 0 to 100 scale, higher raw → higher score (no rescaling)
Source
World Bank SH_UHC_SCI (WHO UHC SCI)
Note
National index. Concentration of private/expat-tier hospitals in Bangkok, KL or Penang is covered qualitatively on the healthcare guide.

Internet

Median observed download bandwidth (Mbps), 7-day rolling window. Real-world experience on Cloudflare's network, not peak Speedtest values, which are typically much higher.

Scoring
Reference range 5 to 30 Mbps, higher raw → higher score
Source
Cloudflare Radar IQI

Live conditions map

Switch between PM2.5, rain, temperature, wind and humidity. Surface forecasts from ECMWF, regional context for the AQI sub-score, which uses the IHME annual-mean PM2.5 (the live map is forecast context only).

Surface forecasts from ECMWF, via Windy · Open larger map →

Weights

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

Loading…

Confidence

Every sub-score is tagged with a confidence level so you can read the dashboard with the right amount of scepticism.

High

Live API, fresh data this run.

Medium

Verified reference data updated within the last ~90 days.

Low

Missing, stale, or sparse. Flagged with a bold red * next to the score.

Happiness ranking

Country-level rank from the annual World Happiness Report, published each March. Shown on the country page as auxiliary context, it does not feed the composite score. Updated once per year.

Source: World Happiness Report, University of Oxford Wellbeing Research Centre / Gallup / UN SDSN.

Limitations