Data Methodology

A plain-language explanation of where our salary data comes from, how we process it, and what to keep in mind when using it.

Last updated:

Data sources

Salary data is aggregated from multiple publicly available sources and cross-referenced to reduce outliers. No single survey is used in isolation.

SourceCoverage & notes
U.S. Bureau of Labor Statistics (BLS)Official occupational employment and wage statistics. Used as a primary anchor for U.S. figures — updated annually.
Glassdoor Salary DatabaseSelf-reported salary data from employees. Strong global coverage but subject to reporting bias toward tech and white-collar roles.
LinkedIn Salary InsightsAggregated from LinkedIn member-reported salaries. Used for role + country median triangulation.
PayScale ResearchSurvey-based compensation data used for experience-band differentiation (junior / mid / senior).
Indeed Salary TrendsUsed for spot-checking non-U.S. regions and low-survey-density countries.
National statistics bureauxWhere available, official national labour statistics (e.g., ONS for UK, Destatis for Germany, ABS for Australia) override crowd-sourced figures.

Salary percentiles

We report salaries as a distribution rather than a single number, because "average salary" can be heavily skewed by a small number of very high earners. Instead, we use five percentile benchmarks:

LabelPercentileWhat it means
p1010thOnly 10% of workers in this role earn less. Represents entry-level or low-paying markets.
p2525thLower quartile — a common floor for junior roles in mid-cost markets.
p50 (median)50thThe midpoint. Half earn more, half earn less. This is the primary headline figure we display.
p7575thUpper quartile — reflects experienced mid-career professionals in higher-paying markets.
p9090thTop earners — senior roles, high-cost cities, or specialist niches.

We also break down salary by experience level — junior (0–3 years), mid (3–7 years), and senior (7+ years) — where the underlying data has sufficient sample size to support that split reliably.

PPP adjustment

Purchasing Power Parity (PPP) adjustment is a method of normalizing salaries for the cost of living in each country. A $60,000 salary in India is worth far more in real purchasing power than $60,000 in Switzerland, because prices for goods and services differ enormously between the two countries.

We source PPP conversion factors from the World Bank International Comparison Programme (ICP) and the OECD Purchasing Power Parities dataset. Each country has a ppp_factor which represents the number of local currency units needed to buy what $1 USD buys in the United States.

PPP-adjusted salary is displayed alongside the raw USD figure on every role and country page so you can compare real purchasing power, not just nominal pay. The ppp_factor is also included in the public API response for programmatic use.

Currency conversion

All salary figures in our database are stored in USD. When displaying local currency equivalents (e.g., GBP for the United Kingdom, EUR for Germany), we convert using live exchange rates from the European Central Bank (ECB) via the Frankfurter API. Rates are updated daily.

Note that the Currency Converter tool on this site uses the same ECB source and is independent from salary data — it is useful for real-time spot conversions, not salary normalization. Salary pages use a daily-refreshed snapshot to keep figures stable across page loads.

Update frequency

Salary data: Updated at least monthly. We re-run our aggregation pipeline at the start of each month and tag records with the survey year. Role and country pages display a "Last updated" timestamp.

Exchange rates: Refreshed daily from the ECB. Currency converter pages fetch live rates on every page load.

Cryptocurrency prices: Updated every 60 seconds from CryptoCompare. Historical data is not stored — the crypto tool is for real-time reference only.

PPP factors: Updated annually following the World Bank ICP release cycle (typically Q2).

Limitations

  • Self-reporting bias: Glassdoor and LinkedIn data relies on voluntary submissions, which tend to skew toward tech, finance, and white-collar roles in major cities. Lower-paid or informal sectors are underrepresented.
  • Geographic granularity: Figures represent country-level medians. Within-country variation (e.g., New York vs. rural Mississippi) is not captured. A country median for the United States will differ significantly from a New York City figure.
  • Sample size: For smaller countries or niche roles, data points may be limited. Where sample size falls below a confidence threshold we show a wider range and flag lower reliability.
  • Currency volatility: Local-currency equivalents are converted using daily ECB rates, which can shift significantly for countries with volatile currencies (e.g., TRY, ARS). Treat local currency figures as approximate.
  • Total compensation: Figures represent base salary only unless explicitly noted. Bonuses, equity, benefits, and other compensation are excluded because they vary widely and are harder to survey reliably.

Methodology questions

The median (p50) is more representative than the mean for salary data because it is not pulled upward by a small number of extreme earners. A few very high salaries at a tech company can inflate the mean significantly while most workers earn much less — the median reflects the typical experience.