Visualization

Child Poverty by School District, 2024

An interactive map and rankings built from the Census Bureau's Small Area Income and Poverty Estimates.

Eric Pachman Headshot

Eric Pachman

Published
June 9th 2026

default

Purpose

This post answers a question that is technically public but hard to visualize: what share of school-age children live in poverty in your school district — and how does it compare to every other district in the country?

The number exists. The U.S. Census Bureau publishes it every year, district by district, in its Small Area Income and Poverty Estimates (SAIPE). But the Census's own tool surfaces it one district at a time, through a filterable table built for data retrieval, not for seeing a pattern. There has been no way for an ordinary reader to take in the national picture at a glance, find their own district by tapping a map, and understand where their community sits relative to the rest of the country.

That national picture is stark. Across the 13,073 districts we map, 14.4% of school-age children — about 7.9 million of 54.4 million children ages 5 to 17 — lived in families in poverty in 2024. But that single figure hides enormous local variation: district rates run from effectively zero to over 65%. A child's odds of growing up poor are not a national fact. They are a local one, and they vary by an order of magnitude between districts that are sometimes only a county apart.

We present this in two pieces. The heat map shows the national texture — every district shaded by its child poverty rate, built for pattern. The rankings table is the lookup beside it — the highest- and lowest-poverty districts nationally, and within any single state, built for names. They share a source, a definition, and a formula; what differs is how each is constructed, documented below.

This page is meant to be specific enough that you could rebuild both yourself with public data and the steps described here.

What this page is

Every chart we publish should be something you can check, question, and rebuild yourself. This page lays out every methodological decision behind both visualizations: the data source, the boundary join, the geographic simplification, the population floors, the color thresholds, and the calls we made along the way. None of it is proprietary. The estimates are the Census Bureau's own published numbers, the boundaries are the Census's own shapefiles, and the math is a single division.

Our contribution is not new data. It is legibility: assembling the Census's estimates and its boundary files into views that let you see the state-by-state, district-by-district pattern at a glance — something the official interface does not do well.

We also want to be direct about what we don't know. Where we made judgment calls — what counts as "too small to trust," where to draw the color lines — we say so. Where there are known limitations, we list them in the "Honest notes" section near the bottom.

The data source

We use one public series and one set of public boundary files, each doing a specific job:

  • Census SAIPE School District Estimates, 2024 release (published January 27, 2026) provides every number in both visualizations. SAIPE is a model-based estimate — it blends the American Community Survey with administrative records (federal tax data, SNAP participation, population estimates) to produce a single annual figure for every school district in the country. It is the only source that estimates child poverty consistently at the district level for all districts nationwide. We use the field the Census labels "related children ages 5 to 17 in families in poverty," divided by the district's estimated population of children ages 5 to 17, to produce a poverty rate.
  • Census TIGER/Line cartographic boundary files, 2024 vintage provide the district shapes for the map. We use three layers — unified, elementary, and secondary school districts — because not every part of the country is covered by a single unified district. These are the generalized ("cartographic") boundaries, simplified by the Census for mapping rather than the full-resolution legal boundaries.

The join key between estimates and boundaries is the GEOID: a state FIPS code followed by the five-digit local education agency (LEA) code. SAIPE reports state FIPS and district ID separately; we zero-pad and concatenate them to match the TIGER GEOID. This key matched 13,073 of the SAIPE records to a geometry — 98.1% of districts, accounting for 99.8% of the school-age population. The unmatched remainder is discussed in the Honest notes.

The rate

Both visualizations rest on the same single calculation. For each district:

Child poverty rate = (related children ages 5–17 in families in poverty) ÷ (population of children ages 5–17)

Both numbers come from the same SAIPE record, so the rate is internally consistent — numerator and denominator are the same vintage, same population definition, same model. We do not adjust, smooth, or model anything on top of the Census estimate. Every district's color on the map, and every rate in the table, is the direct output of this one division.

