← Back to map

Methodology v2.0

How we score NYC parking buildings for EV battery fire risk

Overview

This tool scores approximately 6,350 parking buildings across New York City on the Fire Risk Index, a weighted sum of structural, regulatory, and EV-infrastructure risk factors. The index reflects how vulnerable each location is to an EV battery fire event in an enclosed structure — specifically, the factors that would determine whether a single-vehicle thermal runaway cascades into a multi-vehicle fire like the August 2024 Incheon, South Korea incident (140 vehicles destroyed, 23 hospitalized, 8 hours to extinguish).

The Fire Risk Index is not bounded at 100. Each building's score reflects the actual severity of the signals attached to it; capping at a round number would erase the gap between a building with a few issues and one with many. Alongside the raw number, each building has a percentile rank ("worse than X% of NYC garages") so the relative severity is legible without needing to know the whole distribution.

"Parking buildings" is broader than "parking garages" as most people think about them. Only about 1,600 of the scored buildings are standalone parking structures (PLUTO class G). The rest are residential, office, or institutional buildings with dedicated parking space inside them — the kind of ground-floor or basement garage that sits under apartments, under an office tower, or under a hospital. Most NYC parking exists this way. See Why garagearea, not just G-class below.

The score does not predict the probability of an EV fire occurring. EVs catch fire 20-60x less frequently than gasoline vehicles (~25 per 100,000 vs ~1,530 per 100,000). The score instead measures how bad it would be if one did occur at this specific location.

Why garagearea, not just G-class

Earlier pre-v1 versions of this map scored only PLUTO building class G (dedicated garages) plus any non-G building that happened to match an EV charger location. That second category definitionally meant "has EV charger," which made the map biased — any "buildings with parking" number we reported was inflated by EV presence rather than actual parking capacity. It also meant any apartment building with a real parking garage but no EV chargers was invisible to the tool.

v1 replaces that with a more honest selection: a building is "a parking building" if it is either G-class OR has garagearea ≥ 1,000 sqft (roughly 3 or more cars) in PLUTO. PLUTO classifies buildings by their dominant use, so most NYC parking ends up inside buildings classified as something else:

Adding garagearea ≥ 1000 to the selection adds about 4,500 buildings the previous version missed, most of them in the exact "people sleeping above parking" configuration that makes battery fires dangerous at night. The Reims, June 2025 e-scooter fire — 4 dead in a social housing tower — happened in a building of this type.

Reading the Map

Every dot on the map encodes four things. Each visual channel maps to an independent dimension of risk, so you can scan multiple things at once:

ChannelDimensionDetails
Color Fire Risk Index tier (severity) Red = High (score ≥70 OR multiple hazard mechanisms maxed out), orange = Elevated (≥50 OR 2+ mechanisms maxed), yellow = Moderate (≥30), green = Low (<30). Semantic escalation catches buildings whose individual mechanism contributions saturate without the raw score crossing a threshold. See the Scoring Formula below.
Size Garage capacity (how many cars are at stake) Square-root-scaled on PLUTO garagearea. Bigger dot = bigger garage. Roughly: 1K sqft → 3.5px, 10K sqft → 5px, 100K sqft → 9px, 250K+ sqft → 14px (capped). Buildings with garagearea = 0 in PLUTO use a default 5px. Size does not encode risk; color does.
Border EV charger presence (binary) White ring = one or more AFDC-listed EV chargers at this building. Black border otherwise. Charger count is already baked into the score via the EV bonus — the ring is just a "heads up, EVs congregate here" flag.
Opacity Data confidence Three tiers based on the combined count of DOB sprinkler permits + FDNY violation records for the building. Solid (~49% of buildings): 3+ records on file. Medium (~11%): 1-2 records; thin data backing. Translucent (~39%): no records either way; the score is inferred from the absence of evidence and should be interpreted with caution. See Sprinkler System Evidence for how we reason about this.
The charger tooltip on the legend used to say "dot size scales with port count." That was true in earlier versions but is wrong now — we decoupled size from chargers because it double-counted the EV factor (already in the score) and visually implied "more charging = more danger," which contradicts this tool's own framing that parked EVs are the risk, not charging itself.

Scoring Formula

The Fire Risk Index is a weighted sum of structural, regulatory-compliance, and EV-infrastructure factors. Points are additive, then hazard-mechanism caps bound how much any single failure mode (sprinkler, structural, egress, etc.) can contribute regardless of how many sources cite it. This prevents double-counting: one failing sprinkler system can show up as a DOB permit gap, an FDNY maintenance violation, and an ECB Class 1 citation, each contributing points. The cap bounds the mechanism's total contribution to the p95 of its raw distribution across all NYC garages.

