DRAFT - WORK IN PROGRESS Send feedback

Policy explorer

NAEP score gaps and what policy can do

This tool compares scores on the National Assessment of Educational Progress (NAEP) in reading and math between any two test years from 2005 to 2024. It looks across the full range of scores, from the lowest-scoring students to the highest, not just the average. You can also design a program or policy change, such as tutoring or summer school, and see how it could move scores in the best case: the program works as well as the research suggests, and its effect does not fade.

What you are looking at

NAEP

NAEP, often called the Nation's Report Card, tests a nationally representative sample of students in grades 4, 8, and 12. It gives the same test the same way every time, so scores can be compared across years.

Different students each time

The students tested in 2024 are not the ones tested in 2019. The tool compares 2024's fourth graders with 2019's fourth graders, and the same for grades 8 and 12. It does not measure how much any one student lost or gained.

Percentiles

Line up every student from lowest score to highest. A student at the 10th percentile scored above 10 percent of students; the 50th percentile is the middle; the 90th is near the top. NAEP reports scores at the 10th, 25th, 50th, 75th, and 90th percentiles.

The widening gap

Between 2019 and 2024, in every subject and grade here, scores fell more at the 10th percentile than at the 90th, so low and high scorers ended up further apart.

Standard deviations

Researchers usually report a program's effect in standard deviations (SD), a unit that lets different tests be compared. The tool uses SD for both the change and the program, measured in the reference year's SD.

How to use it

Pick a subject and grade and the two years to compare, then set up the program. The chart shows how far each percentile sits from its 2019 score in 2024, with and without the program. Zero means back to 2019.

Estimates from research:

Examples from research:

3 · Who takes part How this works

4 · Who gains most How this works

5 · How to count How this works

Drop undone · 10th percentile
Drop undone · middle (50th)
90–10 gap

With and without the program

In standard deviations. Below zero means below the 2019 score.

2024, no program 2024, with the program Drop the program undoes Above the 2019 score

Percentile, from lowest-scoring students (left) to highest (right)

Who takes part, and how much they gain

Share of students taking part
Boost for students who take part (SD)

By economic status

Economically disadvantaged students and everyone else

Each group against its own 2019 score, in standard deviations. Percentiles are within each group.

Disadvantaged, no program Disadvantaged, with the program Not disadvantaged, no program Not disadvantaged, with the program

Percentile within each group, from lowest-scoring students (left) to highest (right)

At the five percentiles NAEP reports

Method

How the tool works

This is a summary. The methods page explains each step in full, with the sources behind every preset.

NAEP publishes scores at five percentiles, and the share of students in every 10-point band of the score scale. The tool draws a smooth curve through both to fill in every score level. The charts run from the 10th to the 90th percentile, because scores beyond them are measured much less precisely.

Changing who takes part does not change how many take part. The tool moves the same number of seats between low and high scorers. No group can go above 100 percent; any extra seats go to groups that still have room. The boost works the same way, so its average across all students stays at the value you set. The one exception is "Economically disadvantaged only": seats go at random to eligible students, so a program with more seats than eligible students leaves the extra seats empty.

The two ways of counting give different answers when only some students at a score level take part. "All students" lines everyone up again after the program. Students who took part can move past classmates who did not, so a program that reaches only some students spreads scores out. "Same students" follows each starting group and averages its gain. The two agree when everyone at a score level takes part, or no one does.

The tool assumes that, among students with the same score, those who take part would gain as much as those who do not. A share above 100 percent means a percentile ends up above its 2019 score.

Technical notes

The dashed curve is D(p)/S, the 2024 quantile minus the 2019 quantile at percentile p, divided by the 2019 national standard deviation S for that subject and grade. The restoration requirement g*(p) = −D(p)/S is the same curve with the sign flipped. Quantile functions pass through the published percentiles and the cumulative 10-point score distribution (NAEP DP:DP), joined by monotone (Fritsch–Carlson) interpolation; the score bins bound the support, so no tails are assumed. Participation and the treated effect are linear in prior rank with mean held fixed; participation is capped at 1 and water-filled to conserve the seat budget. Under the eligibility screen, participation at rank p is r·s(p), where s(p) is the 2024 share of economically disadvantaged students at p (from the ECONDIS score distributions) and r = min(1, B / e), with e their share of all students; the screen spends min(B, e).

"All students" is the distributional estimand: post-program quantiles of the exact treated/untreated mixture, calibrated to reproduce the published knots. "Same students" is the group estimand, Q(p) + π(p)δ(p). The R pipeline in analysis/ is the reference implementation; analysis/tests/test-tool-engine.mjs checks this page against it.