Skip to main content
ZipVitals

Archived release. You are reading this page frozen at the data release below — the numbers here will never change; this is the permalink to cite. The always-latest version is at the latest page.

About our own Score · a limit we found, and published

What income explains about a ZIP code’s health — and what it doesn’t

Wealthier ZIP codes score higher on this site. That is not a side effect we are working around — it is the largest single pattern in our data, and this page publishes the size of it.

ZipVitals Score: 2026 releaseIncome: Census ACS, 2020–2024Life expectancy: CDC USALEEP, 2010–2015

61%

of the variation in the ZipVitals Score, accounted for by median household income alone

+13.6

Score points, for every doubling of a ZIP code’s median household income

28%

of the variation in life expectancy — the same income figure, the same ZIP codes

All three figures are fitted on the same 21,774 ZIP codes — every full-coverage ZIP code that carries both a Census income estimate and a life-expectancy estimate.

How closely income tracks the Score

Rank every US ZIP code by median household income, then rank the same ZIP codes by their ZipVitals Score, and the two orders line up almost as tightly as two rankings can: a rank correlation of 0.785, where 1.00 would mean the two lists are identical and 0 would mean they are unrelated.

That is computed over the 22,858 full-coverage ZIP codes that carry a published Census income estimate. It is the widest pool on this page, and it carries no life-expectancy figure — the comparison above needs both, so it is drawn from the smaller set that has both.

This is an association. It is not a cause.

These are two things we observe about the same places. Nothing here establishes that income causes health, and no correlation could: income, the conditions it buys, and the conditions that produce it are entangled in ways this comparison cannot separate.

It is also a statement about ZIP codes, not about people. A ZIP code with a high median income contains households at every income, and no figure on this page describes any individual resident of anywhere.

Part of this is by construction — here is how much

The first fair question is whether income is inside the Score. Partly, yes, and we would rather publish the size of that than have you find it.

Median household income is one of the 83 measures the Score is computed from. It sits in the Social Need domain, that domain splits evenly across its five sources, and our Census source splits evenly across its eight figures — so income carries about 0.4% of the Score directly, on a ZIP code where every source is present. Where a source is missing the remaining ones are re-weighted to cover it, so income’s share is a little larger; every ZIP code on this page has all of them. Either way it is not the reason the two rankings line up.

The larger channel is indirect, and we already disclose it. Several domains read economic conditions — poverty, housing cost burden, unemployment, vehicle access — and the CDC’s ZIP-level disease estimates are themselves modelled partly on Census demographics. A score built from public data about places will read the economics of those places. That is set out in full in the collinearity note on our methodology page.

So some of this relationship is mechanical. Not all of it — and the next section is how we can tell the difference.

Read the full collinearity disclosure on our methodology page

The number we did not expect

Life expectancy is the one health outcome we deliberately keep out of the Score. It comes from small-area estimates built on actual death certificates rather than from survey models, and we hold it back so it can act as an independent check. On the 21,774 ZIP codes carrying both, income accounts for about 61% of the variation in our Score — and about 28% of the variation in life expectancy.

Read that plainly. Income tracks our index more closely than it tracks how long people actually live. Part of that is the construction described above. Part of it is that a composite built from many measures of documented conditions is smoother, and more economically patterned, than mortality is. Either way it is a real limit on the Score, and it is why we publish life expectancy beside the Score rather than folding it in.

One honest caveat on that comparison. Our life-expectancy figures describe 2010–2015 and our income figures describe 2020–2024. A ZIP code whose residents changed in between — through gentrification or rural decline — weakens the second number by an amount we cannot put a figure on. The gap between 61% and 28% is wider than that alone is likely to explain, but this is not a clean experiment and we will not present it as one.

What a lower Score in a lower-income place records

This whole page is about the fact that lower-income places score lower. That pattern records structural conditions — decades of disinvestment, environmental burden, and access to care that residents did not choose and cannot individually undo. It is a description of conditions in a place. It is never a verdict on a place or on the people who live there.

What income does not explain

The part income does not account for is neither noise nor small. Take just the ZIP codes whose median household income falls between $73,934 and $77,232 — a band about $3,300 wide, holding 1,143 ZIP codes. Their Scores still run from about 43 at the bottom tenth to 58 at the top tenth — a spread of about 14 points. Nationally that same spread is about 26 points.

Narrowing to one income band cuts the range by about 45%. It does not close it, and it never does at any income. Whatever else a ZIP code’s Score carries, most of that remaining spread is what income alone would not have told you.

What this means for reading a ZIP code’s Score

A high Score in a high-income ZIP code tells you less than it looks like. Much of it was predictable from income alone. The Score is most informative where it is not what income would lead you to expect.

The interesting ZIP codes are the ones that break the line — and we publish those separately, as the ZIP codes whose estimated life expectancy sits furthest above and below what income alone would predict.

See which ZIP codes break the line