Fire Risk Index = Structural Age + Sprinkler Evidence + Multi-Story
  + DOB LL126 Parking Structure + DOB ECB Fire-Relevant + DOB NOW Fire Systems
  + LL26/2004 Active + FDNY Compliance + EV Charger Presence
  − hazard-mechanism cap excess (subtracted when any mechanism's raw total exceeds its cap)

Hazard-mechanism caps, set at the p95 of each mechanism's raw distribution:

MechanismCapTypical contributors
sprinkler30DOB sprinkler permit gap, LL26 retrofit flag, FDNY BF12/BF20, DOB NOW sprinkler filings, ECB sprinkler-keyword Class 1/2
structural23DOB LL126 PS unsafe/initial, DOB ECB construction Class 1, DOB NOW structurally-compromised
egress18ECB exit/egress-keyword Class 1/2, DOB NOW photoluminescent, LL26/2004 exit-sign active
fireman_service16ECB elevator fireman-service Class 1
other8ECB other elevator / uncategorized fire
power7DOB NOW emergency power, LL26/2004 emergency power active
alarm6FDNY other fire-protection charges, ECB alarm/smoke-keyword

Each building's popup shows both the raw per-mechanism contribution and any cap applied, so readers can see "sprinkler had 113 raw points of signal but only 30 counted toward the Index." Tier assignment uses a score-threshold backbone (70/50/30) with escalation safety nets: if a building has 2+ maxed mechanisms it rises to Elevated, 3+ rises to High, and sprinkler+structural both maxed rises to High. These catch buildings whose severity is legible across multiple failure modes without any single source crossing a numeric threshold.

1. Structural Age (0-30 points)

Year BuiltPointsRationale
Before 196830Built under pre-modern NYC building code. Maximum structural deterioration time. Original fire safety standards were designed for lighter vehicles and different fire profiles.
1968-200315Built under 1968 NYC Building Code but before IBC adoption.
2004 or later5Built under International Building Code with modern fire safety requirements.
Unknown20No year recorded in PLUTO — treated as likely pre-1968.

Why 1968? NYC adopted its first comprehensive modern building code in 1968. Buildings built before this date were designed to varied and often undocumented standards. The 1968 code established uniform structural and fire safety requirements for the first time.

2. Sprinkler System Evidence (0-30 points)

This factor measures evidence that a building has a sprinkler system, combining two independent data sources:

Important distinction: DOB vs FDNY. DOB permits measure presence (was a system installed or modified?). FDNY violations measure maintenance (is the system being kept in working order?). A building can have a DOB permit AND open FDNY violations — system was installed correctly, but isn't being maintained. A building can have FDNY violations but no DOB permit — system exists (pre-1990 install) but was never modified in the digital era. These are different risk profiles, scored by different factors.

EvidencePointsWhat we know
DOB sprinkler permit exists (any date)0System confirmed present with activity in modern DOB records.
No DOB permit, but FDNY sprinkler violation confirms system5System confirmed present (FDNY proves it), but no modern installation/modification record. Likely a pre-1990 install.
No DOB + no FDNY, but post-2004 residential ≥4 floors10Local Law 26 of 2004 required sprinklers at construction for residential buildings ≥40 ft. Sprinkler install was likely bundled into the New Building (NB) permit, which our pipeline doesn't capture as a separate sprinkler record. Some uncertainty remains.
No evidence + any other building15No DOB permit, no FDNY sprinkler violations. System status genuinely unknown. Some buildings may have pre-1990 systems that have never been cited; others may have no system at all.
No evidence + pre-2004 residential ≥10 floors30Local Law 26 required these buildings to retrofit sprinklers by July 1, 2019. A retrofit on an existing building requires its own dedicated DOB sprinkler permit. Absence of any permit is a strong signal the legally-mandated retrofit was missed. Flagged in the popup as LL26 retrofit deadline likely missed.
No evidence + post-1984 office ≥7 floors30Local Law 16 of 1984 required sprinklers at construction for new office buildings ≥75 ft. No DOB permit for these buildings is concerning. Flagged as LL16.

Why not use the permit DATE as a signal? We explored using the age of the most recent DOB sprinkler permit as a risk differentiator (e.g., "pre-2010 permit = higher risk"). This doesn't hold up to scrutiny: most NFPA 25-mandated sprinkler maintenance (annual inspections, head testing, flow tests) is performed by Certificate of Fitness holders and does NOT require a DOB permit. A building with a 1995 DOB permit could have a perfectly maintained system with annual FDNY inspections for 30 years without ever filing another permit. The date of the permit tells us when the system was installed or last substantially modified — not its current condition. We use binary presence (permit or no permit) rather than date-based tiers.

Can sprinklers stop an EV fire? No. Sprinklers cannot extinguish a lithium-ion thermal runaway — the fire happens inside a sealed battery pack. But full-scale testing (Fire Technology, 2024) found that sprinklers at adequate density prevent fire spread to adjacent vehicles, which is the difference between a single-car event and a 140-car catastrophe.

NYC is behind on sprinkler density standards. In 2022, NFPA 13 reclassified parking garages from Ordinary Hazard Group 1 to Group 2 (OH1 → OH2), increasing the required sprinkler water discharge density by 33% (0.15 → 0.20 GPM/SF) to address modern vehicle fire loads including EVs. NYC's 2022 Building Code still references NFPA 13-2016, meaning even brand-new NYC sprinkler permits default to the old OH1 density. This is a parallel to the LL39 / EN 15194 e-bike certification gap — in both cases, NYC is behind on adopting stricter safety standards that specifically address vehicle/battery fire risks. San Francisco goes even further, requiring double the OH2 density (0.40 GPM/SF) at DC fast charging spots.

Can we get actual system specifications? Sprinkler engineering drawings filed with DOB are public records, obtainable through DOB BIS Options record requests (~$8/page) or FOIL requests. These would show the actual GPM/SF a system was designed for. This is not scalable to thousands of buildings but is a viable path for investigating individual high-scoring locations.

3. Multi-Story Structure (0-10 points)

FloorsPointsRationale
3+ floors10Multi-story enclosed structure — more vehicles, harder evacuation, heat rises to upper floors.
2 floors5Partial enclosure risk.
1 floor0Single-level structure.

4. DOB Violation Signals

v1.3 dropped the keyword-matched DOB Violations filter (too narrow — caught only 406 garages on a taxonomy that's mostly administrative follow-up records) in favor of three targeted DOB sources. Each attributes to specific hazard mechanisms so double-counting is prevented at the cap layer.

DOB LL126 Parking Structure Program (0-12 points, attributes to structural)

The Local Law 126 periodic parking-garage inspection mandate (from DOB NOW, device_type='Parking Structures'). Picks up buildings with filed-but-not-corrected "unsafe" reports (+12 flat) and buildings that never filed the mandated inspection at all (+8 flat). No age decay because the LL126 program is only ~4 months old.

DOB ECB Class 1 / Class 2 Fire-Relevant (variable points, attributes by keyword)

Active+uncured Immediately Hazardous / Class 1 and fire-relevant Class 2 violations from the DOB ECB Violations dataset, weighted by category and multiplied by age since issue (older uncured = ×1.25–×2):

CategoryBase PointsAge multiplier
Class 1 Construction, fire keyword63y → ×1.25, 5y → ×1.5, 10y+ → ×2
Class 1 Elevator, fireman-service keyword4Same
Class 1 Construction, other (non-fire)3Same
Class 2, fire keyword2Same
Class 1 Elevator, other1Same

Each record's points are attributed to a hazard mechanism by description keyword: SPRINKLER/STANDPIPE → sprinkler, EXIT/EGRESS → egress, ALARM/SMOKE → alarm, construction-other or unclassified fire-relevant → structural, elevator fireman-service → fireman_service.

v2.0 tightened the fire-keyword classifier: dropped UNSAFE (was sweeping LL11/FISP facade-cycle reports that are structural defects, not fire risks) and added a negative filter so "GAS FIRED BOILER" / "FIRE-HYDRANT" don't count unless paired with a real fire indicator elsewhere in the description.

DOB NOW Fire System Device Filings (0-21 points, attributes by device type)

Open violations from DOB NOW Safety Violations (855j-jady) on fire-relevant device types:

Device typePointsAttributes to
Sprinklers6sprinkler
Emergency Power6power
Photoluminescent1egress
Structurally Compromised Buildings8structural

Legacy LL26/2004 Active Violations (0-4 points)

Narrow slice of the 3h2n-5cm9 DOB Violations dataset restricted to active LL26/2004 retrofit-mandate records:

SubtypePointsAttributes to
LL2604S (sprinkler)2sprinkler
LL2604E (emergency power)1power
LL2604 (photoluminescent)1egress

5. FDNY Fire Protection Compliance (0-25 points)

This is a new factor based on FDNY fire-protection violation data from the OATH/ECB Hearings dataset — the administrative hearings tribunal where FDNY violations get adjudicated. The FDNY-named datasets on NYC Open Data contain fewer than 50 records; the actual ~926,000 FDNY violation records live in the OATH dataset.

We filter to fire-protection-relevant charges (sprinkler maintenance failures, inspection/testing failures, fire protection system deficiencies) and score only OPEN (unresolved) violations. Resolved violations ("All Terms Met") do not add to the score — a building that gets cited and fixes the problem is being managed, not neglected.

Time weighting: older open violations indicate persistent non-compliance and score higher. A building with a 10-year-old unresolved sprinkler maintenance violation has demonstrated sustained neglect — worse than a building with a recent citation still in its remediation window.

Open violation type0-2 years2-5 years5-10 years10+ years
BF12 — sprinkler/standpipe maintenance failure35710
BF20 — inspection and testing failure2357
Other fire protection system charges1234

v2.0 removed the 25-point factor-level cap in favor of the hazard-mechanism caps described above. BF12 and BF20 points attribute to the sprinkler mechanism (FDNY BF20 "inspection/testing" citations are almost always sprinkler/standpipe in practice); "other fire protection" charges attribute to alarm. So a building with 10 unresolved 10-year-old BF12s adds +100 raw sprinkler points to the score, then the sprinkler cap subtracts 70 as excess — the building still scores higher than a building with just 2 recent BF12s, but the evidence is only counted once at the mechanism level.

Why do open violations persist? FDNY can issue citations and levy fines but cannot physically force a building to upgrade its systems. Penalties are often modest relative to the cost of compliance (a $1,500 fine vs. a $200,000 sprinkler upgrade). Many violations result from default judgments where the respondent never appeared. In our scored buildings, 61% of open fire-protection violations are 5+ years old, and 37% are 10+ years old. This is structural non-compliance, not recent oversights.

5. EV Charger Presence (0-15 points)

Garages with EV chargers concentrate vehicles that may be actively charging at high state of charge, which increases thermal runaway severity. DC fast chargers put more thermal stress on batteries than Level 2.

Weighted PortsPointsCalculation
20+15Weighted ports = L2 count + (DC fast count × 3)
4-1910
1-35
None0

Existing chargers only. v2.0 only counts AFDC stations with status_code='E' (existing/operational) toward the EV bonus. AFDC "planned" stations (registered with AFDC but not yet energized) don't contribute to the score — there's no thermal stress from a charger that isn't live. Planned stations and DOB-filed-but-not-AFDC-listed installs are surfaced separately as a pending EV install flag (see Data Sources below), not baked into the score.

Why is charger presence a bonus, not a requirement? Roughly 56% of documented EV battery fires occur while the vehicle is parked and not charging. Any garage where EVs park is at risk — chargers just increase the concentration and add charging-related thermal stress.

Pending EV install signal (not scored)

Two forward-looking signals are surfaced on the map as a Pending EV install filter and popup badge, but not added to the Fire Risk Index:

The two signals are largely disjoint — only one BBL overlaps. Together they flag ~110 parking structures in the pipeline of rollout, catching both the "operator registered early" and "permit filed quietly, AFDC hasn't caught up" patterns. See also the DOB ECB and DOB NOW Electrical deep links in each popup for drilling into the underlying records.

Data Sources

NYC PLUTO (Primary Land Use Tax Lot Output)

The foundation of the analysis. PLUTO contains building-level data for all ~870,000 NYC properties including building class, year built, number of floors, building area, basement type, and — critical to v1 — garagearea (sqft of dedicated parking space within a building).

NYC Planning Labs Geosearch (PAD-backed)

Used in v1 for address-to-BBL resolution of AFDC chargers. Geosearch is a free, keyless API maintained by the NYC Department of City Planning's Planning Labs team, wrapping the Property Address Directory (PAD) — the authoritative NYC dataset for mapping every address, including aliases, to its BBL.

NYC ArcGIS MapPLUTO

Used in v1 as fallback for chargers whose address doesn't resolve via Geosearch. Exposes tax lot polygons (not just centroids) so we can do true point-in-polygon queries.

DOB Permit Issuance

Historical building permit records. We query for sprinkler permits (permit_subtype='SP') to determine fire suppression history.

DOB NOW Build Approved Permits

Newer permit system (2021+). Queried separately because it uses different field formats (BBL as a single field, ISO dates).

DOB Violations (legacy 3h2n-5cm9)

Legacy BIS DOB violations dataset. In v1.3+ we narrowed this to active LL26/2004 retrofit-mandate records only (sprinkler, emergency power, photoluminescent exit signs). The broader keyword filter (IMEGNCY/UB/COMPBLD) was dropped — it caught only ~400 buildings on a taxonomy dominated by administrative follow-up records, and the real hazard signal moved to the DOB ECB and DOB NOW sources below.

DOB ECB Violations (6bgk-3dad) — primary DOB hazard source in v1.3+

DOB violations adjudicated at OATH/ECB, with the full violation description text and hazard class (Class 1 / Class 2) we need for keyword classification. This is the main source of DOB-side signal for the Fire Risk Index.

DOB NOW Safety Violations (855j-jady) — newer device-taxonomy source

Post-2021 DOB violations with structured device_type metadata. Drives the LL126 parking-structure signal and the fire-system device signals (sprinkler / emergency power / photoluminescent / structurally compromised).

FDNY Fire Protection Violations (via OATH/ECB)

FDNY violations are adjudicated through the Office of Administrative Trials and Hearings (OATH). The actual violation records (~926,000 total) live in the OATH ECB Hearings dataset — the FDNY-named datasets on NYC Open Data contain fewer than 50 records.

Why OATH and not FDNY directly? FDNY publishes two named datasets on NYC Open Data (ktas-47y7 and avgm-ztsb) but they contain fewer than 50 records combined. The actual FDNY violation universe flows through the OATH hearings process and is only accessible in bulk via the OATH dataset. FDNY annual inspection data (as distinct from violation data) is not available as open data — it's maintained internally by FDNY and accessible only through FOIL requests or the FDNY Business Portal (per-building lookup, not bulk).

AFDC Alternative Fuel Stations

US Department of Energy database of EV charger locations.

Limitation: AFDC is voluntary — operators self-register. Even with the v2.0 widening, our count remains a lower bound. Some garages with installed chargers (tenant-only, fleet, older installs) may not be in the federal database even as private entries. See the charger source audit for the 2×2 breakdown of AFDC presence × DOB permit paper trail across the has_chargers=True set.

DOB NOW Electrical Permit Applications (dm9a-ab7w)

Used in v2.0 to detect recent EV-charger electrical-permit activity at buildings that don't yet appear in AFDC as existing chargers. Drives the Pending EV install flag and a deep-link in each popup.

OpenStreetMap

Community-edited map data. Queried via Overpass API for parking facilities tagged as parking=underground or parking=multi-storey within the NYC bounding box.

Charger Matching

Connecting AFDC charger stations to specific NYC tax lots (BBLs) is the hardest data problem in this project. AFDC gives us the charger's coordinates plus its street address, but doesn't identify the building it's in. PLUTO tells us about buildings but not chargers. We need a reliable method to link them.

Pre-v1 used a simple nearest-centroid approach: for each charger, find the PLUTO tax lot whose centroid is closest and call that the charger's building. This failed for two common cases:

v1 replaces that with a cascade of matching methods, in priority order:

Step A: Address resolution via NYC PAD (97% of matches)

We query NYC Planning Labs Geosearch with the charger's street address from AFDC. Geosearch is backed by the NYC Property Address Directory (PAD), which maps every address-and-alias in the city to its BBL. PAD handles the common NYC quirk that one BBL can have multiple addresses on different street frontages — which PLUTO doesn't expose.

Example: an AFDC charger at "377 E 33rd St" (the NYU Langone Garage H). PAD knows that address is an alias for BBL 1009390028, which is the luxury apartment tower whose primary PLUTO address is 347 E 33 Street. PLUTO alone has no record of "377 E 33rd" — PAD does.

We bias the query with the charger's own lat/lon (focus.point) and skip results whose returned coordinates are more than 1,000 ft from the charger, so fuzzy text matches like "251 New Jersey Avenue" don't get returned when we asked for "251 Avenue C."

Step B: Point-in-polygon via ArcGIS MapPLUTO (1-2% of matches)

When the AFDC address doesn't resolve cleanly (typographical errors, stale address strings, facility renamings), we fall back to geometry. The NYC ArcGIS MapPLUTO REST endpoint exposes every tax lot's actual polygon. We query with the charger's lat/lon and ask which polygon contains it. If the point is inside a polygon, we have an unambiguous match.

Step C: Nearest-polygon-edge within 20 ft (1-2% of matches)

Points that are outside all polygons (curbside AFDC markers in the street) still usually have a building within a sidewalk's width. We use shapely to compute the distance from the charger to each nearby polygon edge and take the closest within 20 ft (approximately one sidewalk). More than 20 ft means the charger isn't adjacent to any building — usually a data error.

Step D: Unmatched (floating charger)

If all three steps fail, the charger is shown on the map as a "floating" dot with its AFDC street address label but no building association and no scoring effect. This is rare (typically 1 out of 264 chargers) and almost always due to AFDC data errors — e.g., a street address and a latitude/longitude that disagree with each other.

Match results are cached in charger_bbl_map.json between runs so we don't re-query external APIs unless the cache is cleared.

What's Included

Every NYC tax lot where either (a) the PLUTO building class starts with G (dedicated parking/automotive use) or (b) PLUTO reports garagearea ≥ 1,000 sqft regardless of class. Approximate v1 counts:

CategoryApprox. countSource
Standalone parking garages (G1/GU/GW)1,650PLUTO building class
Multi-story G0 residential garages<50PLUTO class + numfloors > 1
Under-residential (apartments, condos)~3,000PLUTO class D/C/R/A/B + garagearea ≥ 1,000
Under-commercial (offices, retail, stores w/ apts)~780PLUTO class O/K/S + garagearea ≥ 1,000
Institutional (hospitals, religious, schools)~145PLUTO class H/I/M + garagearea ≥ 1,000
Other (warehouses, utilities, mixed)~630Other PLUTO classes + garagearea ≥ 1,000
Total scored~6,350Slight increase over v1.x (~6,200) because the broadened AFDC fetch surfaced ~190 additional BBLs with real charger matches that weren't in the original garagearea-filtered set.

Buildings with garagearea between 1,000 and 2,500 sqft (roughly 3-7 cars) are tagged with a small_garage flag. The scoring formula applies uniformly to them, but the flag exists so filtering and interpretation can distinguish small ground-floor parking from full multi-car garage operations.

What's Excluded

Known Limitations

Sprinkler evidence is inferred, not confirmed

We combine two sources — DOB sprinkler permits and FDNY fire-protection violations — to infer whether a building has a sprinkler system. Neither source directly confirms current system status:

For buildings where a legal mandate (LL26 or LL16) specifically required sprinklers and neither data source shows evidence, we flag the building and apply a higher penalty. For all other buildings with no evidence, we apply a moderate penalty that reflects genuine uncertainty. Bulk data cannot confirm system specifications (GPM/SF) — that requires DOB engineering drawings obtainable through record requests (~$8/page) or FOIL.

FDNY violations reflect inspection bias

Buildings that get inspected more frequently (high-rise commercial, places of assembly, hospitals) will have more FDNY violations recorded than buildings that are rarely inspected (smaller residential, some commercial). A building with zero FDNY violations may be genuinely compliant — or may simply never have been inspected. The FDNY compliance factor scores only when violations ARE present; absence is treated as neutral, not positive.

Open vs enclosed parking structures

NFPA distinguishes between enclosed parking garages and "open parking structures" (multi-story with adequate ventilation through open sides). These have different sprinkler requirements. We cannot reliably distinguish them from PLUTO data — we exclude surface parking lots (G6/G7) but cannot differentiate an enclosed multi-story from an open-sided one within the remaining set. This may cause some open parking structures to be scored higher than their actual risk profile warrants.

PLUTO garagearea is self-reported and imperfect

The garagearea field on PLUTO is populated during Department of Finance assessment and reflects what the city has on file. Some ground-floor garages may be under-reported; some "garagearea" values may conflate parking with storage or service space. The 1,000 sqft threshold filters the most obvious noise (single-car residential) but the exact size of the captured set will shift quarterly as PLUTO updates.

Warehouse (E) and factory (F) classes are included

Roughly 311 E-class (warehouse) and 86 F-class (factory) buildings in the scored set qualify via garagearea ≥ 1,000 sqft. In some cases these "garage areas" are truck loading docks or service-vehicle staging rather than passenger parking, which is a different fire-risk profile (different fleet composition, different maintenance regime, commercial-only access). The inclusion is intentional — our filter is owner-agnostic and class-permissive by design, and industrial buildings with significant enclosed vehicle space are legitimate fire-risk context — but users filtering by garage_type should know that "other" (the default category for non-residential, non-commercial, non-institutional) captures most of these.

FDNY and DOB link filters use zero-padded lot numbers

The "View FDNY violations on NYC Open Data" and "View all active DOB ECB violations" popup links construct SoQL filters using BBL-derived borough/block/lot fields. The OATH Hearings dataset stores ~3% of violation_location_lot_no values without leading zeros (e.g. lot 42 as "42" rather than "0042"), so the FDNY link uses an IN clause covering both padded and unpadded forms. For low-lot-number pre-war Manhattan buildings especially, the older unpadded convention persists.

Underground classification is incomplete

PLUTO basement codes + OSM identify approximately 200 underground garages. The true number in Manhattan alone is likely much higher — virtually every large residential or office building built since the 1960s has below-grade parking. The INRIX parking API has a "Subterranean" classification for 350K+ facilities globally but requires enterprise licensing.

Charger data is a lower bound

AFDC is voluntary and self-reported. Our ~264 NYC garage stations likely undercount the true number. Smaller operators and recently installed chargers may not be registered.

Charger matching is ~99% but not 100%

The v1 PAD-plus-geometry cascade resolves almost every AFDC charger to the correct BBL, but rare cases remain where AFDC's street address and coordinate disagree with each other — one or both is wrong. Those chargers appear as unmatched "floating" dots on the map with no building association.

This is not a structural assessment

A high score means a building has risk factors — it does not mean the building is unsafe or will have a fire. Only a licensed engineer can assess structural integrity, and only an on-site fire safety inspection can determine actual suppression capability. The 57 Ann Street collapse investigation took two years to determine the actual cause.

Scores reflect data availability

A building with extensive DOB records will have more data points to score against. Absence of violations may mean a clean record or may mean the building hasn't been inspected recently.

Background Research

Why fire, not weight?

This project began as an investigation into whether heavier EVs were stressing old parking structures. The engineering evidence says no: even a worst-case scenario with every spot filled with a 9,063 lb GMC Hummer EV produces only ~38.7 psf — still under the 40 psf IBC design minimum (Pankow Foundation, 2024). The weight concern was amplified by the April 2023 Ann Street garage collapse, where officials initially blamed vehicle weight. The actual cause (revealed two years later) was unauthorized removal of a load-bearing masonry pier.

EV fire behavior in enclosed structures

EV battery fires differ fundamentally from gasoline fires: they burn at ~5,000°F vs ~1,500°F, last 60-90+ minutes vs ~30 minutes, can reignite days later, and produce toxic hydrogen fluoride gas. Roughly 56% of documented EV battery fires occur while the vehicle is parked. The primary causes at rest are manufacturing defects in battery cells (torn anode tabs, folded separators, metal particle contamination) that can lie dormant for months before triggering thermal runaway.

The regulatory gap

After the Incheon fire, South Korea mandated retroactive sprinkler upgrades in existing garages, battery chemistry disclosure, state-of-charge limits for underground parking, and mandatory fire liability insurance. The US has none of these. NFPA actively voted to remove EV charging provisions from NFPA 30A in 2024. Meanwhile, NYC Local Law 55 (2024) requires 20% of commercial parking spaces to be EV-ready — with no fire safety conditions attached. More chargers in old garages, no sprinkler upgrades required.

The detection gap

Sprinklers can contain an EV fire but cannot extinguish it. However, there is a window for earlier intervention: lithium-ion cells emit hydrogen gas during the early stages of thermal runaway, 16-26 minutes before flames (Energy Material Advances). A single venting cell produces over 1,000 ppm of hydrogen outside the battery pack — roughly 1,000x the indoor background level of ~1 ppm — easily detectable with existing sensor technology.

This is not theoretical. China mandates thermal runaway warning systems in EV battery packs (using the vehicle's onboard BMS). NFPA 855 (2026 edition) requires hydrogen detection for stationary energy storage systems — the shipping-container-scale battery banks at solar farms and data centers. Commercial products exist for this: Li-ion Tamer (now Honeywell) detects thermal runaway off-gassing for battery rooms, and H2Scan's HY-GUARD is designed specifically for battery room safety.

But this technology has not been applied to parking garages or residential battery storage. No US fire code requires gas detection in parking structures. No building code addresses thermal runaway detection in e-bike storage rooms. The same chemistry that NFPA considers dangerous enough to require hydrogen monitoring in a grid battery installation receives zero detection requirements when it's in a vehicle parked in a basement or a bike stored in an apartment.

The broader picture: e-bikes and the case for detection over bans

This project is not anti-EV. EVs catch fire 20-60x less frequently than gasoline vehicles. The problem is not the technology — it's that our fire safety infrastructure hasn't caught up to the reality that lithium-ion batteries are now everywhere, in vehicles of every size.

Nowhere is this clearer than with e-bikes. NYC recorded 279 e-bike battery fires in 2024, with 18 deaths in 2023. FDNY officials consistently identify uncertified batteries in fire investigations — "Many times, I'd look at the battery and see there was no certification on it" (John Orlando, former FDNY Lithium-Ion Battery Task Force). No fire from a genuinely UL 2271/2849 certified battery has been documented in public records.

NYC is addressing the root cause through practical legislation: Local Law 39 (2023) requires UL certification for all e-bike batteries sold in the city, and battery exchange programs are replacing uncertified batteries with certified ones. This is evidence-based policy addressing the actual problem.

But many NYC buildings have responded with blanket bans on all e-bikes and lithium batteries in common areas — regardless of certification status. This creates a paradox: a UL-certified 500 Wh e-bike battery is banned from a building's bike room, while 119 NYC garages are hosting EV chargers (50,000-100,000 Wh batteries) with no evidence of fire suppression maintenance.

The argument for detection is not that it makes bad batteries safe — it doesn't, and uncertified batteries need to be removed from circulation. The argument is that certified batteries + hydrogen detection creates a safety profile that makes blanket bans unnecessary. An e-bike battery is 150x smaller than an EV battery. With early detection providing minutes of warning, a 500 Wh battery event in a monitored space is survivable and manageable. A 500 Wh battery event with zero warning while someone is sleeping is how people die. The technology to bridge that gap exists, is proven, and is already required in other contexts. It just hasn't been applied here yet.

References

Pankow Foundation. "Safe and Sustainable Parking Garage Live Loads in the Age of the Electric Vehicle." Report RGA-05-24, 2024. Link

Springer / Fire Technology. "Full-Scale Fire Testing to Assess the Risk of Battery Electric Vehicle Fires in Underground Car Parks." Vol. 61, pp. 4133-4163, 2025. Link

NFPA. "Parking Garages and EVs." July 2024. Link

EV FireSafe. "EV Battery Fire Data." Global incident database, updated continuously. Link

ICCT. "Clearing the Air: EVs Could Bring Lower Fire Risk." October 2024. Link

MDPI / Fire. "Risk Assessment of Toxic Gas Dispersion from Electric Vehicle Fires in Underground Apartment Parking Garages Using Numerical Analysis." Vol. 8, Issue 3, 2025. Link

Wen, Y.K. and Yeo, G.L. "Design Live Loads for Passenger Cars Parking Garages." ASCE Journal of Structural Engineering, Vol. 127, No. 3, 2001.

Gothamist. "Deadly Manhattan parking garage collapse tied to unsafe demolition, structural neglect, city report finds." April 28, 2025. Link

Fortune. "Exploding Mercedes-Benz EV prompts parking garage bans in South Korea." August 7, 2024. Link

NFSA. "Fire Protection for Parking Garages." April 2024. Link

SF Fire Department. "Sprinkler Protection Requirements for Parking Spaces Associated with Electric Vehicle Charging Stations." Information Sheet 429. Link

NYC Local Law 55 (2024). EV charging infrastructure requirements for commercial parking. Analysis

Energy Material Advances. "A Critical Review of Thermal Runaway Prediction and Early-Warning Methods for Lithium-Ion Batteries." Gas signals provide 16-26 minutes of advance warning. Link

Journal of Energy Storage. "Hydrogen gas diffusion behavior and detector installation optimization of lithium ion battery energy-storage cabin." H2 detector warned 145 seconds before thermal runaway; 1,493 ppm H2 measured outside pack. Link

NFPA 855, 2026 Edition. Standard for the Installation of Stationary Energy Storage Systems. Mandates combustible gas detection including hydrogen. Analysis

NFPA Journal. "Lithium-Ion Battery Fire Learnings from FDNY." August 2025. Link

FDNY Commissioner Robert S. Tucker. Statements on uncertified lithium-ion batteries. October 2024. Link

CPSC. Warning on Rad Power Bikes batteries (non-UL-certified). 2026. Link

NYC Local Law 39 (2023). UL certification requirements for e-bike batteries. Link

UK Office for Product Safety and Standards. "Fires in E-bikes and E-scooters 2024." 45% from aftermarket conversion kits, 20% from factory-built. Link

NYC DOT. E-Bike Trade-In Program. 2025. Link

Last updated: April 2026. Data snapshot reflects NYC Open Data as of query date. Source code and data on GitHub.

Overview Why garagearea Reading the Map Scoring Formula Data Sources Charger Matching What's Included What's Excluded Known Limitations Background Research Why fire, not weight? EV fire behavior The regulatory gap The detection gap E-bikes & detection vs bans References