What you should know about this indicator
- This indicator shows the average number of years that adults in a country have spent in formal education. It reflects what people have already completed — someone who finished high school counts as roughly 12 years, while someone who never attended school counts as 0.
- The data captures how much schooling adults have accumulated over their lifetimes, showing the results of past investments in education systems. Higher values indicate a population with stronger educational foundations, though the measure does not account for education quality or informal learning.
- This indicator combines two sources. From 1990 onward, it uses the UNDP Human Development Report, which draws on censuses and surveys of adults aged 25 and older — originally compiled from Barro and Lee, Eurostat, Demographic and Health Surveys, UNESCO, and UNICEF. For earlier years, it uses historical estimates from Lee & Lee (2016), which go back as far as 1870.
- The two sources cover slightly different age groups. UNDP measures adults aged 25 and older, while Lee & Lee covers the 15–64 range. This means the UNDP figure includes older, less-educated cohorts that Lee & Lee excludes, which can make the UNDP values slightly lower. In practice, the splice is clean — the median gap at the crossover is 0.8 years across 115 countries.
- The data may not reflect recent progress in countries with infrequent surveys or outdated census information.
Related research and writing
More Data on Global Education
Sources and processing
This data is based on the following sources
How we process data at Our World in Data
All data and visualizations on Our World in Data rely on data sourced from one or several original data providers. Preparing this original data involves several processing steps. Depending on the data, this can include standardizing country names and world region definitions, converting units, calculating derived indicators such as per capita measures, as well as adding or adapting metadata such as the name or the description given to an indicator.
At the link below you can find a detailed description of the structure of our data pipeline, including links to all the code used to prepare data across Our World in Data.
Notes on our processing step for this indicator
For each country, we use UNDP data from its earliest available year (typically 1990) onward. For years before that, we use Lee & Lee (2016) historical estimates.
Reuse this work
Citations
How to cite this page
To cite this page overall, including any descriptions, FAQs or explanations of the data authored by Our World in Data, please use the following citation:
“Data Page: Average years of schooling”, part of the following publication: Hannah Ritchie, Veronika Samborska, Esteban Ortiz-Ospina, and Max Roser (2023) - “Global Education”. Data adapted from Lee and Lee, UNDP, Human Development Report. Retrieved from https://oecd-education-attainment-di.owid.pages.dev:8789/20260518-093348/grapher/mean-years-of-schooling-long-run.html [online resource] (archived on May 18, 2026).How to cite this data
In-line citationIf you have limited space (e.g. in data visualizations), you can use this abbreviated in-line citation:
Lee and Lee (2016); UNDP, Human Development Report (2025) – with minor processing by Our World in DataFull citation
Lee and Lee (2016); UNDP, Human Development Report (2025) – with minor processing by Our World in Data. “Average years of schooling – UNDP” [dataset]. Lee and Lee, “Human Capital in the Long Run”; UNDP, Human Development Report, “Human Development Report” [original data]. Retrieved June 26, 2026 from https://oecd-education-attainment-di.owid.pages.dev:8789/20260518-093348/grapher/mean-years-of-schooling-long-run.html (archived on May 18, 2026).Download
Quick download
Download the data shown in this chart as a ZIP file containing a CSV file, metadata in JSON format, and a README. The CSV file can be opened in Excel, Google Sheets, and other data analysis tools.
Data API
Use these URLs to programmatically access this chart's data and configure your requests with the options below. Our documentation provides more information on how to use the API, and you can find a few code examples below.
Data URL (CSV format)
https://oecd-education-attainment-di.owid.pages.dev/grapher/mean-years-of-schooling-long-run.csv?v=1&csvType=full&useColumnShortNames=falseMetadata URL (JSON format)
https://oecd-education-attainment-di.owid.pages.dev/grapher/mean-years-of-schooling-long-run.metadata.json?v=1&csvType=full&useColumnShortNames=falseExcel / Google Sheets
=IMPORTDATA("https://oecd-education-attainment-di.owid.pages.dev/grapher/mean-years-of-schooling-long-run.csv?v=1&csvType=full&useColumnShortNames=false")Python with Pandas
import pandas as pd
import requests
# Fetch the data.
df = pd.read_csv("https://oecd-education-attainment-di.owid.pages.dev/grapher/mean-years-of-schooling-long-run.csv?v=1&csvType=full&useColumnShortNames=false", storage_options = {'User-Agent': 'Our World In Data data fetch/1.0'})
# Fetch the metadata
metadata = requests.get("https://oecd-education-attainment-di.owid.pages.dev/grapher/mean-years-of-schooling-long-run.metadata.json?v=1&csvType=full&useColumnShortNames=false").json()R
library(jsonlite)
# Fetch the data
df <- read.csv("https://oecd-education-attainment-di.owid.pages.dev/grapher/mean-years-of-schooling-long-run.csv?v=1&csvType=full&useColumnShortNames=false")
# Fetch the metadata
metadata <- fromJSON("https://oecd-education-attainment-di.owid.pages.dev/grapher/mean-years-of-schooling-long-run.metadata.json?v=1&csvType=full&useColumnShortNames=false")Stata
import delimited "https://oecd-education-attainment-di.owid.pages.dev/grapher/mean-years-of-schooling-long-run.csv?v=1&csvType=full&useColumnShortNames=false", encoding("utf-8") clear



