WORK IN PROGRESS — NOT YET CHECKED
Every number on this page comes from one publisher, the New York City School Construction Authority, and has not been through the full QA the other analysis pages carry — there is no check report of the kind the absenteeism work has. Two checks do exist and both pass: the enrollment numerator reconciles with the federal Common Core of Data (the U.S. Education Department’s national school census), and the packet’s own internal checks are in §5. Capacity has no second publisher at all. Numbers may change and should not be cited. What is missing, and what closing each gap would take, is written up in capacity-utilization-gaps.md · method and findings
How full New York City’s school buildings are
The School Construction Authority (SCA) — the city agency that builds and maintains school buildings — publishes an annual building-by-building report nicknamed the Blue Book. For every school building and every school inside it, the report lists an enrollment, a target capacity (the number of students the building is designed to serve), and the utilization it computes from the two: enrollment divided by capacity — in plain terms, how full the building is. This page describes that distribution across the 12school years the SCA has published: where the middle of the distribution sits, how its two ends — the emptiest and the most crowded buildings — moved, how much of the movement is students leaving rather than seats changing, how far apart the city’s community school districts are, and how much the answer depends on which capacity figure you divide by.
The panel is irregular, and every figure shows it. Twelve school years, 2013-14 to 2025-26, with one gap: 2020-21, which the SCA never published. Seven come from NYC Open Data; the other five are parsed from the SCA's own PDFs and carry the same check (iv). A time-series figure plots twelve points and breaks the line at 2020-21. The published years are 2013-14, 2014-15, 2015-16, 2016-17, 2017-18, 2018-19, 2019-20, 2021-22, 2022-23, 2023-24, 2024-25, 2025-26. The one year not published is 2020-21 — 12 observations across a span of 13 school years. The gap runs from 2019-20 to 2021-22 and spans one school year (2020-21); the segment drawn across it is a straight line between two observations, not a description of what happened in between. The evidence that the SCA never published that year is in capacity-utilization-gaps.md §1 and the method doc §2.
Pre-K is inside both halves of this figure. Target capacity is the SCA's planning construct, not a fire-code occupancy limit. It counts Pre-K rooms, each at up to 18 seats full-day or 36 half-day (capped by the room's area ÷ 35 sq ft), and enrollment includes 3-K and Pre-K students, so Pre-K is on both sides of the ratio; the Blue Book's separate PK capacity column restates the Pre-K share and is not added to it. Charters in private space are absent from the Blue Book, so any citywide figure is a DOE-buildings figure. The Philadelphia sibling page adds allotted Pre-K seats, not enrolled Pre-K children, to its K-12 enrollment and divides by a different capacity, so a utilization figure from one city is not a utilization figure from the other unless the sentence names its numerator and its denominator.
This page is descriptive, and it stops there. There is no public, machine-readable record of NYC school closures, mergers, truncations or co-locations, so nothing here says — or can say — which buildings might close, which are candidates, or which are at risk. The page describes how full each building is and how that changed. What was searched for, what was ruled out and what closing the gap would take is in capacity-utilization-gaps.md §2.
Nothing here scores a school. Every measure here is NEUTRAL. Utilization describes how full a building is; it does not rank the school in it.
Sources: gkd7-3vk7 · sca_bluebook_pdf · q9xk-w9iv · socrata:wg9x-4ke6 · socrata:s52a-8aq6 · socrata:c7ru-d68s · infohub:demographic-snapshot-2021-22-to-2025-26 · generated 2026-09-09 · packet · script · method
1. Headline takeaways
- The median NYC school sits at 78% of its target capacity in 2025-26, against 91% in 2013-14 — the lowest of the 12 published years. The whole distribution moved down together, not just its middle. Reading the percentiles as rungs on a ladder from emptiest to fullest: p10 — the school a tenth of the way up — went 55 → 42, p25 71 → 58, p75 111 → 98, and p90, near the fullest end, 130.8 → 116. The citywide total — all students divided by all seats, a different quantity from the median — gives 93.7% → 80.3% across 1,741 and 1,698 schools. Counting whole buildings instead of the schools inside them reads higher: 96% → 81% across 1,311 and 1,334 buildings. (Figure 1, Figure 2, Figure 6)
- The shape changed, not only the level. The share of schools under 50% of capacity rose from 6.4% to 15.5%, a factor of 2.4×, and the share under 33% from 2.4% to 4.8%; over the same years the share above 100% fell from 36.6% to 21.9%. In 2013-14 the over-100% tail was the larger of the two by a factor of 5.7×. The over-capacity group is still the larger of the two: 21.9% against 15.5%. (Figure 1, Figure 2)
- It is students leaving, not seats being built. On the 1,273 buildings present in both 2018-19 and 2025-26, utilization went 92.5% → 80.8% (−11.8 pp). Splitting that change into its two ingredients — what enrollment alone did, and what capacity alone did — the enrollment effect is −14.2 pp and the capacity effect +2.5 pp: enrollment fell −15.4% (1,001,480 → 847,345) while capacity fell −3.1% (1,082,413 → 1,049,116), so the SCA’s target-capacity total fell, and a smaller denominator raised utilization. The limit is the universe: continuing buildings only. 2025-26 holds 61 buildings that are outside this comparison and 2018-19 held 50, so seats in buildings opened since 2018-19 are not in the split. (Figure 3)
- District-wide utilization spans most of the school-level range. Across the 32 community school districts in 2025-26, district-wide utilization runs from 45.6% in District 16 to 103.8% in District 20. District 16 also carries the largest low tail — 46.7% of its 30 schools sit under 50% — while 3 districts are above 100% district-wide and 1 sits below 50%. The citywide figure for the same year, 80.3%, describes neither end. (Figure 4)
- Which capacity figure you divide by moves the headline. The SCA retired one capacity formula and adopted another, and for 2013-14 both are published for the same schools (q9xk-w9iv). Across the 1,767 schools carrying a capacity on each basis, target capacity is a median 0.917× the historical figure (p10 0.804, p90 1.022) — fewer seats in the denominator, so a higher reading. Per school the target basis runs a median 7 points above the historical basis (p10 −2, p90 21), and the share of those schools under 50% goes 6.4% → 8.8%, a swing of 2.4 points from the same enrollments. Same schools, same year, two capacity formulas. The capacity RATIO is over the schools carrying both capacity figures; the utilization gap and both under-50% shares are over the smaller set that also carries a utilization on each basis, which needs an enrollment as well. A figure naming no denominator is therefore ambiguous. (Figure 5)
2. Figures
Figure 1. Distribution of school utilization, 2013-14 against 2025-26
Each pair of bars is the share of schools whose utilization falls in that interval. The four intervals are unequal — 33, 17 and 50 percentage points wide, then one band with no upper bound this file can supply — so the bars are drawn at equal width and share is in their height alone. The bracket under each pair is the interval’s true extent on the utilization axis; the top one ends in a chevron because it is open. Neither bar width nor bar area is an encoding here, so a band that spans fifty points does not thereby look like more schools. The dashed rules are 50% and 100%. The two strips underneath are the percentile ladders of the same schools on the same axis: the box is the middle half and the purple rule the median. Colour marks the year, nothing else; the direction of a change is in the numbers, not in the palette.
Figure 2. The two tails of the school distribution, 2013-14 to 2025-26
One point per published school year, placed at the real year rather than at the number of the observation — so the width of a gap on the page is the length of the gap in time. A solid segment joins two consecutive school years; a broken segment crosses years the SCA has not published, and the hatched band carries how many. The gap is 2019-20 → 2021-22, one school year unobserved, drawn as one straight line. The two lines do not sum to a hundred: the schools between 50% and 100% are the remainder, 62.6% of schools in 2025-26.
Figure 3. Where the −11.8 pp came from, 2018-19 to 2025-26
The two outer bars are utilization in each year on the same set of buildings. The two floating bars in between are the additive split: holding capacity at its 2018-19 value and moving enrollment alone gives −14.2 pp; holding enrollment and moving capacity alone gives +2.5 pp. The capacity effect is positive because capacity fell — fewer seats in the denominator raise the ratio. Colour separates the two steps and carries no direction; the sign does that. This is an endpoint comparison across 7 school years. The Blue Book publishes 5 of the 6 years in between (2019-20, 2021-22, 2022-23, 2023-24, 2024-25), which the figure steps over, and not 2020-21. A3b runs the same split on each consecutive pair of published years. Most of the decline sits in one segment. 2019-20 to 2021-22, which spans the unpublished 2020-21, moves −7.9 pp against −11.8 pp for the whole span (enrollment effect −7.9 pp); no other segment moves more than 2.6 points. An endpoint comparison flattens that timing.
Figure 4. Utilization and the share of schools under 50%, by community school district, 2025-26
One row per community school district, least utilized first. The left bar adds the district’s enrollments and its capacities and divides once; the right bar counts what share of that district’s individual schools sit under 50%. They are different quantities and they do not have to agree: a district can sit near the middle overall and still hold a long low tail. District 16 has both the lowest utilization, 45.6%, and the largest share of schools under 50%, 46.7% of its 30 schools; District 20, with 48 schools, is at 103.8%.
Figure 5. The same schools in 2013-14 on two capacity formulas
The top panel is the one quantity the packet states on both bases: the share of these schools under 50%, 6.4% on the target formula the SCA uses now and 8.8% on the formula it retired. The two strips underneath are per-school distributions, not the difference of the summaries. The middle strip is each school’s target-basis utilization minus its historical-basis utilization: a median 7 points, but −2 at p10, so the target basis does not read higher for every school. The bottom strip is the ratio of the two capacities for the same school.
The top panel is the median at each grain — one point per school, and one point per building — on the same real-year axis as Figure 2, with the same gap treatment. The building median sits above the school median throughout because a building that holds several schools is counted once, and a school that occupies part of a building is counted on its own. The bars underneath are the share of buildings holding more than one school, which stays between 38.5% and 42.1% across every published year. The tails move further apart than the medians do: in 2025-26, 15.5% of schools sit under 50% against 11.5% of buildings, and 21.9% of schools are over 100% against 25.3% of buildings.
3. Numbers appendix
Every figure’s underlying series, at the precision the packet carries. The same numbers are in data/analysis/nyc-enrollment-capacity.json. The school year the SCA has not published (2020-21) hasno row in any table here; a year missing from a table is a year that was never published, not a year that was dropped. In these tables, p10 through p90 are percentiles — rungs on the emptiest-to-fullest ladder, with p10 a tenth of the way up — and “Σ ÷ Σ” is the total figure: all students divided by all seats.
| Year | Schools | p10 | p25 | Median | p75 | p90 | <50% | <33% | >100% | Σ ÷ Σ | Enrollment | Capacity |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2013-14 | 1,741 | 55 | 71 | 91 | 111 | 130.8 | 6.4% | 2.4% | 36.6% | 93.7% | 1,026,956 | 1,096,286 |
| 2014-15 | 1,753 | 58 | 75 | 95 | 116 | 138.6 | 5.8% | 1.8% | 42.8% | 96.7% | 1,033,364 | 1,068,786 |
| 2015-16 | 1,743 | 56 | 74 | 94 | 115 | 139.6 | 6.7% | 1.9% | 42% | 95.9% | 1,033,210 | 1,077,597 |
| 2016-17 | 1,716 | 55 | 74 | 93 | 115 | 136 | 6.4% | 1.3% | 41.1% | 95.1% | 1,031,400 | 1,084,056 |
| 2017-18 | 1,715 | 54 | 72 | 92 | 113 | 134 | 6.8% | 1.5% | 38.8% | 93.6% | 1,023,638 | 1,094,054 |
| 2018-19 | 1,697 | 55 | 72 | 91 | 112 | 132.2 | 6.8% | 1.5% | 37.8% | 92.5% | 1,010,123 | 1,091,864 |
| 2019-20 | 1,706 | 53 | 70 | 91 | 113 | 135 | 7.5% | 1.4% | 37.7% | 92.4% | 997,330 | 1,079,091 |
| 2021-22 | 1,704 | 47 | 64 | 83 | 102 | 121 | 11.9% | 3.2% | 26.8% | 84.4% | 913,804 | 1,082,315 |
| 2022-23 | 1,702 | 45 | 62 | 82 | 102 | 121 | 12.7% | 3.5% | 26.7% | 84% | 890,616 | 1,059,656 |
| 2023-24 | 1,704 | 46 | 63 | 82 | 102.8 | 122 | 12.3% | 3.4% | 27.3% | 84.5% | 894,829 | 1,059,363 |
| 2024-25 | 1,702 | 45 | 61 | 80 | 101 | 120 | 13.3% | 3.6% | 26.2% | 83.1% | 887,933 | 1,068,711 |
| 2025-26 | 1,698 | 42 | 58 | 78 | 98 | 116 | 15.5% | 4.8% | 21.9% | 80.3% | 861,164 | 1,072,343 |
| Year | Buildings | p10 | p25 | Median | p75 | p90 | <50% | >100% | Σ ÷ Σ | Multi-school | Share |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2013-14 | 1,311 | 61 | 77 | 96 | 117 | 138 | 3.2% | 43.9% | 92.9% | 505 | 38.5% |
| 2014-15 | 1,320 | 64 | 78 | 100 | 123 | 144 | 3.3% | 49.2% | 95.9% | 535 | 40.5% |
| 2015-16 | 1,323 | 63 | 79 | 99 | 121 | 144 | 4.5% | 48.3% | 95.8% | 540 | 40.8% |
| 2016-17 | 1,320 | 61 | 78 | 98 | 120 | 142 | 4.8% | 47.1% | 95.1% | 530 | 40.2% |
| 2017-18 | 1,326 | 58 | 77 | 97 | 119 | 138 | 5.1% | 45.7% | 93.5% | 536 | 40.4% |
| 2018-19 | 1,323 | 58 | 76 | 95 | 116 | 134 | 5.6% | 42.9% | 92.5% | 531 | 40.1% |
| 2019-20 | 1,324 | 59 | 75 | 95 | 117 | 137 | 4.9% | 43.6% | 92.3% | 533 | 40.3% |
| 2021-22 | 1,327 | 51 | 67 | 86 | 105 | 122.2 | 8.6% | 30.5% | 84.3% | 543 | 40.9% |
| 2022-23 | 1,323 | 50 | 65 | 85 | 105 | 122 | 9.8% | 30.7% | 84% | 547 | 41.3% |
| 2023-24 | 1,322 | 50 | 66 | 86 | 106 | 124 | 9.3% | 30.9% | 84.4% | 548 | 41.5% |
| 2024-25 | 1,329 | 50 | 65 | 84 | 103 | 124 | 9.5% | 29.1% | 83.1% | 557 | 41.9% |
| 2025-26 | 1,334 | 47 | 62 | 81 | 101 | 120 | 11.5% | 25.3% | 80.3% | 561 | 42.1% |
| Quantity | 2018-19 | 2025-26 | Change |
|---|---|---|---|
| Enrollment | 1,001,480 | 847,345 | −15.4% |
| Target capacity | 1,082,413 | 1,049,116 | −3.1% |
| Utilization | 92.5% | 80.8% | −11.8 pp |
| Enrollment effect, capacity held fixed | — | — | −14.2 pp |
| Capacity effect, enrollment held fixed | — | — | +2.5 pp |
| Buildings | 1,323 | 1,334 | 1,273 in both |
| Span | Buildings in both | Utilization | Change | Enrollment effect | Capacity effect |
|---|---|---|---|---|---|
| 2018-19 → 2019-20 | 1,316 | 92.5% → 92.4% | −0.1 pp | −1.2 pp | +1 pp |
| 2019-20 → 2021-22 | 1,312 | 92.3% → 84.4% | −7.9 pp | −7.9 pp | 0 pp |
| 2021-22 → 2022-23 | 1,314 | 84.3% → 84.1% | −0.2 pp | −2.1 pp | +1.9 pp |
| 2022-23 → 2023-24 | 1,317 | 84% → 84.5% | +0.4 pp | +0.4 pp | +0.1 pp |
| 2023-24 → 2024-25 | 1,311 | 84.5% → 83.4% | −1.1 pp | −0.9 pp | −0.2 pp |
| 2024-25 → 2025-26 | 1,319 | 83.1% → 80.5% | −2.6 pp | −2.5 pp | −0.1 pp |
| 2018-19 → 2025-26 (Figure 3) | 1,273 | 92.5% → 80.8% | −11.8 pp | −14.2 pp | +2.5 pp |
| District | Schools | Utilization | Under 50% |
|---|---|---|---|
| District 16 | 30 | 45.6% | 46.7% |
| District 32 | 30 | 57.4% | 36.7% |
| District 1 | 32 | 58% | 34.4% |
| District 23 | 32 | 58.6% | 40.6% |
| District 5 | 34 | 59.3% | 29.4% |
| District 17 | 54 | 64.3% | 38.9% |
| District 18 | 41 | 65% | 34.1% |
| District 14 | 47 | 66.2% | 25.5% |
| District 9 | 72 | 68% | 20.8% |
| District 19 | 56 | 68% | 21.4% |
| District 4 | 34 | 68.4% | 20.6% |
| District 12 | 51 | 68.4% | 25.5% |
| District 7 | 59 | 70.4% | 22% |
| District 6 | 47 | 73% | 14.9% |
| District 8 | 60 | 74.1% | 13.3% |
| District 3 | 46 | 74.7% | 17.4% |
| District 10 | 84 | 75.6% | 11.9% |
| District 13 | 54 | 75.8% | 25.9% |
| District 15 | 58 | 79% | 10.3% |
| District 30 | 55 | 79.9% | 9.1% |
| District 2 | 127 | 80.9% | 10.2% |
| District 11 | 66 | 81.1% | 6.1% |
| District 29 | 47 | 82.9% | 2.1% |
| District 24 | 64 | 90.2% | 3.1% |
| District 27 | 67 | 92.8% | 3% |
| District 21 | 46 | 94.4% | 8.7% |
| District 28 | 50 | 95% | 4% |
| District 31 | 80 | 95.7% | 5% |
| District 22 | 40 | 95.9% | 7.5% |
| District 25 | 47 | 100.7% | 0% |
| District 26 | 40 | 102.4% | 2.5% |
| District 20 | 48 | 103.8% | 6.2% |
| Quantity | p10 | Median | p90 |
|---|---|---|---|
| Target capacity ÷ historical capacity, per school | 0.804 | 0.917 | 1.022 |
| Target-basis utilization − historical-basis, points | −2 | 7 | 21 |
| Share under 50% — target basis | — | 6.4% | — |
| Share under 50% — historical basis | — | 8.8% | — |
| Schools carrying both capacities / both utilizations | — | 1,767 / 1,747 | — |
| Year | Posted | Organizations | With both figures | Matched to a DBN | Match rate | Median, matched | Median, all | <50%, matched | <50%, all |
|---|---|---|---|---|---|---|---|---|---|
| 2013-14 | 2015-04-27 | 1,819 | 1,747 | 1,741 | 99.7% | 91 | 91 | 6.4% | 6.4% |
| 2014-15 | 2014-10-31 | 1,844 | 1,759 | 1,753 | 99.7% | 95 | 95 | 5.8% | 5.8% |
| 2015-16 | 2017-09-12 | 1,841 | 1,749 | 1,743 | 99.7% | 94 | 94 | 6.7% | 6.6% |
| 2016-17 | 2018-01-08 | 1,809 | 1,722 | 1,716 | 99.7% | 93 | 93 | 6.4% | 6.3% |
| 2017-18 | 2019-01-31 | 1,818 | 1,721 | 1,715 | 99.7% | 92 | 92 | 6.8% | 6.7% |
| 2018-19 | 2019-12-18 | 1,802 | 1,703 | 1,697 | 99.6% | 91 | 91 | 6.8% | 6.8% |
| 2019-20 | 2019-10-31 | 1,811 | 1,712 | 1,706 | 99.6% | 91 | 91 | 7.5% | 7.5% |
| 2021-22 | 2023-01-04 | 1,810 | 1,711 | 1,704 | 99.6% | 83 | 83 | 11.9% | 11.9% |
| 2022-23 | 2022-10-31 | 1,802 | 1,709 | 1,702 | 99.6% | 82 | 82 | 12.7% | 12.7% |
| 2023-24 | 2023-10-31 | 1,786 | 1,710 | 1,704 | 99.6% | 82 | 82 | 12.3% | 12.3% |
| 2024-25 | 2024-10-31 | 1,778 | 1,708 | 1,702 | 99.6% | 80 | 80 | 13.3% | 13.3% |
| 2025-26 | 2026-09-09 | 1,776 | 1,705 | 1,698 | 99.6% | 78 | 78 | 15.5% | 15.5% |
sensitivity_all_orgs drops the DBN filter and keeps every organization with students and seats. It is the same population plus the six or seven unmatched organizations a year, and it is reported so the filter's effect is measurable rather than assumed. School grain covers organizations whose org code resolves to exactly one DBN in the 2019-20 School Locations directory plus every year of the DOE Demographic Snapshot. Building grain covers every building with an enrollment, a target capacity and a published utilization.
| Year | Single-building schools | Within 1 point | Worst | Split-site schools | Within 1 point | Worst |
|---|---|---|---|---|---|---|
| 2013-14 | 1,446 | 1,446 | 0 | 301 | 143 | 65 |
| 2014-15 | 1,452 | 1,452 | 0 | 307 | 127 | 204 |
| 2015-16 | 1,443 | 1,443 | 0 | 306 | 123 | 103 |
| 2016-17 | 1,437 | 1,437 | 0 | 285 | 115 | 79 |
| 2017-18 | 1,455 | 1,455 | 0 | 266 | 85 | 70 |
| 2018-19 | 1,446 | 1,446 | 0 | 257 | 90 | 52 |
| 2019-20 | 1,455 | 1,455 | 0 | 257 | 82 | 59 |
| 2021-22 | 1,469 | 1,469 | 0 | 242 | 70 | 64 |
| 2022-23 | 1,479 | 1,479 | 0 | 230 | 66 | 70 |
| 2023-24 | 1,481 | 1,481 | 0 | 229 | 64 | 78 |
| 2024-25 | 1,489 | 1,489 | 0 | 219 | 61 | 79 |
| 2025-26 | 1,496 | 1,496 | 0 | 209 | 51 | 75 |
A school occupying one building reconstructs exactly in 12 of the 12 years. A school split across buildings does not, and that is the expected behaviour rather than a defect: an annex row often carries a null capacity while its utilization column repeats the school-wide figure, so the published per-row utilization is not the utilization of that row’s enrollment and capacity. Every school-grain number on this page is a roll-up across a school’s building rows, not a single-row read.
| Check | Result | Detail |
|---|---|---|
| iv_published_utilization_reconstructed | pass | single-building organizations within 1 pp of the published figure, worst year 100% |
| panel_years_mapped | pass | 12 snapshots, 12 school years; an unmapped vintage throws rather than guessing |
| join_match_rate | pass | org code → DBN, worst year 99.6% of organizations carrying students and seats |
| building_row_consistency | pass | 0 buildings where two complete rows disagree on enrollment, capacity or utilization |
| decomposition_additive | pass | unrounded enrollment and capacity effects sum to the total change within 0.0e+0 pp |
4. What these numbers cannot show
- One of the 13 school years in the span is not published. 2020-21 falls in the pandemic, and the largest step in the utilization series here is drawn across it (2019-20 → 2021-22). The SCA never published it; the evidence is in capacity-utilization-gaps.md §1 and the method doc §2.
- There is no closure record. There is no public closure list for NYC, so nothing here supports a predictive claim (doc §6). Nothing on this page identifies candidates for closure, merger or truncation, and low utilization here is a description of a building, not a forecast about a school. What was searched, what was ruled out and why the DOE Demographic Snapshot cannot stand in as a proxy are in capacity-utilization-gaps.md §2.
- No second publisher states NYC capacity. No second publisher states NYC school capacity; doc §5.2 tests it against the room inventory, which is the same publisher. The enrollment numerator can be checked against an independent publisher; the denominator cannot, so the denominator is the weaker half of every ratio here.
- Target capacity is a planning construct. Target capacity is the SCA's planning construct, not a fire-code occupancy limit. It counts Pre-K rooms, each at up to 18 seats full-day or 36 half-day (capped by the room's area ÷ 35 sq ft), and enrollment includes 3-K and Pre-K students, so Pre-K is on both sides of the ratio; the Blue Book's separate PK capacity column restates the Pre-K share and is not added to it. Charters in private space are absent from the Blue Book, so any citywide figure is a DOE-buildings figure. It is what the SCA divides by; it is not a count of how many children fit.
- The denominator is a choice with a measurable size. The only year where two official formulas exist for the same schools is 2013-14, and they disagree by a median 7 points per school. Same schools, same year, two capacity formulas. The capacity RATIO is over the schools carrying both capacity figures; the utilization gap and both under-50% shares are over the smaller set that also carries a utilization on each basis, which needs an enrollment as well. A figure naming no denominator is therefore ambiguous. Every figure on this page names its denominator in the caption for that reason.
- Buildings are not schools. Between 38.5% and 42.1% of buildings hold more than one school in every published year, so the school grain and the building grain answer different questions and their citywide figures are not interchangeable (Figure 6). Schools split across buildings are the other side of the same structure, and their published per-row utilization cannot be read row by row (A7).
- Pre-K is counted on both sides. The Blue Book’s enrollment is the audited register including 3-K and Pre-K students, and the SCA’s formula counts each Pre-K room at up to 18 target seats (36 half-day), capped by the room’s area ÷ 35 sq ft; the separate PK capacity column restates that share and is not added again. Philadelphia’s numerator adds allotted Pre-K seats rather than enrolled children, so the two cities’ utilization figures are not comparable without that sentence attached.
- This is a DOE-buildings figure. Charters occupying DOE space appear as organizations with their own enrollment and capacity; charters in private space are absent from the Blue Book entirely, so no figure here is a figure for all NYC public-school students.
- The years are inferred, not read off the file. data_as_of identifies the vintage and is not a school year: for the seven Socrata vintages it is a posting date, three to eighteen months after the count, and for the five PDF years it is the audited-register date the report states. The school year is measured against the DOE Demographic Snapshot (doc §2), not read off the date. The packet refuses an unmapped vintage rather than guessing one, which is why a new posting cannot quietly overwrite a published year.
- One input rolls annually. The InfoHub spreadsheet is the only input without a Socrata copy, and its filename carries its year range, so it rolls annually. When it 404s this script fails rather than rebuilding a shorter universe, because a shorter universe restates every school-grain figure quietly.
5. Sources and checks
Every value on this page is read from one committed packet, nyc-enrollment-capacity.json, written by scripts/analysis/nyc-capacity-packet.ts from 7 published sources:
- gkd7-3vk7 — Enrollment Capacity And Utilization Reports (SCA Blue Book), 20,754 rows. enrollment, target capacity and published utilization at both grains, seven school years.
- sca_bluebook_pdf — SCA Enrollment, Capacity & Utilization Report (the annual PDF), 15,222 rows. the five school years Socrata does not carry — 2014-15, 2019-20, 2022-23, 2023-24, 2024-25. Parsed by pipeline_nyc/parse/bluebook.py under a two-parser gate and committed to data/cities/nyc/reference/parsed/.
- q9xk-w9iv — Enrollment Capacity And Utilization Reports - Historical by Organization, 2,658 rows. the pre-2014 capacity formula, 2013-14 only — the second denominator.
- socrata:wg9x-4ke6 — 2019-20 School Locations, 2,131 DBNs contributed. DBN universe the org-code join resolves against.
- socrata:s52a-8aq6 — Demographic Snapshot (school level), 24 DBNs contributed. DBN universe the org-code join resolves against.
- socrata:c7ru-d68s — Demographic Snapshot (school level), 27 DBNs contributed. DBN universe the org-code join resolves against.
- infohub:demographic-snapshot-2021-22-to-2025-26 — Demographic Snapshot (school level), 54 DBNs contributed. DBN universe the org-code join resolves against.
Generated 2026-09-09 — max data_as_of in gkd7-3vk7; a wall clock would churn the committed diff. The school universe is 2,232 organization codes resolved against 2,236 DBNs; 4 codes (K594, K646, M505, M610) map to more than one DBN and are dropped rather than guessed. The weakest match rate across the 12 years is 99.6%; in 2025-26, 1,698 of 1,705 organizations carrying both an enrollment and a capacity matched, and the 7 dropped are listed in the packet. What that filter costs is measured rather than assumed: sensitivity_all_orgs drops the DBN filter and keeps every organization with students and seats. It is the same population plus the six or seven unmatched organizations a year, and it is reported so the filter's effect is measurable rather than assumed. Comparing the two universes year by year (A6), the median is identical in 12 of the 12 years and the share under 50% never differs by more than 0.1 points.
Percentiles use exclusive (the default of Python's statistics.quantiles), which is what produced the percentile table in doc §4.1. The packet’s own verdict is PASS across 5 checks (A8). These are internal consistency checks, not a second reading of the sources by a separate program, and there is no full-QA report for this packet, which is why this page is not indexed. What is explicitly not verified:
- No second publisher states NYC school capacity; doc §5.2 tests it against the room inventory, which is the same publisher.
- 2020-21 cannot be checked because the SCA never published it (doc §2).
- The five years read from the SCA PDFs are checked against Socrata only by proxy: run on the 2025-26 PDF, the parser reproduces the published 2025-26 extract on every row key and every organization-grain enrollment, target capacity and utilization (doc §2.1). The report prints no zero in the PK-capacity and cluster-room columns, so on about 2% of rows those read absent where Socrata reads 0.
- There is no public closure list for NYC, so nothing here supports a predictive claim (doc §6).
Method, findings and the caveats in full: docs/design/10_nyc_enrollment_capacity_utilization.md. What is missing, and what closing each gap would take, is written up in docs/capacity-utilization-gaps.md. The Philadelphia sibling, on a different denominator and a single vintage: how full Philadelphia’s school sites are.