NFPA 855 Explosion Control for BESS — Deflagration Venting, Prevention & the 2026 Edition
20 min read
What you'll learn
- Understand why flammable off-gas, not fire, is the real explosion hazard in a BESS enclosure
- Know the difference between deflagration venting (NFPA 68) and explosion prevention (NFPA 69)
- Understand the 2026 NFPA 855 shift from venting to prevention and why it matters
- See how UL 9540A test data feeds separation, ventilation, and explosion-control design
- Know what to verify in a BESS fire-safety package
Thermal runaway in a battery energy storage system does two things: it releases heat, and it releases a flammable gas mixture. Most of the fire-safety conversation is about the heat. The explosions that have injured firefighters — most notably the 2019 APS McMicken event in Surprise, Arizona — were caused by the gas. This guide explains why the explosion, not the fire, is the hazard a BESS fire-safety design must solve, how NFPA 855 governs it, and how UL 9540A test data feeds the design.
The hazard is the gas, not the fire
A lithium-ion cell in thermal runaway vents flammable gases: hydrogen, carbon monoxide, methane, and electrolyte vapor. These gases do not burn inside the cell — they burn where they find oxygen and an ignition source. Inside a sealed BESS enclosure, the gases accumulate. The enclosure is where the explosion becomes possible.
The composition of the gas matters, because it drives everything downstream. The electrolyte — a lithium salt dissolved in organic carbonate solvents — decomposes under heat into a mixture dominated by hydrogen and carbon monoxide, with methane and other light hydrocarbons alongside. Hydrogen is the main flammability driver: it has a wide flammable range, a very low minimum ignition energy, and it is buoyant, so it rises and pools at the top of the enclosure. Carbon monoxide adds its own flammability and a serious toxicity concern for anyone entering the space. Hydrogen fluoride, released during thermal decomposition of the electrolyte salt and binder materials, is highly toxic but not flammable — it matters for responder safety, not for the explosion.
The McMicken event is the clearest example of how this plays out. On 19 April 2019, a single cell at the APS McMicken substation failed from an internal short caused by lithium plating and dendritic growth. The failure cascaded into thermal runaway through the rack. The clean-agent suppression system — Novec 1230 — discharged as designed but could not stop a self-sustaining thermal runaway; it was sized for ordinary combustibles, not for a propagating cell-to-cell failure. With no thermal barriers between cells and no ventilation path, the enclosure filled with flammable gas.
About three hours into the event, the container was full of flammable gas but almost no oxygen — the thermal runaway had consumed it. The gas could not burn without oxygen. When firefighters opened the container door, fresh air entered and mixed with the gas. The mixture entered the flammable range and ignited. Eight firefighters and one public safety officer were injured, four of them seriously. The investigation’s conclusion: the battery modules did not themselves explode. The accumulated gas mixture did.
The explosion is a gas event. The cells release the gas; the enclosure contains it; the ignition source ignites it.
Key concept: Thermal runaway is a heat problem at the cell and module level and a gas problem at the enclosure level. Fire suppression addresses the heat. Explosion control addresses the gas. A BESS enclosure needs both.
Two ways to stop an explosion: vent it or prevent it
This section is included with All-Access.
Get accessThe 2026 shift: NFPA 855 moves from venting to prevention
This section is included with All-Access.
Get accessThe omission path: the 25% LFL deflagration hazard study
This section is included with All-Access.
Get accessWhat the system actually looks like on an enclosure
This section is included with All-Access.
Get accessTRPP — stopping propagation before the gas problem starts
This section is included with All-Access.
Get access