What we tested and decided not to publish

We looked at ranking each ZIP code against communities of a similar income — “among places like yours, this one is in the top fifth” — and decided against it. The Census income estimate for a single ZIP code carries a margin of error of roughly 15%, wide enough that we often cannot say which income group a ZIP code belongs to in the first place. A rank inside an undetermined group moves by roughly a quarter of the whole scale as the income estimate moves across its own range, which is more than the rank was ever going to tell you.

Distance from a fixed national line is a different quantity: it moves smoothly, and by an amount we can compute, when income moves. So for that we can say, ZIP code by ZIP code, whether the gap is larger than our own uncertainty about the input — and where it is, we publish it. Explaining what we declined to build is a fairer answer than a rank we would have had to caveat into meaninglessness.

Score by income group

Every ZIP code with a published income, sorted into 20 equal-sized income groups. Each row states how many ZIP codes it holds and how many of those carry a life-expectancy estimate, so both pools on this page are checkable from the table itself — and from the download.

Median household income group, with each group’s average, bottom-tenth and top-tenth Score, its average life expectancy, and both of its counts
Median household incomeZIP codesAverage ScoreBottom tenthTop tenthAverage life expectancy…with an estimate
$2,499$40,2081,14334.823.547.375.831,073
$40,208$46,9551,14338.629.447.975.931,096
$46,957$51,4531,14341.432.850.876.641,095
$51,458$55,2371,14342.935.250.876.801,076
$55,242$58,7501,14344.436.352.177.281,092
$58,750$61,6671,14345.738.053.277.571,103
$61,667$64,4941,14346.839.653.677.881,083
$64,494$67,5741,14348.341.054.978.181,098
$67,576$70,8541,14349.042.055.978.431,096
$70,855$73,9341,14249.943.156.278.731,103
$73,934$77,2321,14350.943.457.778.871,100
$77,232$80,9381,14351.444.158.079.111,100
$80,938$85,2531,14352.745.759.479.371,104
$85,253$89,7121,14353.746.960.279.531,089
$89,712$95,2501,14354.947.761.879.811,090
$95,250$102,3231,14356.348.663.480.091,085
$102,333$110,6421,14358.351.465.280.481,083
$110,661$123,2031,14360.153.466.280.811,067
$123,228$146,2851,14362.956.168.981.261,072
$146,380$250,0011,14267.360.373.582.471,069

Cite this page

The permalink /insights/income-and-health/2026-c0e0b3b0 resolves to this exact release and never changes — it will keep serving these exact figures after the data updates.

How this was computed

  1. Sources and measurement windows. The ZipVitals Score — our composite of nine health domains, 2026 release. Median household income: Census American Community Survey 5-year estimates, 2020–2024 release. Life expectancy at birth: CDC USALEEP, the 2010–2015 abridged life tables — small-area estimates built from actual death certificates, and the most recent ZIP-level release that exists. All three windows travel with every number on this page.
  2. Who is in, and who is not. We start from the 24,186 ZIP codes measured on all nine scoring domains — the same full-coverage pool our national lists draw from. 22,858 of those carry a published median household income, and 21,774 of those also carry a life-expectancy estimate. 1,328 full-coverage ZIP codes publish no income and 1,084 more publish no life expectancy; they are left out, never filled in from a county or a state.
  3. Which figures come from which pool. The two “accounts for” figures and the points-per-doubling figure are fitted on the 21,774 ZIP codes carrying both measures, because a comparison between them is only fair on the same places. The rank correlation, the national spread and the table below run on the wider 22,858. No figure on this page mixes the two, and every row of the table publishes both of its own counts.
  4. The two fitted lines. Both are ordinary least-squares fits of one variable on the natural logarithm of median household income — a log scale, because a $10,000 difference means something very different at $30,000 than at $200,000. The first fits the ZipVitals Score (R² = 0.612), the second fits life expectancy (R² = 0.280); R² is the share of the ZIP-to-ZIP variation the line accounts for, which is the “about 61%” and “about 28%” above. The Score line’s slope is 13.6 Score points per doubling of income.
  5. The rank correlation. Spearman’s ρ between median household income and the ZipVitals Score — the correlation of the two RANKINGS rather than of the two values, so it is unaffected by how income is scaled. On this release it is 0.7851 across 22,858 ZIP codes.
  6. The income groups and the spread. The table sorts every ZIP code with a published income into equal-sized groups by income and reports each group’s average Score, its bottom-tenth and top-tenth Scores, and its average life expectancy where one exists. The spread figures above come from the middle group and from the national distribution, both at the tenth and ninetieth percentile.
  7. Re-run it yourself. The whole derivation is one committed script in our repository, pinned to the three releases named above, and the figures it produces are committed beside it rather than recomputed when this page loads — which is what lets an archived copy of this page keep serving the exact numbers it was cited for. The full table is downloadable as CSV under CC BY 4.0.