# What changed in @tiptap/markdown

> 29 changes in @tiptap/markdown 3 from its official release notes, upgrade guides and advisories: 1 breaking. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/npm/@tiptap/markdown/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @tiptap/markdown 3

### Breaking changes

- The parser splits mixed bullet and task lists into separate bulletList and taskList nodes. (3.10.3) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3103)

### Behavior and default changes

- Code detection for skipping encoding uses the extension spec’s `code: true` property instead of hardcoded type names, supporting custom code extensions. (3.22.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3220)

### Fixes and other changes

- Markdown containing an unclosed inline HTML tag such as <b> no longer produces an invalid document; the tag is dropped and its text is kept. (3.30.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3300)
- Parsing markdown now preserves blank lines after block elements such as headings and tables, preventing content from losing a blank line on each parse/serialize cycle. (3.29.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3290)
- Unrecognized HTML detection works without window.DOMParser or HTMLUnknownElement, preserving angle-bracket placeholders as literal text in SSR and Node environments. (3.27.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3270)
- Parsing with injected Marked instances now respects custom markdown tokenizers registered via marked.use(...). (3.27.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3270)
- Parsing a backslash-escaped Markdown character now produces a literal text node instead of silently dropping the character. (3.25.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3250)
- Serialization now backslash-escapes Markdown inline syntax characters in non-code text nodes so reparsing the output does not misinterpret them as formatting delimiters. (3.25.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3250)
- Text inside unknown HTML-like tags is preserved as literal text during markdown parsing instead of being silently swallowed, preventing downstream contentMatchAt errors with complex schemas. (3.24.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3240)
- Fixes extra mark tokens appearing after inline atom nodes during Markdown serialization. (3.23.5) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3235)
- Prevents adjacent marks of the same type with different attributes from being merged during Markdown serialization. (3.23.5) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3235)
- Fixes peer dependency resolution conflicts when installing dependencies after package updates. (3.22.4) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3224)
- Markdown parsing decodes HTML entities to literal characters, and serialization re-encodes <, >, and & while preserving double quotes; code content remains literal. (3.22.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3220)
- Custom markdown tokenizer helper lexing now uses Marked's active lexer, preventing ordered list parsing from breaking inline tokenization in following paragraphs. (3.21.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3210)
- Fixed serialization and round-tripping of overlapping bold and italic markdown. (3.20.3) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3203)
- Empty paragraphs now serialize with natural blank-line spacing for the first paragraph in a run and &nbsp; markers for subsequent empty paragraphs at the same level; parsing preserves them when converting markdown back to JSON. (3.20.2) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3202)
- Fixed getMarkdown() returning &nbsp; instead of an empty string when the editor is empty. (3.20.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3200)
- When adjacent to alphanumeric text, **)** requires whitespace under the CommonMark specification. (3.18.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3180)
- Fixed markdown HTML parsing when the window object is unavailable in server-side environments. (3.17.1) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3171)
- Fixed parsing collapsing multiple blank lines. (3.17.1) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3171)
- Fixed serialization doubling newlines. (3.17.1) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3171)
- Fixed ordered list numbering when a list has a non-default start value. (3.17.1) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3171)
- Fixes incorrect Markdown output when underline is mixed with bold or italic whose ranges do not fully overlap. (3.16.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3160)
- Fixed handling of trailing and leading whitespace when serializing inline marks to Markdown. (3.13.0) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3130)
- Fixed CommonJS compatibility by downgrading the marked dependency from v16 to v15. (3.10.8) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3108)
- Marks no longer incorrectly continue after hard breaks in markdown output. (3.10.3) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3103)
- Marks are resolved in the correct order so nested marks render correctly in markdown. (3.10.3) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3103)
- Fixes parsing of mixed inline HTML within Markdown content so inline HTML fragments are parsed correctly. (3.10.2) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#3102)
- Editors no longer throw an error when content is an empty string and contentType is markdown. (3.7.1) — [release notes](https://github.com/ueberdosis/tiptap/blob/db790a7c5a6009b0a94382e12e1a5e9c642e1660/packages/markdown/CHANGELOG.md#371)
