The sources
- Housing Database, project-level file, version 26Q2.1, from the Department of City Planning. One row per Department of Buildings job since 2010 that adds or removes homes: new buildings, conversions and demolitions, with the net change in permanent homes (the city calls them Class A units), the year the job was permitted and the year of its first certificate of occupancy, which City Planning uses as the completion year. 111,909 residential jobs. It runs through June 30, 2026.
- City Planning’s own summaries of the same database by 2024 Council district and community district, used as a check on the project-level sums and for each district’s 2020 count of homes.
- Affordable Housing Production by Building, from the Department of Housing Preservation and Development (HPD): 9,551 buildings in projects started from Jan. 1, 2014 through June 30, 2026, with homes by income tier.
- The draft Fair Housing Growth Strategy, released Aug. 19, 2026 by HPD and City Planning under Local Law 167 of 2023. Pages 36 to 42 give a five-year target for each of the 59 community districts. I read the tables out of the PDF with a script and saved them as a CSV. They add up to 350,260, against the report’s citywide target of 350,000; the difference is the report’s own rounding.
- The Census Bureau: 2020 census block populations (from the bureau’s TIGERweb map service) and the American Community Survey five-year estimates for 2020 to 2024, by census tract: household income brackets, gross rent, rent asked for vacant units, rent as a share of income and tenure.
- District boundaries from City Planning, clipped to the shoreline. Council members from the Council’s district list, read Oct. 22, 2026. HPD’s 2026 area median income chart.
The build, step by step
scripts/fetch.pydownloads everything. It refuses to save a file that comes back short: fewer than 100,000 Housing Database jobs, 9,000 HPD buildings, 51 or 59 districts, or a block population under 8 million.scripts/build.pyplaces each 2020 census block in a Council district and a community district by the block’s internal point. Block populations add up to 8,804,190, the 2020 census count for the city, exactly; the build stops otherwise.- It sums the Housing Database jobs into districts by year, using the district each job already carries in City Planning’s file.
- It sums HPD buildings into districts using the district HPD assigns each building.
- It splits each census tract’s survey numbers among districts in proportion to where the tract’s 2020 residents live, then estimates district medians from the summed brackets.
- The page does the rest in the browser: year ranges, per-person rates, rankings and the counts written into sentences change with the controls.
Net homes and districts
A “net home” is the change in permanent homes from one Buildings Department job: a new 100-unit building on an empty lot adds 100; a demolished two-family house subtracts two; turning an office into 40 apartments adds 40. Completed homes are jobs City Planning classifies as complete (status 5), counted in the year of the job’s first certificate of occupancy, temporary or final. That is City Planning’s completion date. It does not mean every home in the building was ready that year; in large buildings, homes can receive certificates over a longer stretch. Demolitions are dated by their permit, City Planning’s convention. Permitted homes are counted in the year the job got its construction permit, for jobs that are permitted, partly finished or finished; jobs withdrawn after a permit are left out, so a permitted year can shrink a little as the file is updated.
Seven jobs have no Council district and 43 have no community district (36 of those sit in parks or airports, which are not community districts). They count toward citywide totals but no district.
Calculated figures
- Shares such as “the 10 districts that built the most account for 51%” divide the sum for those districts by the citywide sum for the same years.
- “Districts that account for half” counts districts from the top until their sum reaches half of the citywide total.
- Rates per 1,000 residents divide by the 2020 census population and by the number of years selected. 2026 counts as half a year, since the data stop on June 30.
- The citywide totals are my sums of the project file. City Planning’s own summary tables by district also count the three partly complete jobs (below) as completions in the year of their first certificate of occupancy; this page does not. That explains the two gaps an earlier version described: 580 homes in 2017, from 70 Pine Street in Manhattan Community District 1 and Council District 1, and 208 in the first half of 2026, from 33-71 Prince Street in Queens Community District 7 and Council District 20. It also explains a 36-home gap in 2025 at 454 Convent Avenue, Manhattan Community District 9 and Council District 7. With the partly complete jobs added back, my sums match the summary tables in every district and year but one: in 2010, Council District 35 and Brooklyn Community District 8 come out 3 homes higher than City Planning’s figure, a gap I could not trace to a job.
Partly complete jobs
City Planning marks a job partly complete (status 4) when a building of 20 or more homes has a temporary certificate of occupancy covering less than 80 percent of its homes. Version 26Q2.1 has three, with 824 net homes proposed. This page keeps them out of the completed count, since most of their homes are not certified, and out of the pipeline, since they have a certificate. The district panels list them.
- 70 Pine Street, Manhattan: a conversion, 580 net homes proposed, first certificate of occupancy in 2017 (job 122673776).
- 454 Convent Avenue, Manhattan: a conversion, 36 net homes proposed, first certificate of occupancy in 2025 (job M00549294).
- 33-71 Prince Street, Queens: a new building, 208 net homes proposed, first certificate of occupancy in 2026 (job 421025982). Its certificate lists 120 homes.
I did not add the 824 homes to the pipeline or estimate how many are still unfinished. The certificate counts can include homes that are not permanent homes, and the two conversions list none despite their partial status, so the file does not say how many remain.
The targets chart
Target pace is the district’s five-year goal divided by five. Past pace is net homes completed from 2016 through 2025, divided by 10. I picked 2016 to 2025 because that is the window the city used to sort districts into growth cohorts (page 29 of the draft). For the income-restricted view, past pace is HPD’s new construction in projects started 2016 to 2025, divided by 10; HPD counts a project when financing closes, so these homes are counted earlier than the completions in the all-homes view.
Share of homes in new buildings that were income-restricted
The Housing Database lists, for each job, the affordable homes HPD associates with the project. That count is not limited to new permanent homes. The first version of this page divided it by all homes added in completed jobs, which let the share pass 100 percent: 556 percent in Manhattan Community District 11 in the first half of 2026. I replaced it on Nov. 6, 2026 with a measure where the income-restricted homes are always part of the homes counted.
- Included: completed new buildings (status 5), dated by first certificate of occupancy. A new building starts with no homes, so every permanent home in it is new. A building counts only if its affordable count is no larger than its permanent homes, and its certificate of occupancy lists no more homes than its permanent homes; more would point to rooming units or hotel rooms the affordable count could include. The share is the affordable count over the permanent homes, summed over the buildings and years selected.
- Left out of both sides: conversions and other alterations, where the affordable count can include homes that were there before the job; and new buildings that fail either test. In version 26Q2.1, from 2010 to June 2026, that is 244 alterations carrying 4,803 affordable homes and 444 new buildings with 4,855 permanent homes, 19 of which carry 1,994 affordable homes. In all, 6,797 of the 108,582 affordable homes in completed jobs are left out. The page gives the count left out for the years selected.
- What remains: 23,513 new buildings with 381,418 homes, 101,785 of them income-restricted by HPD’s count. From 2016 to 2025, 94,121 of 273,005, or 34 percent.
- The three cases the review named. Manhattan Community District 11 and Council District 9, first half of 2026: 111 East 123rd Street (job M00607118) lists 82 affordable homes and no permanent homes, and its certificate lists 82 homes, so it is left out. The district shares are now 18 of 18 homes, 100 percent, in Community District 11, and 18 of 59, 31 percent, in Council District 9. Bronx Community District 9, 2022: 1484 Watson Avenue (job 210179260) is a conversion from 48 homes to 108, with 102 affordable homes against 60 added, so it is left out; the share is now 8 of 40, 20 percent.
The build checks every job and every district for each of the year ranges a reader can pick, 16,983 combinations, and stops if the affordable count ever exceeds the homes counted. The district panels show HPD’s affordable count next to a large job only when the job is in this measure.
The pipeline view in the first section counts homes in every job City Planning lists as permitted (status 3), with no certificate of occupancy yet; it is not tied to a year, and some of those jobs have stalled. Partly complete jobs are in neither count. The growth view divides net homes by the 2020 census count of housing units in the district, which matches how the city measured past growth when it set the targets.
Median income
The Census Bureau does not publish survey figures for Council districts, or for community districts as drawn. It does publish them for Public Use Microdata Areas, which City Planning uses to approximate community districts, but those follow different lines in places and combine some districts. I added up each tract’s household counts in 16 income brackets, split by where the tract’s residents live, and found the median by straight-line interpolation inside the bracket where the middle household falls. When the middle household falls in the top bracket, which has no upper edge ($200,000 and up for income, $3,500 and up for rent), the page reports that floor with “or more”; this happens for income in Manhattan Community District 1 and for rent in Manhattan Districts 1 and 5. Run on the whole city, this gives $80,890; the bureau’s published 2020-2024 median for New York City is $80,483, half a percent lower. The target pace line in the scatter chart is 70,000 homes a year divided by the 2020 population: 8.0 per 1,000 residents.
Rents
Affordable means a rent of 30 percent of income or less. I used a two-person household: 60 percent of HPD’s 2026 median income for two people is $81,420 a year, or $2,036 a month; 100 percent is $135,700, or $3,393 a month. Shares are interpolated inside the census rent brackets. Gross rent includes utilities; the asking rent for vacant units is contract rent, without them, so the vacant view is a slightly easier test.
The maps compare two periods. The rents are five-year survey estimates for 2020 to 2024, in 2024 dollars; the thresholds are HPD’s 2026 figures, in 2026 dollars. I did not adjust either to match the other. The vacant view describes apartments that were on the market when the survey reached them, at some point in those five years, not apartments available now.
A district would be left blank in the vacant view if its estimated vacant units for rent, summed from tracts, came to fewer than 150. That is a cutoff on the weighted estimate, not on the number of homes the survey sampled, and it is not a test of reliability: a district can clear it on few survey responses. None fell under it in this release; the lowest were 515 in Council District 21 and 509 in Bronx Community District 5. The survey publishes a margin of error for each tract figure, and this page does not carry those through the split into districts or the interpolation inside rent and income brackets, so district figures are less certain than they look. That the method lands near the published citywide median income does not show the district figures are precise.
Judgment calls
Each is marked with who made it. Josh has not yet reviewed the ones marked Claude.
Use net homes, with demolitions subtracted
- Decision
- Every count is net of homes lost.
- Why
- The Chicago dashboard this follows could not subtract demolitions; New York’s Housing Database can. A district that tears down two-family houses for a slightly larger building should not get credit for the gross count.
- Effect
- Jobs completed 2016 to 2025 added 315,320 homes and removed 21,586; the page shows the difference, 293,734.
- Who
- Claude.
Show both Council districts and community districts
- Decision
- A switch at the top changes every chart except the targets, which exist only for community districts.
- Why
- The Council votes on rezonings, and by custom it follows the local member on projects in that member’s district; the city’s targets are set for community districts.
- Who
- Claude.
Name the current Council member
- Decision
- Each Council district shows who represents it now, with a note in the district panel that most homes finished in a given year were approved years earlier, often under someone else.
- Alternative
- Leave names off, or match each year to the member then serving. Matching by year would still misassign credit, since approvals happen years before completion.
- Who
- Claude.
Replace hand-collected listings with census rents
- Decision
- The Chicago dashboard checked two snapshots of listings, taken in late July. I used the census survey: rents tenants pay, and asking rents for vacant units, for 2020 to 2024.
- Why
- It covers every district with a published method.
- Cost
- Five-year survey numbers trail the market and understate current rents, and the vacant-unit sample is small.
- Who
- Claude.
Limit the income-restricted share to new buildings
- Decision
- The share counts only completed new buildings whose affordable and certificate counts fit within their permanent homes, and lists what it leaves out.
- Alternative
- Remove the share. Clipping it at 100 percent, or dividing by all proposed homes, would hide the mismatch rather than fix it.
- Who
- Claude, after an outside review on Nov. 6, 2026. Josh has not yet reviewed it.
Keep partly complete jobs out of both counts
- Decision
- The three partly complete jobs are listed on their own, outside the completed count and the pipeline.
- Alternative
- Follow City Planning’s summary tables, which count them as completions in the year of their first certificate. That would add 580 homes to 2017 and 36 to 2025, though most of those homes had no certificate.
- Who
- Claude, after an outside review on Nov. 6, 2026. Josh has not yet reviewed it.
Count HPD homes by project start
- Decision
- Income-restricted homes are dated by when the project started, the date HPD reports against its own goals.
- Effect
- These are homes financed, not finished. Many started since 2023 are still under construction.
- Who
- Claude, following HPD’s convention.
Split census tracts by where people live
- Decision
- A tract that straddles a district line is split by its 2020 block populations.
- Alternative
- Assign each tract wholly to one district, or split by land area. Both move more people into the wrong district.
- Who
- Claude.
What this does not do
- It does not count basement apartments and other homes created without a Buildings Department job, or homes built illegally.
- The income-restricted counts are what HPD counts toward the city’s housing plans. They are not a count of all income-restricted or public housing in the city.
- It does not say why a district built what it did. Zoning, land prices, transit and Council decisions all play a part; the page shows outcomes.
- The targets are a draft. The final report is due later in 2026, and the numbers may change.
Checks run
- 2020 block populations sum to 8,804,190, the census count, exactly. 1,760 residents fall outside every Council district line and 3,604 outside every community district, along the shore and in the parks and airports that are not community districts.
- District completions plus partly complete jobs match City Planning’s own summaries in every district and year from 2010 to June 2026, except a 3-home gap in 2010 in Council District 35 and Brooklyn Community District 8. The build stops if any district-year is off by more than 10 homes.
- For every job, district and selectable year range, the income-restricted homes in the share never exceed the homes counted; the build stops otherwise.
- The 2020 housing units in City Planning’s district tables sum to 3,618,635, the census count for the city.
- HPD’s income tiers add up to its counted homes in every building; the build stops on any mismatch.
- Every HPD building has a Council district and a community district; the build stops if one does not.
- The citywide median income from summed brackets lands within 0.5 percent of the published figure.
- The 59 targets sum to within 260 of the report’s 350,000.
Change log
- Oct. 22, 2026: first version. Housing Database 26Q2.1; HPD data through June 30, 2026; draft targets of Aug. 19, 2026.
- Nov. 6, 2026: corrections after an outside fact-check. The income-restricted share could exceed 100 percent because its numerator and denominator counted different homes; it now covers new buildings only, with the rules and exclusions above. Partly complete jobs, left out of every count before, are now listed on their own, and the gaps against City Planning’s summaries are explained. “Finished” is replaced with City Planning’s definition, the first certificate of occupancy. The rent maps now say they compare 2020-2024 rents with 2026 thresholds, and the vacant-unit cutoff and survey uncertainty are described more precisely. No other figure changed.