parse5 is a Node.js toolset for HTML parsing and serialization, designed to be compliant with the WHATWG HTML Living Standard (HTML5). It’s useful when you need to parse HTML the way modern browsers do, or serialize HTML from a parsed structure.
Project status
- Actively maintained: upstream was pushed on Nov. 3, 2026, and v8.1.0 followed on Nov. 1.
- Updates have been irregular rather than frequent, with gaps of several months between recent versions.
AI summary generated
Recent updates
v8.1.1
parse5 v8.1.1 is primarily a security release fixing parser crashes, mutation-XSS and filter-bypass cases, and denial-of-service risks involving excessive CPU or memory. It also improves streaming behavior, corrects several foreign-content parsing cases, and includes a plain-text stream typing fix and package dependency updates.
Securityv8.1.0
parse5 v8.1.0 adds parser and tree-adapter APIs, fixes several HTML parsing and tokenization issues, and improves tokenizer performance. It also updates the runtime `entities` dependency, changing serialization so `<` and `>` in attribute values are escaped.
Featuresv8.0.1
v8.0.1 is primarily a maintenance release with extensive dev dependency bumps (TypeScript, ESLint, Vitest, tooling) and CI workflow updates. It also includes a small tokenizer performance optimization (BMP characters use String.fromCharCode) and several repository hygiene changes (dropping memwatch, adjusting funding metadata).
v8.0.0
v8.0.0 is primarily a tooling and dependency refresh, with the major functional change being a switch to ESM-only packaging. The diff also shows test tooling changes (removal of Jest in favor of nano-staged-based workflows) and multiple internal package version bumps to 8.0.0.
Breakingv7.3.0
v7.3.0 includes a dependency bump (notably upgrading `entities`), internal parser adjustments around handling undefined values in the element stack, and repository maintenance work. The project also migrates its test runner from Jest to Vitest and updates documentation links.
v7.2.1
v7.2.1 primarily updates dependency tooling and adjusts how parse5 re-exports tree adapter type definitions for improved TypeScript compatibility. The only library-facing code change in the diff is in the public `packages/parse5/lib/index.ts` export shape for `DefaultTreeAdapterTypes`.
v7.2.0
v7.2.0 introduces parser support for the HTML `search` element, along with multiple internal refactors around tokenization and open element stack handling. The release also bumps tooling and dependency versions, and includes a parsing bug fix for `<noframes>`. Code changes indicate some behavior-relevant internal API surface adjustments that are not fully captured in the release notes.
Featuresv7.1.2
v7.1.2 ships fixes for carriage return handling in the HTML tokenizer/preprocessor and updates parse5 exports for clearer error-code naming. It also adds a CommonJS build for parse5-parser-stream and updates module packaging to support require() consumers.
Featuresv7.1.0
parse5 v7.1.0 focuses on the _parse5_ module, including a change to represent nodeName values as strings and a parser fix related to closing tags. The code diff also shows several additional behavioral and TypeScript-facing modifications that are not described in the release notes.
BreakingFeaturesv7.0.0
parse5 v7.0.0 is a major revamp: the codebase was ported to TypeScript and all packages moved to ECMAScript Modules (ESM), with significant performance improvements over v6.0.1. The release also updates parsing behavior to align with the HTML spec more closely and refactors multiple internal components, affecting edge cases and some streaming/tree-adapter integrations.
BreakingFeaturesv6.0.0
parse5 v6.0.0 introduces a new Tree Adapter interface method, updateNodeSourceCodeLocation, to support custom source-code location formats. The HTML parsing location-info logic was updated to call this new method when filling in node end locations (including end tags where applicable).
BreakingFeaturesv6.0.1
v6.0.1 is a small patch release focused on fixing parsing/documentation issues. The only functional code change addresses how the parser acknowledges self-closing `<hr>` tags, and the remaining changes are documentation and website link corrections plus synchronized package version bumps.