Methodology & Data Sources

Populations and vintages

The published surface is one population: 31 European countries with Eurostat-comparable price levels (31 currently carry an overall cost index), data year 2024. Every ranking, comparison, calculator input and country page draws from that same Europe-filtered query set. Warehouse seed rows outside Europe are retained for ETL provenance only and are not routed, ranked or counted here, because they are not on the EU-27 = 100 scale and would mix incompatible methodologies if shown alongside Eurostat figures.

Data sources

Country price-level indices and median incomes are loaded from archived official pulls, never hand-typed:

  • Eurostat comparative price levels (prc_ppp_ind, PLI_EU27_2020) – overall actual individual consumption (A01) plus category indices (housing & utilities, food, transport, health, household energy, restaurants & hotels), EU-27 = 100. Unpublished category cells stay NULL (for example UK, US and Japan publish overall A01 only in the latest period).
  • Eurostat income statistics (ilc_di03) – median equivalised net income (EUR). Economies without an ilc_di03 row show no income figure.
  • OECD PPP_P41 ÷ EXC_A rebased on EU27_2020 – overall index only for economies outside the Eurostat category set (for example Australia, Canada, Israel, Korea, Mexico, New Zealand, Singapore), labelled “OECD-derived, EU-27 = 100”.

Refresh path: node scripts/etl/fetch-eurostat.mjs archives the latest Eurostat JSON under /storage/plaincostofliving/raw/eurostat/, then the ETL rebuilds the database from that archive plus the OECD PPP CSV. See “Accuracy & updates” below.

Coverage

Rankings and Europe-filtered hubs publish countries on the Eurostat EU-27 = 100 scale (data year 2024). Each of those rows carries an overall cost index plus up to six category indices (housing & utilities, groceries, transport, healthcare, household energy, dining) and median net income when Eurostat publishes them. A separate set of non-European country pages (for example Australia or the United States) shows an overall index only, Eurostat A01 where published, otherwise an OECD-derived PLI, with unpublished category cells left blank. City warehouse rows stay off the published rankings surface.

What a price-level index means

A comparative price-level index measures what an identical basket of goods and services costs in each country, benchmarked to the EU-27 average of 100. An index of 120 means prices are roughly 20% above the EU average; 80 means about 20% below. Because the basket is the same everywhere, the figures are directly comparable across countries, they strip out exchange-rate distortion and differences in what people typically buy, which raw local prices cannot.

Affordability (best value)

A low price level alone does not mean a high standard of living, because incomes differ too. To capture real affordability we divide a country's median net income by its overall price-level index:

affordability = median net income ÷ cost index × 100

A higher score means a typical income stretches further against local prices. This is the basis of the best-value ranking, and it explains why the cheapest countries are not always the ones where people live best.

Corpus placement (#N of M)

Every published country page states where that country sits in PlainCostOfLiving's own European corpus. Placement is computed with SQL ROW_NUMBER over the same Europe-filtered set used by the rankings - never hand-picked and never invented.

  • Overall cost index - rank among European countries with a published cost_index > 0, cheapest first (same basis as /rankings/cheapest-overall/). Rank #1 is the lowest price level.
  • Cost-adjusted income - rank among countries with both median net income and cost_index, highest affordability first (same basis as /rankings/best-value/). Rank #1 is the strongest purchasing power.

City pages are noindexed (empty sitemap-cities) and are not part of this corpus-placement surface. The Callout on each country page names both signals when available and links here so the derivation stays visible.

The cost-of-living calculator

To estimate the income needed to maintain the same standard of living when moving between countries, the calculator scales the income you enter by the ratio of the two price levels:

equivalent income = your income × (destination index ÷ origin index)

This is a directional estimate based on national-average price levels, not a personal budget. It does not account for your specific housing, lifestyle or city, which can move real costs well above or below the national figure.

Category indices

Beyond the headline figure, each country carries six category price levels on the same EU-27 = 100 scale, so you can see where the cost difference actually sits:

  • Housing & utilities - Eurostat A0104 (housing, water, electricity, gas and other fuels). Not a rent-only index; Eurostat does not publish a rent-only PLI in this extract.
  • Groceries - food and non-alcoholic beverages (A0101).
  • Transport - A0107.
  • Healthcare - A0106.
  • Utilities (household energy) - A010405 (electricity, gas and other fuels), overlapping the housing group but kept as its own published slice.
  • Dining - restaurants and hotels (A0111).

When Eurostat does not publish a category for an economy in the latest period, that cell is NULL on the page, never filled from another source.

Accuracy & updates

Every displayed country index is the value in the archived Eurostat or OECD pull for that release, not a hand-rounded estimate. When Eurostat publishes a new prc_ppp_ind / ilc_di03 vintage, we re-run fetch-eurostat.mjs, rebuild the database, and ship the updated figures. Prior years stay in countries_release_history so release-over-release change can be computed without overwriting the previous extract. If you spot a value that looks wrong, tell us the country and category and we will compare it to the archived raw JSON.

Limitations

  • Price levels are national averages; capitals and large cities typically run above the national figure.
  • Eurostat’s comparative price-level programme is densest for EU and associated European countries. Non-European country pages use Eurostat A01 when published, otherwise an OECD-derived overall PLI, and never invent missing category cells.
  • Figures reflect the latest archived statistical-agency release and may lag very recent price movements.
  • PlainCostOfLiving is not affiliated with Eurostat, the OECD, or any government agency. The site is for information only and is not personal financial advice.

Open Data

Download the compiled country price-level extract as country-cost-statistics.csv (same CSV as the homepage and /statistics Dataset). Underlying Eurostat fields remain public-source; cite PlainCostOfLiving when you reuse the compiled table.

Contact

Questions about our methodology? Contact us.