Methodology
Everything on this site is reproducible from the scripts in the repository. Data built 2026-10-04.
1. What the index is
The Country Standard Index is a single 0–100 score per country per year that summarises quality of life along 7 components: affordability and income, health and healthcare access, jobs, education, safety, freedom, and environment and infrastructure. It is built only from published statistics (28 indicators), with no survey of opinion run by us and no hand-adjusted values.
It is designed to be decomposed. Every country page shows the index, the contribution of each component in index points, the indicators inside each component, and the raw official series with the year each value was observed.
2. Structure and weights
Index = Σ (wc × componentc) ÷ Σ wc over the components that have data (at least 5 of 7 are required). Component = simple mean of its available indicator scores. Default weights are equal; there is no official basis for weighting one dimension of life above another, so the ranking page lets you set your own.
| Component | Weight | Indicators |
|---|---|---|
| Affordability & income | 1 | GNI per capita, PPP · Price level of household consumption · Consumer price inflation · Gini index |
| Health & healthcare access | 1 | Life expectancy at birth · UHC service coverage index · Physicians per 1,000 people · Out-of-pocket share of health spending · Infant mortality rate |
| Jobs & employment | 1 | Unemployment rate · Youth unemployment rate (15–24) · Employment-to-population ratio (15+) · Vulnerable employment |
| Education level & access | 1 | Adults with a bachelor's degree or higher · Adults who completed upper secondary school · Tertiary enrolment, gross · Learning-adjusted years of school · Mean years of schooling (adults 25+) |
| Safety & security | 1 | Intentional homicides · Political stability & absence of violence/terrorism · Rule of law |
| Freedom & voice | 1 | Voice and accountability · Control of corruption · Freedom of expression & alternative sources of information |
| Environment & infrastructure | 1 | PM2.5 air pollution exposure · Safely managed drinking water · Access to electricity · Individuals using the Internet |
3. Scoring each indicator
- Transform. Income, infant mortality, homicide and PM2.5 are log-transformed so that differences at the low end count more than the same absolute difference at the high end. Inflation below zero is set to zero; gross tertiary enrolment is capped at 100%.
- Goalposts. For each indicator the worst and best goalposts are the 2.5th and 97.5th percentiles of all observed country-years from 2000 to 2024, pooled. They are the same for every year, which is what makes history meaningful: a country's score moves only when its own numbers move. The 2.5/97.5 trim stops one extreme country-year (a hyperinflation, a war) from compressing everyone else into a narrow band.
- Score. 100 × (value − worst) ÷ (best − worst), clipped to 0–100, with the direction flipped for indicators where lower is better.
Every indicator page spells these steps out for that series (native scale, transform, goalposts in both raw and transformed units, flip, clipping), and every value on a country page or indicator table can be opened to show the arithmetic applied to that exact number. The build is checked by npm run data:verify, which recomputes all ~124,000 stored scores from the raw values and the published goalposts and confirms each indicator is monotone in the stated direction.
4. Missing data
- Carry-forward. If a year has no published value, the most recent observation is carried forward for at most maxCarry years (2–10 depending on how often the source publishes; see table). Every carried value is flagged on the country and indicator pages, and each score shows what share of its inputs is carried.
- Missing indicators. A component is computed from whichever of its indicators are available; the country page shows “n/m indicators”. A country needs at least 5 components to get an index, and at least 70% of all indicators to be ranked. Countries below that threshold still have a score, shown with a warning, and can be included from the ranking page.
- Nothing is imputed from other countries. We never fill a country's gap with a regional average; the gap stays visible.
5. Indicators and sources
Every series links to two places: downloaded from is the exact URL our pipeline fetched (the closest point to the number on this site), and built from is the chain of organisations behind it. Where a value is assembled from several sources, each entry says what that source contributes; the indicator page also shows the data provider's own source statement verbatim, and every country row has a link to the series filtered to that country.
Type: direct measures the thing itself; proxy stands in for something not measured consistently across countries. Source type: statistical = counts, registers or household surveys compiled by statistical agencies; modelled = statistical estimates (ILO, UN IGME, GBD) that fill gaps between reported years; expert = assessments aggregated from expert and survey sources (WGI, V-Dem).
| Indicator | Component | Type | Native scale → score | Goalposts (0 → 100) | Countries | Carried | Max carry | Downloaded from | Built from |
|---|---|---|---|---|---|---|---|---|---|
| GNI per capita, PPP NY.GNP.PCAP.PP.KD · constant 2021 international $ | Afford. | official statistical | positive, unbounded (dollars per person) ln(value); higher is better | 1409 → 85,026 | 197 | 3% | 3 y | World Bank API v2, series NY.GNP.PCAP.PP.KD (World Development Indicators) series page · updated 2026-07-13 |
|
| Price level of household consumption PA.NUS.PRVT.PLI · index, United States = 100 | Afford. | official statistical | positive, unbounded; United States = 100 value (no transform); lower is better → flipped | 133 → 24.2 | 208 | 2% | 3 y | World Bank API v2, series PA.NUS.PRVT.PLI (World Development Indicators) series page · updated 2026-07-13 |
|
| Consumer price inflation FP.CPI.TOTL.ZG · annual % | Afford. | official statistical | percent, can be negative (deflation) or very large max(0, value); lower is better → flipped | 30.6 → 0.000 | 193 | 1% | 2 y | World Bank API v2, series FP.CPI.TOTL.ZG (World Development Indicators) series page · updated 2026-07-13 |
|
| Gini index SI.POV.GINI · 0 = perfect equality, 100 = perfect inequality | Afford. | official statistical | 0 (perfect equality) to 100 (one person has everything) value (no transform); lower is better → flipped | 55.0 → 25.3 | 168 | 47% | 8 y | World Bank API v2, series SI.POV.GINI (World Development Indicators) series page · updated 2026-07-13 |
|
| Life expectancy at birth SP.DYN.LE00.IN · years | Health | official statistical | years, positive value (no transform); higher is better | 50.9 → 83.2 | 217 | 0% | 3 y | World Bank API v2, series SP.DYN.LE00.IN (World Development Indicators) series page · updated 2026-07-13 |
|
| UHC service coverage index SH_UHC_SCI · 0–100 | Health | official statistical | 0 to 100 index points value (no transform); higher is better | 23.0 → 86.0 | 193 | 4% | 5 y | World Bank API v2, series SH_UHC_SCI (World Development Indicators) series page · updated 2026-07-13 |
|
| Physicians per 1,000 people SH.MED.PHYS.ZS · per 1,000 | Health | proxy statistical | doctors per 1,000 people, positive value (no transform); higher is better | 0.043 → 5.30 | 195 | 34% | 5 y | World Bank API v2, series SH.MED.PHYS.ZS (World Development Indicators) series page · updated 2026-07-13 |
|
| Out-of-pocket share of health spending SH.XPD.OOPC.CH.ZS · % of current health expenditure | Health | proxy statistical | 0 to 100 percent value (no transform); lower is better → flipped | 75.5 → 3.34 | 193 | 4% | 3 y | World Bank API v2, series SH.XPD.OOPC.CH.ZS (World Development Indicators) series page · updated 2026-07-13 |
|
| Infant mortality rate SP.DYN.IMRT.IN · per 1,000 live births | Health | official modelled | deaths per 1,000 live births, positive ln(value); lower is better → flipped | 88.6 → 2.20 | 196 | 0% | 3 y | World Bank API v2, series SP.DYN.IMRT.IN (World Development Indicators) series page · updated 2026-07-13 | |
| Unemployment rate SL.UEM.TOTL.ZS · % of labour force (ILO modelled) | Jobs | official modelled | 0 to 100 percent value (no transform); lower is better → flipped | 24.4 → 0.851 | 187 | 0% | 2 y | World Bank API v2, series SL.UEM.TOTL.ZS (World Development Indicators) series page · updated 2026-07-13 |
|
| Youth unemployment rate (15–24) SL.UEM.1524.ZS · % of youth labour force (ILO modelled) | Jobs | official modelled | 0 to 100 percent value (no transform); lower is better → flipped | 50.1 → 1.55 | 187 | 0% | 2 y | World Bank API v2, series SL.UEM.1524.ZS (World Development Indicators) series page · updated 2026-07-13 |
|
| Employment-to-population ratio (15+) SL.EMP.TOTL.SP.ZS · % of population aged 15+ (ILO modelled) | Jobs | official modelled | 0 to 100 percent value (no transform); higher is better | 32.4 → 81.4 | 187 | 0% | 2 y | World Bank API v2, series SL.EMP.TOTL.SP.ZS (World Development Indicators) series page · updated 2026-07-13 |
|
| Vulnerable employment SL.EMP.VULN.ZS · % of total employment (ILO modelled) | Jobs | proxy modelled | 0 to 100 percent value (no transform); lower is better → flipped | 86.8 → 3.18 | 187 | 0% | 2 y | World Bank API v2, series SL.EMP.VULN.ZS (World Development Indicators) series page · updated 2026-07-13 |
|
| Adults with a bachelor's degree or higher SE.TER.CUAT.BA.ZS · % of population aged 25+ | Educ. | official statistical | 0 to 100 percent value (no transform); higher is better | 1.07 → 37.4 | 188 | 47% | 8 y | World Bank API v2, series SE.TER.CUAT.BA.ZS (World Development Indicators) series page · updated 2026-07-13 |
|
| Adults who completed upper secondary school SE.SEC.CUAT.UP.ZS · % of population aged 25+ | Educ. | official statistical | 0 to 100 percent value (no transform); higher is better | 6.43 → 92.0 | 195 | 42% | 8 y | World Bank API v2, series SE.SEC.CUAT.UP.ZS (World Development Indicators) series page · updated 2026-07-13 |
|
| Tertiary enrolment, gross SE.TER.ENRR · % of the five-year age group after secondary school | Educ. | proxy statistical | percent; can exceed 100 (mature and repeat students) min(100, value); higher is better | 1.89 → 97.2 | 195 | 18% | 4 y | World Bank API v2, series SE.TER.ENRR (World Development Indicators) series page · updated 2026-07-13 |
|
| Learning-adjusted years of school HD.HCI.LAYS · years | Educ. | official statistical | years, 0 to about 14 value (no transform); higher is better | 2.86 → 12.0 | 172 | 71% | 10 y | World Bank API v2, series HD.HCI.LAYS (Human Capital Index) series page · updated 2020-09-21 |
|
| Mean years of schooling (adults 25+) UNDP_MYS · years | Educ. | official statistical | years, 0 to about 14 value (no transform); higher is better | 1.86 → 13.3 | 193 | 4% | 3 y | UNDP HDR 2025 composite indices time series (CSV), column mys_YYYY series page · updated HDR 2025 |
|
| Intentional homicides VC.IHR.PSRC.P5 · per 100,000 people | Safety | official statistical | homicides per 100,000 people, 0 or positive ln(1 + value); lower is better → flipped | 45.6 → 0.328 | 195 | 20% | 4 y | World Bank API v2, series VC.IHR.PSRC.P5 (World Development Indicators) series page · updated 2026-07-13 |
|
| Political stability & absence of violence/terrorism GOV_WGI_PV_EST · estimate, roughly −2.5 to +2.5 | Safety | official expert | standard-normal units, roughly −2.5 (worst) to +2.5 (best), world mean 0 value (no transform); higher is better | -2.25 → 1.41 | 206 | 4% | 2 y | World Bank API v2, series GOV_WGI_PV_EST (World Development Indicators) series page · updated 2026-07-13 |
|
| Rule of law GOV_WGI_RL_EST · estimate, roughly −2.5 to +2.5 | Safety | official expert | standard-normal units, roughly −2.5 (worst) to +2.5 (best), world mean 0 value (no transform); higher is better | -1.71 → 1.84 | 206 | 4% | 2 y | World Bank API v2, series GOV_WGI_RL_EST (World Development Indicators) series page · updated 2026-07-13 |
|
| Voice and accountability GOV_WGI_VA_EST · estimate, roughly −2.5 to +2.5 | Freedom | official expert | standard-normal units, roughly −2.5 (worst) to +2.5 (best), world mean 0 value (no transform); higher is better | -1.81 → 1.69 | 206 | 4% | 2 y | World Bank API v2, series GOV_WGI_VA_EST (World Development Indicators) series page · updated 2026-07-13 |
|
| Control of corruption GOV_WGI_CC_EST · estimate, roughly −2.5 to +2.5 | Freedom | official expert | standard-normal units, roughly −2.5 (worst) to +2.5 (best), world mean 0 value (no transform); higher is better | -1.54 → 2.11 | 206 | 4% | 2 y | World Bank API v2, series GOV_WGI_CC_EST (World Development Indicators) series page · updated 2026-07-13 |
|
| Freedom of expression & alternative sources of information VDEM_FREEXPR · index 0–1 | Freedom | official expert | 0 (least free) to 1 (most free) value (no transform); higher is better | 0.032 → 0.976 | 173 | 0% | 2 y | Our World in Data grapher CSV, column freeexpr_vdem__estimate_best series page · updated V-Dem v15 via OWID |
|
| PM2.5 air pollution exposure EN.ATM.PM25.MC.M3 · µg/m³, population-weighted annual mean | Envir. | official modelled | micrograms per cubic metre, positive ln(value); lower is better → flipped | 62.1 → 4.44 | 200 | 4% | 4 y | World Bank API v2, series EN.ATM.PM25.MC.M3 (World Development Indicators) series page · updated 2026-07-13 |
|
| Safely managed drinking water SH.H2O.SMDW.ZS · % of population | Envir. | official statistical | 0 to 100 percent value (no transform); higher is better | 7.71 → 100 | 151 | 0% | 3 y | World Bank API v2, series SH.H2O.SMDW.ZS (World Development Indicators) series page · updated 2026-07-13 |
|
| Access to electricity EG.ELC.ACCS.ZS · % of population | Envir. | official statistical | 0 to 100 percent value (no transform); higher is better | 9.30 → 100 | 215 | 0% | 3 y | World Bank API v2, series EG.ELC.ACCS.ZS (World Development Indicators) series page · updated 2026-07-13 |
|
| Individuals using the Internet IT.NET.USER.ZS · % of population | Envir. | proxy statistical | 0 to 100 percent value (no transform); higher is better | 0.222 → 96.3 | 210 | 3% | 3 y | World Bank API v2, series IT.NET.USER.ZS (World Development Indicators) series page · updated 2026-07-13 |
|
Not scored but shown for cross-checking: Population, total (World Bank WDI (UN World Population Prospects, national statistical offices, Eurostat)); Human Development Index (UNDP) (UNDP Human Development Report 2025).
6. Where official numbers are missing, and proposed proxies
7. Known limitations
- Equal weights are a choice, not a finding. Use the sliders to test how sensitive the ranking is.
- Governance and freedom indicators are expert assessments, not counts. They are the standard sources (used by the UN, EU and World Bank) but carry a standard error; the WGI publish it.
- Small states have thin data and are easily unranked; this is a data limitation, not a judgement about them.
- Carry-forward keeps recent years comparable but means that a country's latest score can be partly last year's. The carried share is always shown.
- National averages hide inequality within countries; the Gini index is the only distributional measure included.
8. Reproducing the data
npm run data:fetch # pull all series from the World Bank API, UNDP and OWID into data/raw/ npm run data:build # compute scores, components, index, ranks → data/*.json npm run build # build the site
The indicator catalogue (ids, directions, transforms, carry limits, sources) is a single file, scripts/indicators.mjs; add a row there and re-run to extend the index.