unstale

npm / markdown-it

markdown-it

What changed in markdown-it 14 to 15, from its official release notes, upgrade guides and advisories. Also covers @types/markdown-it. Sources checked 2026-10-18.

11 breaking7 security5 new APIs and options1 performance2 behavior and defaults2 tooling16 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli on npm

markdown-it 1532 changes

Breaking changes 10

  • Enforces the 999 Unicode code point limit for reference definition labels, partially addressing #1213.

    15.0.3release notes

  • The obsolete StateBlock#ddIndent was removed; update markdown-it-deflist to keep it working.

    15.0.0release notes

  • Lowercase declarations are recognized as HTML blocks, matching CommonMark 4.6.

    15.0.0release notes

  • After upgrading to v6, fuzzy links are disabled by default.

    15.0.0release notes

  • After upgrading to v6, the auth part check is disabled by default.

    15.0.0release notes

  • After upgrading to v6, Unicode punctuation terminates links by default, which should help with CJK.

    15.0.0release notes

  • Package-internal subpath exports such as markdown-it/lib/* were removed; use the static classes exposed on markdownit instead.

    15.0.0release notes

  • normalizeLink moved from a property to a prototype method.

    15.0.0release notes

  • The package root now resolves to prebuilt ESM and CJS files instead of raw sources; distribution files are under dist/ and dist/browser/.

    15.0.0release notes

  • The text_join rule now processes image alt text.

    15.0.0release notes

Security 5

  • Fixes quadratic complexity when parsing multiline reference definitions.

    15.0.3release notes

  • Fixed quadratic complexity when quote types don't match, reducing the risk of excessive processing.

    15.0.2release notes

  • The smartquotes stack is limited to 1000 unmatched openers.

    15.0.2release notes

  • markdown-it linkify: true has two quadratic paths, so a few hundred KB of markdown blocks the event loop for tens of seconds

    15.0.1security advisory

  • The inline linkify rule's scheme backscan no longer has quadratic complexity.

    15.0.1release notes

New APIs and options 4

  • A browser export is available with bundled ESM and UMD builds.

    15.0.0release notes

  • Parser internals classes are exposed as static properties on markdownit.

    15.0.0release notes

  • Reference definition tokens are available, but remain stripped by default for backwards compatibility.

    15.0.0release notes

  • Link and image tokens now include reference labels.

    15.0.0release notes

Performance 1

  • Replacing fuzzy links no longer has quadratic complexity.

    15.0.1release notes

Behavior and default changes 2

  • normalizeLinkText moved from a property to a prototype method.

    15.0.0release notes

  • validateLink moved from a property to a prototype method.

    15.0.0release notes

Tooling 2

  • CLI help is colored on supported terminals.

    15.0.0release notes

  • TypeScript declarations are bundled; remove @types/markdown-it if you used it.

    15.0.0release notes

Fixes and other changes 8

  • Requires whitespace before multiline reference titles.

    15.0.3release notes

  • Fixes quadratic complexity when parsing unclosed inline HTML comments, processing instructions, declarations and CDATA sections.

    15.0.3release notes

  • Code span parsing after lookaheads for unclosed link and image labels is fixed.

    15.0.1release notes

  • Spaces are preserved in code spans whose content consists only of spaces.

    15.0.1release notes

  • Link normalization now preserves brackets around IPv6 address literals.

    15.0.1release notes

  • Inline code content is included in image alt text.

    15.0.0release notes

  • A literal backslash before a terminating space in link destinations is preserved, matching CommonMark 6.3.

    15.0.0release notes

  • Named entities now require semicolons in all decoding paths.

    15.0.0release notes

markdown-it 1412 changes

Breaking changes 1

  • Entity decoding is stricter to avoid false positives involving semicolons.

    14.2.0release notes

Security 2

  • markdown-it: Quadratic complexity DoS in smartquotes rule via replaceAt string operations

    14.2.0security advisory

  • markdown-it is has a Regular Expression Denial of Service (ReDoS)

    14.1.1security advisory

New APIs and options 1

Fixes and other changes 8

  • Preserves backslash-space hard line breaks, matching CommonMark 6.7.

    14.3.0release notes

  • Added source maps.

    14.3.0release notes

  • Delimiter scans for emphasis-like markers now properly recognize astral characters (surrogates).

    14.2.0release notes

  • HTML comment blocks no longer end on a blank line.

    14.2.0release notes

  • Restores block parser state when the lheading rule fails.

    14.2.0release notes

  • Fixes poor smartquotes performance on blocks with more than 70,000 quotes.

    14.2.0release notes

  • Preserves Unicode whitespaces when trimming headings and paragraphs.

    14.2.0release notes

  • Fixed a regression in the linkify inline rule that could cause high CPU use for specific patterns.

    14.1.1release notes