What you should know about this indicator
- This indicator combines data from two sources. From 1985 onwards, it draws on UNESCO administrative records. Before 1985, it uses adjusted enrollment ratios from Lee and Lee (2016) — modified gross enrollment ratios that account for grade repetition. These serve as the best available approximation of net enrollment rates for earlier periods, when age-specific enrollment data were not widely collected.
- The net enrollment rate shows what share of children are enrolled at the education level intended for their age — for example, a rate of 90% means 90% of children in the official age group are enrolled at that level.
- A rate below 100% doesn't necessarily mean those children are out of school — some may be enrolled at a different level than expected for their age.
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
- Pre-1985: Data comes from Lee and Lee (2016). Their enrollment ratios adjust for grade repetition, bringing them closer to a true net enrollment rate than raw gross enrollment ratios — though age-specific records needed for a true net rate were not widely available historically.
- 1985 onwards: Data comes from UNESCO OPRI, based on school censuses that track enrollment by individual age.
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: Net enrollment rate in primary education”, part of the following publication: Hannah Ritchie, Veronika Samborska, Esteban Ortiz-Ospina, and Max Roser (2023) - “Global Education”. Data adapted from UNESCO Institute for Statistics. Retrieved from https://archive.ourworldindata.org/20260622-142544/grapher/primary-enrollment-selected-countries.html [online resource] (archived on June 22, 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:
UNESCO Institute for Statistics (2026) – with minor processing by Our World in DataFull citation
UNESCO Institute for Statistics (2026) – with minor processing by Our World in Data. “Net enrollment rate in primary education” [dataset]. UNESCO Institute for Statistics, “UNESCO Institute for Statistics (UIS) - Education” [original data]. Retrieved June 24, 2026 from https://archive.ourworldindata.org/20260622-142544/grapher/primary-enrollment-selected-countries.html (archived on June 22, 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://ourworldindata.org/grapher/primary-enrollment-selected-countries.csv?v=1&csvType=full&useColumnShortNames=falseMetadata URL (JSON format)
https://ourworldindata.org/grapher/primary-enrollment-selected-countries.metadata.json?v=1&csvType=full&useColumnShortNames=falseExcel / Google Sheets
=IMPORTDATA("https://ourworldindata.org/grapher/primary-enrollment-selected-countries.csv?v=1&csvType=full&useColumnShortNames=false")Python with Pandas
import pandas as pd
import requests
# Fetch the data.
df = pd.read_csv("https://ourworldindata.org/grapher/primary-enrollment-selected-countries.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://ourworldindata.org/grapher/primary-enrollment-selected-countries.metadata.json?v=1&csvType=full&useColumnShortNames=false").json()R
library(jsonlite)
# Fetch the data
df <- read.csv("https://ourworldindata.org/grapher/primary-enrollment-selected-countries.csv?v=1&csvType=full&useColumnShortNames=false")
# Fetch the metadata
metadata <- fromJSON("https://ourworldindata.org/grapher/primary-enrollment-selected-countries.metadata.json?v=1&csvType=full&useColumnShortNames=false")Stata
import delimited "https://ourworldindata.org/grapher/primary-enrollment-selected-countries.csv?v=1&csvType=full&useColumnShortNames=false", encoding("utf-8") clear