A note on which "poverty rate" this is. The Census also publishes a widely cited national figure — the median district poverty rate, which is a different statistic. Our headline number, 14.4%, is the population-weighted aggregate: of all 54.4 million school-age children in mapped districts, 14.4% were in poverty. That is the honest way to summarize "how many children," and it is distinct from the median district, which runs lower because the many small, low-poverty districts pull the middle of the distribution down. We use the aggregate and label it as such.

The map

Suppressing unstable small districts

A district with 40 school-age children and 8 in poverty has a "20% rate," but that number is statistically fragile: one family moving in or out swings it by several points, and SAIPE's model carries a wide margin of error on small populations.

On the map we gray out every district with fewer than 100 school-age children rather than assign it a color. This affects 824 districts — about 6% of the map by count, but a vanishingly small share of children. The choice is deliberate: a color implies a reading, and on these districts the reading isn't trustworthy. Graying them is more honest than coloring them.

This is a judgment call. A reasonable analyst could set the floor at 50 or 250 and not be wrong. We chose 100 because it removes the districts where a single family meaningfully moves the rate, without erasing genuinely small rural districts that still have enough children to estimate.

Color thresholds

The color tiers are fixed. They do not rescale to the visible data. A relative scale that re-stretched to whatever was on screen would make every view look equally severe and would hide the magnitudes that matter — the whole point is that a 60% district and a 6% district should never share a color.

The thresholds are round and absolute:

  • 0–5%
  • 5–10%
  • 10–15%
  • 15–20%
  • 20–25%
  • 25–30%
  • 30%+

We chose evenly spaced round bins rather than quantiles (which would put an equal number of districts in each color). Quantile bins flatter the eye but distort the meaning: they would make the distance between a 4% district and a 7% district look the same as the distance between a 30% and a 55% district. Round, equal-width bins keep the visual distance proportional to the actual difference in child poverty. The sequential coral ramp runs light (low) to dark (high), so darker always means more children in poverty, with no exceptions.

Geographic simplification

The full-resolution boundaries for 13,073 districts are far too heavy to load in a browser. We simplify the geometry — reducing the number of points in each boundary — until the file is light enough to ship while the shapes still read correctly at map scale.

This was the single hardest engineering step, and it carries one honest trade-off. Over-aggressive simplification doesn't just round off corners; it can collapse a district's smaller sub-polygons (islands, detached parcels) into degenerate slivers that render as lines spanning the map. We tuned the simplification tolerance to eliminate those artifacts and pruned the degenerate sub-polygons, verifying district-by-district that no boundary "floods" across the map. We also rejected a more aggressive compression (TopoJSON quantization) that would have produced a much smaller file, because it reintroduced jagged, visibly wrong borders. We chose correct-but-larger over small-but-wrong.

The projection is Albers USA, which relocates and rescales Alaska and Hawaii into an inset so the whole country fits one frame. All 13,073 districts render, including Alaska's 52 districts, Hawaii's single statewide district, and the District of Columbia.

The rankings table

A stricter population floor

The table applies a stricter floor than the map. We include only districts with at least 500 school-age children, against the map's floor of 100.

The reason is that rankings are more dangerous than colors. On the map, a small, statistically fragile district is one shaded cell among thousands. In a "highest poverty" ranking, that same fragile district can vault to the top of the list on the strength of a few children — and a list of extremes is exactly where unstable small-population estimates do the most damage. Raising the floor to 500 keeps the rankings populated by districts substantial enough that their rate reflects a real population rather than a small-sample artifact. This leaves 9,335 districts eligible for ranking.

This is a judgment call, and a conservative one. We would rather omit a genuinely high-poverty tiny district than headline a ranking with a number that a single family could move several points.

Ranking and the state filter

The table offers two views, highest poverty and lowest poverty, each a simple sort of the eligible districts by rate. It shows the top 25 in the current scope.

