← Methodology

New York CityWorking analysis

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

  1. 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)
  2. 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)
  3. 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)
  4. 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)
  5. 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.

0%10%20%30%40%50%60%70%2.4%4.8%under 33%4%10.7%33–50%57%62.6%50–100%36.6%21.9%over 100%50% — half full100% — at capacity2013-14p10 55p25 71median 91p75 111p90 130.82025-26p10 42p25 58median 78p75 98p90 1160%25%50%75%100%125%150%share of schoolsutilization — enrollment (incl. 3-K and Pre-K) ÷ target capacity (incl. Pre-K rooms)
School grain — each school counted as one unit: 1,741 schools in 2013-14 and 1,698 in 2025-26. Denominator: target capacity. 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. Percentiles use exclusive (the default of Python's statistics.quantiles), which is what produced the percentile table in doc §4.1. The four intervals are what the packet’s three cut points — under 33%, under 50%, over 100% — determine exactly; a narrower band would need the row-level extract rather than this file. Full ladders for all 12 years in A1. Source: Enrollment Capacity And Utilization Reports (SCA Blue Book) (gkd7-3vk7).

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.

0%10%20%30%40%50%115.5%under 50% of capacity21.9%over 100%2013-142014-152015-162016-172017-182018-192019-202021-222022-232023-242024-252025-26share of schoolshatched — school years the SCA has not published; the number is how many, and the line across them is brokenx-axis in school years, not in observation order · 12 observations across 13 years
School grain, target-capacity denominator, all 12 published years; counts per year in A1. Each year is mapped to a school year by matching its enrollment against the DOE Demographic Snapshot rather than by reading its date key: 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. Unpublished school years inside the span: 1 of 1 (2020-21), drawn as 1 hatched stretch. Source: Enrollment Capacity And Utilization Reports (SCA Blue Book) (gkd7-3vk7).

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.

0%20%40%60%80%100%92.5%2018-19−14.2 ppenrollment effect1,001,480 → 847,345students (−15.4%)+2.5 ppcapacity effect1,082,413 → 1,049,116seats (−3.1%)80.8%2025-2678.3%utilization (Σ enrollment ÷ Σ capacity)1,273 continuing buildings · building grain−14.2 pp +2.5 pp = −11.7 pp against a printed total of −11.8 pp — display rounding, not a residual term
Grain: building. 1,273 buildings present in both years, out of 1,323 in 2018-19 and 1,334 in 2025-26. Capacity fell over the period, which raised utilization; the decline is enrollment. Continuing buildings only, so seats in buildings opened after 2018-19 are outside this. The two effects are additive before rounding (unrounded: -14.240 and +2.485 against a total of -11.755). To one decimal they read -14.2 and +2.5, which sum to -11.7 against a printed total of -11.8; the 0.1 pp is display rounding, not a residual term. The packet’s own check: unrounded enrollment and capacity effects sum to the total change within 0.0e+0 pp. The display residual restated from the printed effects is 0.1 points. 2018-19 and 2025-26 are 7 school years apart and the panel carries 5 of the 6 years in between — every one except 2020-21, which the SCA never published. Four of those intermediate years are not on NYC Open Data and are read from the SCA's own PDFs (pipeline_nyc/parse/bluebook.py). `segments` is the path between the endpoints, so the endpoint figures can be read against it. Each segment is computed on the buildings complete in both of ITS endpoint years, so the continuing sets differ from segment to segment and the segment effects are not required to sum to the whole-span effects. The 2019-20 → 2021-22 segment spans the unpublished 2020-21 and is two years wide; every other segment is one. Full figures in A3, segments in A3b.

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%.

district utilization — Σ enrollment ÷ Σ capacityschools under 50%0%25%50%75%100%100% — at capacity0%25%50%D1630 schools45.6%46.7%D3230 schools57.4%36.7%D132 schools58%34.4%D2332 schools58.6%40.6%D534 schools59.3%29.4%D1754 schools64.3%38.9%D1841 schools65%34.1%D1447 schools66.2%25.5%D972 schools68%20.8%D1956 schools68%21.4%D434 schools68.4%20.6%D1251 schools68.4%25.5%D759 schools70.4%22%D647 schools73%14.9%D860 schools74.1%13.3%D346 schools74.7%17.4%D1084 schools75.6%11.9%D1354 schools75.8%25.9%D1558 schools79%10.3%D3055 schools79.9%9.1%D2127 schools80.9%10.2%D1166 schools81.1%6.1%D2947 schools82.9%2.1%D2464 schools90.2%3.1%D2767 schools92.8%3%D2146 schools94.4%8.7%D2850 schools95%4%D3180 schools95.7%5%D2240 schools95.9%7.5%D2547 schools100.7%0%D2640 schools102.4%2.5%D2048 schools103.8%6.2%
Σenrollment / Σcapacity within the district, and the share of its schools under 50%. Grain: school; year: 2025-26; 0 schools fell outside a district and were dropped. The ordering is a property of the distribution, not a ranking of schools or of districts: Every measure here is NEUTRAL. Utilization describes how full a building is; it does not rank the school in it. Community school districts are the geographic districts of the buildings, so D75 special-education, D79 alternative and charter organizations sit in the geographic district they occupy. Full table in A4.

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.

share of the 1,747 schools under 50% of capacity0%2%4%6%8%10%6.4%8.8%target capacitythe current formulahistorical capacitythe formula the SCA retiredper school: target-basis utilization minus historical-basis, in pointsno differencep10 −2median 7p90 21−50510152025per school: target capacity ÷ historical capacitysame seatsp10 0.804median 0.917p90 1.0220.8001.000
One vintage only: the second series (q9xk-w9iv, Enrollment Capacity And Utilization Reports - Historical by Organization) is the pre-2014 capacity formula, 2013-14 only — the second denominator. Two universes, and each statistic here is over its own. 1,767 schools carry a capacity on both bases — that is the ratio ladder. 1,747 of them also carry a utilization on each, which needs an enrollment as well — that is the gap ladder and both under-50% shares. 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 other figure on this page uses the target-capacity basis. Full figures in A5.

Figure 6. Buildings are not schools: counting per school against counting per building, and how often a building holds more than one 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.

0%20%40%60%80%100%178%median school81%median buildingmedian utilizationshare of buildings holding more than one school0%25%50%38.5%40.5%40.8%40.2%40.4%40.1%40.3%40.9%41.3%41.5%41.9%42.1%2013-142014-152015-162016-172017-182018-192019-202021-222022-232023-242024-252025-26hatched — school years the SCA has not published; the number is how many, and the line across them is brokenx-axis in school years, not in observation order · 12 observations across 13 years
1,698 schools in 1,334 buildings in 2025-26; 1,741 in 1,311 in 2013-14. A multi-school building is counted as organizations with more than 0 students in the building; on the alternative definition — organizations with a non-null enrollment in the building, zero included — the count for 2025-26 would be 570 rather than 561. 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. This is why the two grains are not restatements of one another and why every figure on this page names its grain. Full series in A2.

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.

A1. School-grain utilization by published year (Figures 1, 2). Percent of target capacity.
YearSchoolsp10p25Medianp75p90<50%<33%>100%Σ ÷ ΣEnrollmentCapacity
2013-141,741557191111130.86.4%2.4%36.6%93.7%1,026,9561,096,286
2014-151,753587595116138.65.8%1.8%42.8%96.7%1,033,3641,068,786
2015-161,743567494115139.66.7%1.9%42%95.9%1,033,2101,077,597
2016-171,7165574931151366.4%1.3%41.1%95.1%1,031,4001,084,056
2017-181,7155472921131346.8%1.5%38.8%93.6%1,023,6381,094,054
2018-191,697557291112132.26.8%1.5%37.8%92.5%1,010,1231,091,864
2019-201,7065370911131357.5%1.4%37.7%92.4%997,3301,079,091
2021-221,70447648310212111.9%3.2%26.8%84.4%913,8041,082,315
2022-231,70245628210212112.7%3.5%26.7%84%890,6161,059,656
2023-241,704466382102.812212.3%3.4%27.3%84.5%894,8291,059,363
2024-251,70245618010112013.3%3.6%26.2%83.1%887,9331,068,711
2025-261,6984258789811615.5%4.8%21.9%80.3%861,1641,072,343
A2. Building-grain utilization by published year (Figure 6). Percent of target capacity.
YearBuildingsp10p25Medianp75p90<50%>100%Σ ÷ ΣMulti-schoolShare
2013-141,3116177961171383.2%43.9%92.9%50538.5%
2014-151,32064781001231443.3%49.2%95.9%53540.5%
2015-161,3236379991211444.5%48.3%95.8%54040.8%
2016-171,3206178981201424.8%47.1%95.1%53040.2%
2017-181,3265877971191385.1%45.7%93.5%53640.4%
2018-191,3235876951161345.6%42.9%92.5%53140.1%
2019-201,3245975951171374.9%43.6%92.3%53340.3%
2021-221,327516786105122.28.6%30.5%84.3%54340.9%
2022-231,3235065851051229.8%30.7%84%54741.3%
2023-241,3225066861061249.3%30.9%84.4%54841.5%
2024-251,3295065841031249.5%29.1%83.1%55741.9%
2025-261,33447628110112011.5%25.3%80.3%56142.1%
A3. Decomposition of the utilization change, 2018-19 → 2025-26, building grain (Figure 3)
Quantity2018-192025-26Change
Enrollment1,001,480847,345−15.4%
Target capacity1,082,4131,049,116−3.1%
Utilization92.5%80.8%−11.8 pp
Enrollment effect, capacity held fixed——−14.2 pp
Capacity effect, enrollment held fixed——+2.5 pp
Buildings1,3231,3341,273 in both
A3b. The same split, segment by segment along the span (Figure 3)
SpanBuildings in bothUtilizationChangeEnrollment effectCapacity effect
2018-19 → 2019-201,31692.5% → 92.4%−0.1 pp−1.2 pp+1 pp
2019-20 → 2021-221,31292.3% → 84.4%−7.9 pp−7.9 pp0 pp
2021-22 → 2022-231,31484.3% → 84.1%−0.2 pp−2.1 pp+1.9 pp
2022-23 → 2023-241,31784% → 84.5%+0.4 pp+0.4 pp+0.1 pp
2023-24 → 2024-251,31184.5% → 83.4%−1.1 pp−0.9 pp−0.2 pp
2024-25 → 2025-261,31983.1% → 80.5%−2.6 pp−2.5 pp−0.1 pp
2018-19 → 2025-26 (Figure 3)1,27392.5% → 80.8%−11.8 pp−14.2 pp+2.5 pp
A4. Community school districts, 2025-26, least utilized first (Figure 4)
DistrictSchoolsUtilizationUnder 50%
District 163045.6%46.7%
District 323057.4%36.7%
District 13258%34.4%
District 233258.6%40.6%
District 53459.3%29.4%
District 175464.3%38.9%
District 184165%34.1%
District 144766.2%25.5%
District 97268%20.8%
District 195668%21.4%
District 43468.4%20.6%
District 125168.4%25.5%
District 75970.4%22%
District 64773%14.9%
District 86074.1%13.3%
District 34674.7%17.4%
District 108475.6%11.9%
District 135475.8%25.9%
District 155879%10.3%
District 305579.9%9.1%
District 212780.9%10.2%
District 116681.1%6.1%
District 294782.9%2.1%
District 246490.2%3.1%
District 276792.8%3%
District 214694.4%8.7%
District 285095%4%
District 318095.7%5%
District 224095.9%7.5%
District 2547100.7%0%
District 2640102.4%2.5%
District 2048103.8%6.2%
A5. Target capacity against the retired historical formula, 2013-14 (Figure 5)
Quantityp10Medianp90
Target capacity ÷ historical capacity, per school0.8040.9171.022
Target-basis utilization − historical-basis, points−2721
Share under 50% — target basis—6.4%—
Share under 50% — historical basis—8.8%—
Schools carrying both capacities / both utilizations—1,767 / 1,747—
A6. The universe behind the school grain, and what the DBN filter costs
YearPostedOrganizationsWith both figuresMatched to a DBNMatch rateMedian, matchedMedian, all<50%, matched<50%, all
2013-142015-04-271,8191,7471,74199.7%91916.4%6.4%
2014-152014-10-311,8441,7591,75399.7%95955.8%5.8%
2015-162017-09-121,8411,7491,74399.7%94946.7%6.6%
2016-172018-01-081,8091,7221,71699.7%93936.4%6.3%
2017-182019-01-311,8181,7211,71599.7%92926.8%6.7%
2018-192019-12-181,8021,7031,69799.6%91916.8%6.8%
2019-202019-10-311,8111,7121,70699.6%91917.5%7.5%
2021-222023-01-041,8101,7111,70499.6%838311.9%11.9%
2022-232022-10-311,8021,7091,70299.6%828212.7%12.7%
2023-242023-10-311,7861,7101,70499.6%828212.3%12.3%
2024-252024-10-311,7781,7081,70299.6%808013.3%13.3%
2025-262026-09-091,7761,7051,69899.6%787815.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.

A7. Reconstructing the published utilization figure from the published enrollment and capacity
YearSingle-building schoolsWithin 1 pointWorstSplit-site schoolsWithin 1 pointWorst
2013-141,4461,446030114365
2014-151,4521,4520307127204
2015-161,4431,4430306123103
2016-171,4371,437028511579
2017-181,4551,45502668570
2018-191,4461,44602579052
2019-201,4551,45502578259
2021-221,4691,46902427064
2022-231,4791,47902306670
2023-241,4811,48102296478
2024-251,4891,48902196179
2025-261,4961,49602095175

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.

A8. Checks carried in the packet
CheckResultDetail
iv_published_utilization_reconstructedpasssingle-building organizations within 1 pp of the published figure, worst year 100%
panel_years_mappedpass12 snapshots, 12 school years; an unmapped vintage throws rather than guessing
join_match_ratepassorg code → DBN, worst year 99.6% of organizations carrying students and seats
building_row_consistencypass0 buildings where two complete rows disagree on enrollment, capacity or utilization
decomposition_additivepassunrounded 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.

Lineage. SCA Blue Book and the DOE school directories on NYC Open Data and InfoHub → scripts/analysis/nyc-capacity-packet.ts → data/analysis/nyc-enrollment-capacity.json → this page. No number on this page is typed by hand; every one of them is rendered from that file, and the figures compute nothing the packet does not state except the arithmetic named in their footnotes.

Internal working analysis · pending editorial review · do not cite · packet generated 2026-09-09.