Twelve censuses of tract counts, spread over the city’s land, smoothed and drawn as ground that rises with density.
For each decennial census from 1910 to 2020, the number of people living per square mile around every point in New York City, averaged over roughly an eighth of a mile. The ground is raised and colored by that density. The colors follow the legend exactly, and thin dark contour lines mark 25,000, 50,000, 100,000, 200,000 and 400,000 people per square mile. The height also rises with density, compressed slightly at the top (height is proportional to density to the 0.85 power) so the 1910 Lower East Side does not hide everything else. Light comes from the northwest and casts shadows to the southeast. The map can be tipped and turned to see the heights from the side; the vertical scale is exaggerated for reading, not drawn to any real distance.
Between census years the map blends the two neighboring censuses in a straight line. The year counter moves through those in-between years, but only the census years are data.
All population counts are the Census Bureau’s own tract tables, as compiled by IPUMS NHGIS at the University of Minnesota. New York City was one of eight cities the bureau divided into census tracts in 1910, which is why the map starts there. NHGIS also supplies the tract boundaries for 1910 through 2000. For 2010 and 2020 the boundaries are the Census Bureau’s cartographic boundary files. The city’s land, used to keep people out of the rivers and the harbor, is the Department of City Planning’s borough boundaries clipped to the shoreline (NYC Open Data gthc-hcne).
Citation: Jonathan Schroeder, David Van Riper, Steven Manson, Grace Cooper, Zachary Krause, Tracy Kugler, Tsu Zhu and Steven Ruggles. IPUMS National Historical Geographic Information System: Version 21.0 [dataset]. Minneapolis, MN: IPUMS. 2026. doi.org/10.18128/D050.V21.0. NHGIS’s terms do not allow redistributing its tables, so this project publishes only the smoothed density grids derived from them. The scripts below fetch the original tables from NHGIS.
“Tract sum” is the number of people the map places on the grid. “Not placed” counts people in tract records that have no boundary in any nearby census; they are left off the map.
| Census | NHGIS dataset | Table | Boundaries used | Tracts with people | Tract sum | Official city total | Difference | Not placed |
|---|---|---|---|---|---|---|---|---|
| 1910 | 1910_tPop_NYC | NT5, Sex by Race/Nativity (all cells summed) | 1910 tracts | 702 | 4,766,883 | 4,766,883 | +0.00% | 0 |
| 1920 | 1920_tPop_NYC | NT1, Population, 1910 and 1920 (1920 column) | 1920 tracts | 1,357 | 5,589,655 | 5,620,048 | -0.54% | 20,590 |
| 1930 | 1930_tPop_NYC | NT3, Sex by Race (all cells summed) | 1930 tracts | 3,055 | 6,942,834 | 6,930,446 | +0.18% | 542 |
| 1940 | 1940_tPH_NYC | NT1, Total Population | 1930 tracts (see note) | 3,068 | 7,450,784 | 7,454,995 | -0.06% | 4,211 |
| 1950 | 1950_tPH_Major | NT1, Total Population | 1950 tracts | 2,358 | 7,891,954 | 7,891,957 | -0.00% | 0 |
| 1960 | 1960_tPH | NTSUP2, Total Persons | 1960 tracts | 2,155 | 7,783,314 | 7,781,984 | +0.02% | 0 |
| 1970 | Time series D08 (nominal tracts) | Persons under 18 plus persons 18 and over | 1970 tracts | 2,151 | 7,892,489 | 7,894,862 | -0.03% | 2,360 |
| 1980 | Time series D08 (nominal tracts) | Persons under 18 plus persons 18 and over | 1980 tracts | 2,160 | 7,070,529 | 7,071,639 | -0.02% | 1,000 |
| 1990 | Time series D08 (nominal tracts) | Persons under 18 plus persons 18 and over | 1990 tracts | 2,192 | 7,322,301 | 7,322,564 | -0.00% | 263 |
| 2000 | Time series D08 (nominal tracts) | Persons under 18 plus persons 18 and over | 2000 tracts | 2,193 | 8,008,278 | 8,008,278 | +0.00% | 0 |
| 2010 | Time series D08 (nominal tracts) | Persons under 18 plus persons 18 and over | 2010 tracts (Census cartographic file) | 2,140 | 8,175,133 | 8,175,133 | +0.00% | 0 |
| 2020 | Time series D08 (nominal tracts) | Persons under 18 plus persons 18 and over | 2020 tracts (Census cartographic file) | 2,292 | 8,804,190 | 8,804,190 | +0.00% | 0 |
The most crowded square mile is the 20-by-20-square window, anywhere on the grid, that holds the most people before smoothing. Because people are spread evenly within each tract, it is an estimate. Its location is named by the 2020 Neighborhood Tabulation Area under its center. Manhattan’s share counts the people placed inside Manhattan’s borough boundary. Before 1914 the Bronx was part of New York County, so the boundary, not the county field in the census tables, decides which borough a 1910 tract belongs to. For 1970 through 2010 the placed borough totals were compared with the sums of the Department of City Planning’s community-district counts (xi7c-iiu2) and agree within 0.8 percent for every borough.
| Census | People in the most crowded square mile | Centered in | Center (lat., long.) | Share in Manhattan |
|---|---|---|---|---|
| 1910 | 383,000 | Lower East Side | 40.7182, -73.9855 | 48.9% |
| 1920 | 290,000 | Lower East Side | 40.7211, -73.9845 | 40.6% |
| 1930 | 175,000 | East Village | 40.7218, -73.9836 | 26.9% |
| 1940 | 165,000 | East Harlem (South) | 40.7954, -73.9433 | 25.3% |
| 1950 | 169,000 | East Harlem (South) | 40.7954, -73.9443 | 24.8% |
| 1960 | 146,000 | Harlem (South) | 40.8056, -73.9480 | 21.8% |
| 1970 | 123,000 | Upper East Side-Yorkville | 40.7745, -73.9532 | 19.5% |
| 1980 | 124,000 | Upper East Side-Yorkville | 40.7745, -73.9532 | 20.2% |
| 1990 | 127,000 | Upper East Side-Yorkville | 40.7752, -73.9532 | 20.3% |
| 2000 | 131,000 | Upper East Side-Yorkville | 40.7759, -73.9522 | 19.2% |
| 2010 | 130,000 | Upper East Side-Yorkville | 40.7759, -73.9522 | 19.4% |
| 2020 | 139,000 | Upper East Side-Yorkville | 40.7759, -73.9522 | 19.2% |
Scripts are in scripts/: fetch_nhgis_historic.py requests the 1910–1960 tables and boundaries from the NHGIS API (it needs a free IPUMS API key); the 1970–2020 time series and boundaries come from the same NHGIS sources. build_grids.py makes the grids, build_places.py adds labels and the neighborhood lookup, and build_methodology.py writes this page.
The idea comes from an animated density map of France, “Là où vit la France,” shared by Yan Holtz of the R Graph Gallery.