Methodology
How every 0–100 score is built, and why you can trust it — or see exactly where you shouldn’t.
The one rule: no fabricated data
Every score traces to a real, citable source. We never fabricate, guess, or “estimate to fill a gap”. If there is no source for a country, we show “no data” — never a made-up number, and never a fake zero (a zero is a real, worst-case score, not a stand-in for “unknown”).
We don’t claim to be “100% reliable”. Instead we make the provenance visible and let you judge: every score, everywhere on the site, shows its confidence tier and is one click from the raw value, the source, the dates, and the exact formula that produced it. Reliability here means transparency, not false precision.
Where a concept can’t be measured honestly, we reframe it to what is sourced, or we leave it out — rather than shipping a number that looks authoritative but isn’t.
How a score is built
- 1Source. A named organisation publishes an indicator (e.g. the World Bank's GDP per capita). We snapshot it with its retrieval date and license.
- 2Raw value. We store the exact value the source reported, in its native unit, for each country that has one. Countries without a value are simply absent.
- 3Direction. We record whether higher is better or worse, so the final scale is consistent (see below).
- 4Normalize. A pure, tested engine maps the raw value to 0–100 using one of four documented methods, storing the exact parameters used.
- 5Score. The result is a 0–100 score where 100 = best/most, reconstructable by hand from the stored raw value + parameters.
Confidence tiers
Every metric carries a confidence tier, shown as a badge wherever its score appears. Tiers C and D always render an additional visible caution.
- Tier AOfficial / robust
Official or methodologically robust source with broad coverage and published methodology (e.g. World Bank, UN, WHO, Transparency International).
- Tier BReputable / modeled
Reputable but crowd-sourced or modeled source (e.g. Numbeo, Ookla, EIU indices). Solid, but read with the method in mind.
- Tier CSurvey / proxyshows a caution
Survey-based, patchy, or proxy metric. Indicative only — coverage gaps and methodology limits are significant. Not a definitive ranking.
- Tier DNovelty / low reliabilityshows a caution
Novelty or weak-methodology metric. Low reliability — shown for interest only, with a single source. Do not treat as authoritative.
Normalization methods
Each metric uses whichever method fits its data; the method and its exact parameters are stored on every observation, so any score is reconstructable.
native_rescaleNative rescaleabsoluteThe indicator is already a meaningful 0–N index (e.g. CPI 0–100, HDI 0–1), so we keep it on its own published scale — the WorldScore value equals the source's, just mapped to 0–100. Absolute and directly comparable across years.
minmaxMin–maxrelative to datasetLinear rescale between the lowest and highest values in the current dataset: lowest → 0, highest → 100. Simple and interpretable, but the endpoints are the current poorest/richest country, so the score is relative to today's country set.
log_minmaxLog + min–maxrelative to datasetFor heavily right-skewed indicators (GDP per capita, population): take the natural log, then min–max. This stops a few extreme values from flattening everyone else near 0. Relative to the dataset, on a log scale.
percentilePercentile rankrelative to datasetThe score is the country's position in the distribution (e.g. "safer than 90% of countries"). Robust to extreme outliers, which makes it well-suited to skewed crime rates — but it is a rank, not an absolute level, and is relative to the country set.
Relative scores move. For dataset-relative methods (min–max, log + min–max, percentile), 0 and 100 are the current worst/best country. The same raw value can map to a different score if the country set or the extremes change, so compare raw values across years, not scores. The stored parameters record exactly which min/max were used.
Trend sparklines on country pages plot each year's score normalized within that year's own dataset (its own min/max, stored per row) — so the movement is real, not an artefact of today's extremes.
Level score vs percentile — what compares
A metric's native (level) score only means something within that metric. A min–max metric and a percentile metric both produce 0–100 numbers, but they measure different things — an absolute level vs a rank position — so a level score of 70 on one metric and 36 on another cannot be read as “better on the first”. Comparing level scores across metrics is a mistake.
So every observation also carries a percentile rank: the country's position (0–100) among all countries with data for that metric, direction applied. Because it's always “where you rank among countries”, it is comparable across metrics.
- Single-metric views (a metric's ranking page) show the level score — that's where its own scale is meaningful.
- Cross-metric views (the country page, and the Compare radar/table/gaps) use percentile rank, so nothing misleading is put on one axis.
Both numbers are in every “How is this calculated?” drawer and in the API/MCP payload (score and percentileRank).
Evaluative vs descriptive metrics
Most metrics are evaluative — higher genuinely is better (less corruption, longer life expectancy). But some are descriptive: neutral magnitudes where higher is not better or worse — total population, population density, median age, fertility, urbanization, foreign-born share, international tourist arrivals, and the projected population change to 2050. Spain's projected −6% is not a failing grade; Monaco's density does not make it a “better country” than Canada.
Because forcing those onto a “100 = best” scale would invite false conclusions, descriptive metrics are handled differently:
- a distinct neutral (indigo) colour and a “Descriptive” badge, never the green→yellow value scale;
- excluded from the Compare radar and “biggest gaps” (shown in a separate, clearly-labelled section) — so “population 100” is never plotted next to “corruption 100”;
scale_meaningphrased as “100 = highest … — descriptive, not better or worse”, and the API/MCP carry ametricKindfield.
Direction: 100 is always best (for evaluative metrics)
Indicators point in different directions — a high CPI is good, a high homicide rate is bad. We store each indicator’s direction and apply it during normalization so that on the site, 100 always means best/most and 0 means worst/least. Every metric spells out what its scale means in words (e.g. “100 = safest, 0 = most homicides”). Directions are never silently mixed.
Countries & coverage
There is one canonical country list, keyed on ISO 3166-1 alpha-3 codes; everything joins on it. Name variants and territories are resolved to a single code, so a country is never double-counted or mismatched.
Coverage varies by source — most indicators cover 180–200+ countries, some far fewer. Each metric page states how many countries have data, and the map shows the rest in grey as “no data”. A missing country is a gap we disclose, not one we fill.
Sources & licenses
103 metrics from 23 sources. Every source is attributed with its license and the date we snapshotted it.
Correlated governance metrics. Three metrics — electoral democracy, rule of law, and freedom of expression — all come from the V-Dem project. They share one methodology and one expert-coding panel, so they are correlated: three views of a single model, not three independent sources. Read them as facets of one assessment, not as mutual corroboration.
A second shared-model family: the World Bank WGI. The Worldwide Governance Indicators are a single statistical aggregation of many underlying survey and expert sources, published as six correlated dimensions. To avoid stacking near-identical governance scores, we ship only one WGI metric — government effectiveness (state capacity) — not the full six, and we skip WGI control of corruption because it largely duplicates the Corruption Perceptions Index we already carry. Where we wanted an independentgovernance signal we chose one from a different house and method entirely: women in parliament is an objective IPU seat count, not an expert perception. If a properly-licensed measure from another house (e.g. Freedom House) becomes viable, we would prefer it to more of the same model.
Sources we dropped rather than fudge. Some widely-cited indices fail our licensing/reproducibility bar and are deliberately not shipped: the WJP Rule of Law Index (all-rights-reserved, no reuse license → substituted by V-Dem rule of law), the RSF World Press Freedom Index (CC BY-NC-ND with no openly-fetchable current-methodology data → substituted by V-Dem freedom of expression), and any charitable-giving / “generosity” index (CAF is unlicensed and PDF-only; the World Happiness Report’s “generosity” is a GDP-adjusted regression residual that takes negative values — not a measure of kindness — so the giving slot is left intentionally empty until a licensed, fetchable, interpretable source exists).
Police-recorded offences by category (crim_off_cat), per 100,000 inhabitants. European reporting countries only. Recorded ≠ actual crime — confounded by reporting propensity, police recording practice, and legal definitions (Tier C).
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Recorded assault rate | Tier C | percentile | 37 | mixed 2012–2024 | 2026-07-12 |
| Recorded corruption offence rate | Tier C | percentile | 36 | mixed 2016–2024 | 2026-07-12 |
| Recorded drug offence rate | Tier C | percentile | 37 | mixed 2012–2024 | 2026-07-12 |
| Recorded kidnapping rate | Tier C | percentile | 35 | mixed 2012–2024 | 2026-07-12 |
| Recorded robbery rate | Tier C | percentile | 38 | mixed 2012–2024 | 2026-07-12 |
| Recorded sexual violence rate | Tier C | percentile | 36 | mixed 2019–2024 | 2026-07-12 |
| Recorded theft rate | Tier C | percentile | 38 | mixed 2012–2024 | 2026-07-12 |
Cocoa 'food available for consumption' per capita from the FAO Food Balance Sheets, retrieved via the Our World in Data mirror. A supply proxy, not measured consumption — Tier C.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Chocolate supply per person (proxy) | Tier C | minmax | 191 | mixed 2009–2023 | 2026-07-12 |
Per-capita food available for consumption from the FAO Food Balance Sheets, retrieved via the Our World in Data mirror. This is national food SUPPLY per person, not measured intake.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Fish & seafood supply per capita | Tier A | minmax | 191 | mixed 2009–2023 | 2026-07-12 |
| Fruit supply per capita | Tier A | minmax | 191 | mixed 2009–2023 | 2026-07-12 |
| Meat supply per capita | Tier A | minmax | 191 | mixed 2009–2023 | 2026-07-12 |
| Vegetable supply per capita | Tier A | minmax | 191 | mixed 2009–2023 | 2026-07-12 |
Per-capita CO₂ emissions from the Global Carbon Project's Global Carbon Budget, retrieved via the Our World in Data mirror.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| CO₂ emissions per capita | Tier A | percentile | 214 | 2024 | 2026-07-12 |
ILOSTAT via the ILO rplumber API (rplumber.ilo.org). CC BY 4.0 for databases published since 3 May 2023.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Informal employment | Tier A | minmax | 145 | mixed 2009–2026 | 2026-07-12 |
| Social protection coverage | Tier A | native_rescale | 214 | mixed 2015–2025 | 2026-07-12 |
| Trade union density | Tier B | minmax | 139 | mixed 2007–2020 | 2026-07-12 |
IMF World Economic Outlook via the IMF DataMapper API (imf.org/external/datamapper).
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| GDP growth (projection) | Tier B | minmax | 189 | 2031 | 2026-07-12 |
| Government debt | Tier B | minmax | 193 | mixed 2010–2025 | 2026-07-12 |
Pooled analysis of population-based measured-height studies, retrieved via the Our World in Data mirror. Indexed by year of birth.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Adult male height | Tier A | minmax | 200 | 1996 | 2026-07-12 |
ND-GAIN vulnerability score. The source ZIP is version-stamped (no stable 'latest' URL), so the snapshot is pinned to a specific release; refreshes are a manual, documented step.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Climate vulnerability | Tier B | minmax | 190 | 2024 | 2026-07-12 |
OECD statistics via the OECD SDMX API (sdmx.oecd.org). CC BY 4.0 since July 2024. Coverage is OECD members and selected partners only (~38 economies).
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Average annual working hours | Tier B | minmax | 44 | mixed 2020–2025 | 2026-07-12 |
| Gender wage gap | Tier B | minmax | 47 | mixed 2022–2025 | 2026-07-12 |
| Municipal waste per capita | Tier B | minmax | 61 | mixed 2012–2024 | 2026-07-12 |
| Recycling rate | Tier B | minmax | 54 | mixed 2012–2024 | 2026-07-12 |
| Tax wedge on labour | Tier B | minmax | 38 | 2025 | 2026-07-12 |
Mean years of schooling series compiled by Our World in Data from UNDP Human Development Report and UNESCO education statistics.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Mean years of schooling | Tier A | minmax | 146 | 2020 | 2026-07-12 |
Laureates from the official Nobel Prize API (CC0), counted by present-day birth country and divided by World Bank population.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Nobel laureates per capita | Tier B | log_minmax | 79 | 2024 | 2026-07-12 |
CPI retrieved via the Our World in Data mirror (ourworldindata.org/grapher/ti-corruption-perception-index), which republishes the official TI CPI series verbatim. Snapshot verified against Transparency International's official CPI 2024 figures and matches exactly (spot-checked: DNK 90, FIN 88, SGP 84, DEU 75, USA 65, ESP 56, SSD 8). We were unable to fetch TI's primary file directly (their CDN returns an access-denied stub for the CPI xlsx and no clean CSV is offered), so the OWID mirror is the machine-readable source; primary source and methodology owner is Transparency International.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Corruption Perceptions Index | Tier A | native_rescale | 180 | 2024 | 2026-07-12 |
International tourist arrivals — overnight visitors — from UN Tourism (UNWTO), retrieved via the Our World in Data mirror (OWID's processing layer is CC BY; underlying values are UN Tourism).
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| International tourist arrivals | Tier B | log_minmax | 174 | 2019 | 2026-07-12 |
UN World Population Prospects (median age; medium-variant projections), retrieved via the Our World in Data mirror.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Median age | Tier A | minmax | 237 | 2023 | 2026-07-12 |
| Population change (projection) | Tier A | minmax | 237 | 2050 | 2026-07-12 |
Gender Inequality Index from the UNDP Human Development Report, retrieved via the Our World in Data mirror.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Gender equality (inverted GII) | Tier A | native_rescale | 172 | 2023 | 2026-07-12 |
Human Development Index, retrieved via the Our World in Data mirror (ourworldindata.org/grapher/human-development-index), which republishes the UNDP HDR series. Primary source and methodology owner is UNDP.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Human Development Index | Tier A | native_rescale | 193 | 2023 | 2026-07-12 |
Refugee population by country of origin, retrieved via the Our World in Data mirror.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Refugees (by origin) | Tier A | percentile | 211 | mixed 2002–2024 | 2026-07-12 |
Intentional homicide victims per 100,000, indicator VC.IHR.PSRC.P5, retrieved via the World Bank API. Primary source is UNODC; the World Bank redistributes the series under CC BY 4.0.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Homicide rate | Tier A | percentile | 193 | mixed 2001–2023 | 2026-07-12 |
Deaths in armed conflicts, best estimate, retrieved via the Our World in Data mirror.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Deaths in armed conflicts | Tier A | percentile | 197 | 2025 | 2026-07-12 |
Varieties of Democracy (V-Dem) expert-coded indices (electoral democracy, rule of law, freedom of expression), retrieved via the Our World in Data mirror. Expert-coded estimates; see V-Dem for uncertainty intervals.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Electoral democracy index | Tier A | native_rescale | 175 | 2025 | 2026-07-12 |
| Freedom of expression index | Tier A | native_rescale | 175 | 2025 | 2026-07-12 |
| Rule of law index | Tier A | native_rescale | 175 | 2025 | 2026-07-12 |
World Development Indicators and related databases, retrieved via the World Bank API (api.worldbank.org), most recent value per country. Each metric's indicator code and primary compiler (e.g. UN, WHO, ITU, UN IGME) are given in its methodology.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Access to electricity | Tier A | native_rescale | 214 | 2023 | 2026-07-12 |
| Adult literacy rate | Tier A | minmax | 155 | mixed 2000–2024 | 2026-07-12 |
| Age dependency ratio | Tier A | minmax | 215 | 2025 | 2026-07-12 |
| Air transport passengers | Tier A | percentile | 177 | mixed 2000–2023 | 2026-07-12 |
| Child labour | Tier B | minmax | 97 | mixed 2000–2016 | 2026-07-12 |
| Diabetes prevalence | Tier A | minmax | 208 | 2024 | 2026-07-12 |
| Electricity use per capita | Tier A | log_minmax | 149 | mixed 2022–2024 | 2026-07-12 |
| Employment-to-population ratio | Tier A | minmax | 186 | mixed 2021–2025 | 2026-07-12 |
| Energy use per capita | Tier A | log_minmax | 177 | mixed 2007–2024 | 2026-07-12 |
| Exports of goods & services | Tier A | minmax | 192 | mixed 2004–2025 | 2026-07-12 |
| Female labour force participation | Tier A | minmax | 186 | mixed 2021–2025 | 2026-07-12 |
| Fertility rate | Tier A | minmax | 215 | 2024 | 2026-07-12 |
| Fixed broadband subscriptions | Tier A | minmax | 208 | mixed 2021–2024 | 2026-07-12 |
| Foreign direct investment | Tier A | minmax | 201 | mixed 2011–2024 | 2026-07-12 |
| Foreign-born population | Tier A | native_rescale | 214 | mixed 2010–2024 | 2026-07-12 |
| Forest area | Tier A | native_rescale | 213 | 2023 | 2026-07-12 |
| GDP per capita (PPP) | Tier A | log_minmax | 202 | mixed 2011–2024 | 2026-07-12 |
| Government education spending | Tier A | minmax | 200 | mixed 2002–2025 | 2026-07-12 |
| Government effectiveness | Tier A | native_rescale | 204 | 2024 | 2026-07-12 |
| Government revenue | Tier A | minmax | 155 | mixed 2007–2024 | 2026-07-12 |
| Gross savings | Tier A | minmax | 177 | mixed 2000–2025 | 2026-07-12 |
| Health expenditure per capita | Tier A | log_minmax | 193 | mixed 2020–2024 | 2026-07-12 |
| Hospital beds per 1,000 | Tier A | minmax | 191 | mixed 2001–2023 | 2026-07-12 |
| Immunization coverage (DTP3) | Tier A | native_rescale | 193 | mixed 2023–2024 | 2026-07-12 |
| Income inequality (Gini) | Tier A | minmax | 167 | mixed 2005–2025 | 2026-07-12 |
| Infant mortality rate | Tier A | minmax | 195 | 2024 | 2026-07-12 |
| Inflation rate | Tier A | percentile | 192 | mixed 2011–2025 | 2026-07-12 |
| Internally displaced persons | Tier A | percentile | 82 | mixed 2011–2025 | 2026-07-12 |
| Internet users | Tier A | native_rescale | 209 | mixed 2004–2025 | 2026-07-12 |
| Labour productivity | Tier A | log_minmax | 177 | mixed 2021–2024 | 2026-07-12 |
| Life expectancy at birth | Tier A | minmax | 215 | 2024 | 2026-07-12 |
| Life expectancy gap (female − male) | Tier A | minmax | 215 | 2024 | 2026-07-12 |
| Logistics Performance Index | Tier A | native_rescale | 169 | mixed 2007–2022 | 2026-07-12 |
| Lower-secondary completion rate | Tier A | minmax | 192 | mixed 2007–2025 | 2026-07-12 |
| Maternal mortality ratio | Tier A | percentile | 194 | 2023 | 2026-07-12 |
| Net migration rate | Tier B | minmax | 215 | 2025 | 2026-07-12 |
| New business density | Tier A | minmax | 182 | mixed 2009–2024 | 2026-07-12 |
| PISA maths | Tier A | minmax | 55 | mixed 2009–2018 | 2026-07-12 |
| PISA reading | Tier A | minmax | 55 | mixed 2009–2018 | 2026-07-12 |
| PISA science | Tier A | minmax | 55 | mixed 2009–2018 | 2026-07-12 |
| PM2.5 air pollution | Tier A | percentile | 200 | 2023 | 2026-07-12 |
| Physicians per 1,000 | Tier A | minmax | 195 | mixed 2000–2023 | 2026-07-12 |
| Population density | Tier A | log_minmax | 215 | 2023 | 2026-07-12 |
| Protected land area | Tier A | native_rescale | 212 | mixed 2015–2025 | 2026-07-12 |
| Pupil–teacher ratio (primary) | Tier A | minmax | 197 | mixed 2000–2019 | 2026-07-12 |
| Remittances received | Tier A | minmax | 193 | mixed 2000–2024 | 2026-07-12 |
| Renewable energy share | Tier A | native_rescale | 212 | mixed 2021–2022 | 2026-07-12 |
| Researchers in R&D | Tier A | log_minmax | 144 | mixed 2002–2024 | 2026-07-12 |
| Road-traffic deaths | Tier B | minmax | 190 | mixed 2013–2019 | 2026-07-12 |
| Rural population share | Tier A | native_rescale | 215 | 2025 | 2026-07-12 |
| Safe drinking water | Tier A | native_rescale | 151 | mixed 2017–2024 | 2026-07-12 |
| Safe sanitation | Tier A | native_rescale | 145 | mixed 2016–2024 | 2026-07-12 |
| Sex ratio at birth | Tier A | minmax | 215 | 2024 | 2026-07-12 |
| Tertiary enrollment ratio | Tier A | minmax | 195 | mixed 2000–2025 | 2026-07-12 |
| Tobacco use | Tier A | minmax | 166 | 2024 | 2026-07-12 |
| Total population | Tier A | log_minmax | 215 | 2025 | 2026-07-12 |
| Under-5 mortality rate | Tier A | percentile | 195 | 2024 | 2026-07-12 |
| Undernourishment | Tier A | minmax | 169 | mixed 2006–2023 | 2026-07-12 |
| Unemployment rate | Tier A | minmax | 186 | mixed 2021–2025 | 2026-07-12 |
| Urbanization | Tier A | native_rescale | 215 | 2025 | 2026-07-12 |
| Women in parliament | Tier A | native_rescale | 193 | mixed 2018–2025 | 2026-07-12 |
| Youth unemployment rate | Tier A | minmax | 186 | mixed 2021–2025 | 2026-07-12 |
Self-reported life evaluation (Cantril ladder, 0–10) from the Gallup World Poll, published in the World Happiness Report, retrieved via the Our World in Data mirror. Survey-based (Tier B).
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Life satisfaction (happiness) | Tier B | native_rescale | 165 | mixed 2011–2025 | 2026-07-12 |
Share of survey respondents who mention 'people of a different religion' when asked which groups they would not want as neighbours (World Values Survey / Integrated Values Surveys), via the Our World in Data mirror. A single attitudinal proxy — Tier C.
| Metric | Tier | Method | Countries | Year | Snapshot |
|---|---|---|---|---|---|
| Social tolerance (proxy) | Tier C | native_rescale | 94 | mixed 2004–2022 | 2026-07-12 |
Reproducibility
The entire dataset rebuilds from a versioned pipeline. A data manifest.json records every source, its snapshot date, and license; each source has one adapter that fetches, normalizes, and emits rows with full provenance. Anyone can re-run the build and get the same scores.
The built database is committed read-only and queried directly, and a machine-readable API and MCP server (later phases) expose every score with its provenance — so humans and machines both get the number and the reason to trust it.