A state filter changes the scope. With no state selected, the ranking is national — the 25 highest- or lowest-poverty districts in the country. Select a state and the same ranking recomputes within that state alone: the 25 highest- or lowest-poverty districts there. The computation happens live from the full list of 9,335 districts, so every state's ranking is the true within-state ordering, not a national list filtered down.

For two jurisdictions — the District of Columbia and Hawaii — there are too few districts above the 500-child floor to rank meaningfully (each is essentially a single large district). The table shows an explicit "not enough qualifying districts" message rather than a misleading one-row "ranking."

Verification

Because everything here rests on two operations — reading the right columns and joining the right boundary — we verified both ends against the Census's own public tool. We pulled two districts at the extremes of the distribution and checked every field by hand: Helena-West Helena, Arkansas (the highest-poverty large district, 66.5%) and a low-poverty comparison. Both matched the Census tool exactly — child counts, poverty counts, and rates. A column misread or a join error would have shown up as a mismatch on these checks. They didn't.

Honest notes and limitations

We'd rather tell you the edges of this than have you find them.

These are model estimates, not a census count. SAIPE is a statistical model, not a head count. Every district figure carries a margin of error, wider for smaller districts. Both visualizations show the point estimate — the Census's single best number — without the error band around it. Two districts a few points apart may not be reliably different: on the map, small gaps between adjacent districts should be read with caution; in the table, a district is best read as "clearly near the top or bottom," not "precisely rank #14." The big contrasts (single digits vs. 40%+) are real.

A "rate" is not a count. A high-poverty rate in a small district can represent fewer children than a moderate rate in a large one. The map encodes the rate; the table shows the underlying counts (children in poverty, total children) in every row so you can see the scale behind each rate. Read them together when the absolute number of children matters to your story.

The two views use different population floors. The map grays out districts under 100 school-age children; the table excludes districts under 500 entirely. This is intentional — a ranking of extremes is the worst place to put a fragile estimate, so we hold it to a higher bar than a single shaded cell. A district can therefore appear on the map but not in the rankings. Both floors are our choices, not the Census's; the full estimates for every district are in the source file.

58 districts didn't match a boundary and aren't on the map. Of the SAIPE records, 58 (0.17% of the national school-age population) didn't join to a 2024 TIGER geometry — mostly Vermont supervisory unions, whose administrative structure doesn't map cleanly to a single drawn district. These are absent from the map rather than misplaced. Forty-five states have every district mapped.

The boundaries are generalized. We use the Census's cartographic (simplified) boundaries, then simplify them further for the browser. They are accurate for identifying and comparing districts at map scale. They are not survey-grade legal boundaries and should not be used to determine whether a specific address falls inside a specific district.

This is a public-data tool, not a private database. Every input is published free by the Census Bureau. The estimates, the boundary files, and the rate formula are all public. If a researcher wanted to verify any number in either visualization, the underlying data is downloadable. Our contribution is assembling the public pieces into a national view that the official tool doesn't offer.

Reproduce it yourself

If you want to rebuild these visualizations, you need:

  1. Census SAIPE School District Estimates, 2024 release — the fixed-width district file (ussd24.txt) and its record layout. The fields you need are state FIPS, district ID, district name, population ages 5–17, and related children ages 5–17 in poverty.
  2. Census TIGER/Line cartographic boundary files, 2024 vintage — the unified (unsd), elementary (elsd), and secondary (scsd) school district layers, merged. (Needed for the map only.)
  3. The join key — state FIPS + zero-padded five-digit LEA code = TIGER GEOID.
  4. The rate formula, the small-district floors (100 for the map, 500 for the table), and the fixed color bins.

That is everything. There is no proprietary data, no model of our own, no fitted parameters. If you replicate our process and get different numbers, we want to know. Tell us, and we'll look.

Support Data That Serves the Public

Data should empower people, not just institutions. Your support helps us create accessible research, visualizations, and tools that uncover economic inequality and inform better decisions.

Donate
Donate today

Enjoying this post?

Tell others about it.


More articles like this

Fetching Related Posts

There are no other articles tagged with Visualization