Income and wealth percentile by country

Accounting for informal economy, remittances, and illicit money flows.

Pick a country, type your annual gross income or net worth, and see exactly where you sit on the curve.

Type a value to see where you stand.

$

Average

Median

Top 1%

Top 0.1%

Income and wealth distribution by country

Detailed pages for 40 major economies. Click any country to open its dedicated page.

This tool produces directional comparisons for educational purposes. It is not financial advice. Distributions are modelled from harmonised statistics published by the World Inequality Database, OECD, UBS, Eurostat, and the World Bank, with corrections documented in the methodology above.

Methodology

How the numbers are calculated.

Behind every percentile on this page is a per-country statistical model fitted to published distribution thresholds, then adjusted for informal economic activity, sanctioned currency systems, and missing source coverage. This page documents the model, the corrections, and what they cannot capture. Treat the figures as directional, not surgical.

01

Where the data comes from.

Four upstream sources, each contributing one piece of the picture. Coverage is uniform across all 217 economies on the page.

Distribution shape

World Inequality Database

Per-country thresholds for pretax national income per adult (tptincj992) and net household wealth per adult (thwealj992). Equal-split adults: resources divided equally within couples. Reference year 2024 for almost every country.

Level anchor

World Bank GDP & FX

GDP per capita (NY.GDP.PCAP.CD) and the implied USD-per-local rate derived from PCAP.CD ÷ PCAP.CN. The implied rate is more reliable than consumer feeds for sanctioned and parallel-market currencies.

Correction calibrator

WB Informal Economy DB

Informal output as a share of GDP (Elgin / Kose / Ohnsorge / Yu, 2021). DGE and MIMIC measures averaged. Used as the input that scales the informal-economy correction, not as an output.

FX fallback

open.er-api.com & ECB

Daily FX rates as fallback for currencies the World Bank does not cover. ECB rates from frankfurter.dev as a second fallback. Single snapshot, refreshed annually.

wid.world api.worldbank.org WB Informal Economy DB open.er-api.com frankfurter.dev (ECB)
02

The statistical model.

A log-normal body for the bulk of the distribution, patched onto a Pareto tail above the 95th percentile. Same structure for income and wealth. All parameters stored in local currency.

Body fit

Log-normal, anchored at the median.

The median is matched by construction: μ = ln(p50). Spread is the median of per-percentile σ estimates implied by p25, p75, p90, p95, anchored at μ. This is robust to outliers in any single anchor.

Combined CDF
F(x) = LogNormal(μ, σ).cdf(x)        if x < x_min
F(x) = 1 − 0.05 · (x_min / x)^α       if x ≥ x_min
Tail fit

Pareto patch above p95.

The Pareto exponent α is calibrated so the survival function above x_min = source p95 matches the published p99 and p99.9. Median of multiple anchor-implied alphas. The 0.05 in the patched CDF is the survival probability at x_min, anchoring the join.

Wealth note

Wealth distributions have substantial near-zero or negative mass at the bottom. The fitter excludes non-positive thresholds from the body fit. Validator emits warnings (not failures) when wealth p90 fit drifts from source.

03

Tier 1 — Informal-economy correction.

Pretax-individual income from WID under-reports in countries with large informal sectors. Tax records miss cash and self-employment; surveys under-cover the bottom and the very top. Tier 1 shifts the curve upward, calibrated by published informal share. The correction is one-sided: never downward.

  1. Trusted ratio. Compute ratio = median(WID_median_USD ÷ GDP_per_capita_USD) across the subset of countries with informal share ≤ 12% AND GDP per capita ≥ $15k. These are the well-measured peers.
  2. GDP-implied median. For each country: implied_USD = ratio × GDP_per_capita_USD.
  3. Gap. gap = implied_USD ÷ measured_USD. If gap ≤ 1.05, no correction.
  4. Blend weight. α = clip((informal_share − 5) ÷ 55, 0, 1). Switzerland (8%) ≈ 0.05; Bolivia (60%) = 1.0.
  5. Capped factor. factor = 1 + α · (min(gap, 2.0) − 1.0). Never more than 2×.
  6. Apply. μ shifts by log(factor). x_min and every threshold scale by factor. σ and α are unchanged. Shape preserved, level shifted.

Per-dimension trusted ratios: wealth median is a stock (3–5× of GDP per capita on average) while income median is a flow (roughly 0.85×). Every corrected country carries an informal_correction block in its JSON exposing all inputs (informal share, gap, α, factor, original WID median, GDP-implied median).

04

Tier 2 corrections, and imputation for thin data.

Tier 1 is gentle. Some countries need stronger intervention because their primary measurement is fundamentally broken, or because no usable thresholds exist at all.

Tier 2 — GDP anchor

For sanctioned states & conflict zones.

After Tier 1, if the post-correction median is still off GDP-implied by more than 3× in either direction, the median is forced to GDP-implied using the same shift-everything mechanism.

  • Trigger: measured / implied > 3 or < 1/3
  • Recorded as: gdp_sanity_correction block
  • Tier 1 block kept, marked superseded_by
  • Affects: AS, MP, XK, CU, IR, SY, plus a few small territories with WID extrapolation artifacts
Imputation

For countries WID does not cover.

A small set of micro-states have no usable WID thresholds. The shape is borrowed from regional peers; the level is GDP-anchored.

  • Peers: same WB income group, prefer same WB region if 3+ peers exist
  • Shape: σ, α = median of peer fitted shapes
  • Level: μ = log(target_GDP × peer_median_ratio)
  • Flagged imputed: true per dimension, with confidence label (high/medium/low based on peer count)
05

What we check before publishing.

Per-country sanity checks plus cross-country audits. The audit's job is to surface things a careful reviewer would want to look at. It does not gate the build — final judgment is human.

Per-country

13 ✓/✗ checks.

  • μ, σ real, σ > 0, α > 1
  • Fitted median within 5% of source p50
  • Fitted p90 within 8% of source p90 (warning)
  • Patched p99 within 5% of source p99 (warning)
  • Percentile table strictly monotonic
  • Sources list non-empty
Cross-country audit

7 plausibility tests.

  • USD-converted income median rank vs GDP-per-capita rank
  • σ in plausible range per dimension
  • α in plausible range per dimension
  • Wealth-to-income median ratio in [0.3, 8.0]
  • Imputation peer count
  • σ vs Gini coefficient (when Gini available)
  • Last-updated freshness
06

What this model cannot do.

Honest limits matter more than confident-sounding numbers. The figures are directional comparisons, not personal financial guidance.

  • Pretax national income includes pensions, capital income, and undistributed corporate profits. It is not the same as net-of-tax salary.
  • Wealth bottom is heavy with debt; the fit between p10 and p25 is approximate.
  • The informal-economy correction is a level shift, not a shape change. Distributional effects of informality are not modelled.
  • Sanctioned and conflict-zone country data has irreducible quality issues. Tier 2 anchors them to GDP-implied; treat as directional only.
  • Currency conversion uses a single FX snapshot. Annual refresh is recommended; cross-currency comparisons can drift between snapshots.
  • Cohort dimensions (age, sector, region) are out of scope. So is PPP-USD as a third stored representation. Both are deferred.

Last reviewed 2026. The full per-country JSON, including raw thresholds and every correction block, is published alongside the page. The model is open: the math here is everything.