# What changed in markdown

> 13 changes in markdown 3 from its official release notes, upgrade guides and advisories: 1 breaking, 2 security. Each one cited. Sources checked 2026-10-21. HTML: https://unstale.sh/pypi/markdown/

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

## markdown 3

### Breaking changes

- Python 3.15 is officially supported, and Python 3.10 support is dropped. (3.11.0) — [release notes](https://github.com/Python-Markdown/markdown/releases/tag/3.11.0)

### Security

- Attribute names are sanitized so they cannot break out of their tag and inject markup. (3.11.2) — [release notes](https://github.com/Python-Markdown/markdown/releases/tag/3.11.2)
- Attribute names are sanitized so they cannot break out of their tag and inject markup. (3.11.2) — [release notes](https://github.com/Python-Markdown/markdown/releases/tag/3.11.2)

### Performance

- Inline processors resume searching after the previous match, improving performance for repeated inline patterns. (3.11.0) — [release notes](https://github.com/Python-Markdown/markdown/releases/tag/3.11.0)
- Fixes quadratic-time regex backtracking when a link reference definition has no URL and has many trailing spaces. (3.11.0) — [release notes](https://github.com/Python-Markdown/markdown/releases/tag/3.11.0)

### Behavior and default changes

- Enforcement of CommonMark style punctuation rules is reverted for backwards compatibility. (3.11.2) — [release notes](https://github.com/Python-Markdown/markdown/releases/tag/3.11.2)

### Fixes and other changes

- Inline HTML attributes containing `<` or `>` are no longer rejected. (3.11.1) — [release notes](https://github.com/Python-Markdown/markdown/releases/tag/3.11.1)
- Emphasis handling was reworked to improve handling of nested emphasis. (3.11.1) — [release notes](https://github.com/Python-Markdown/markdown/releases/tag/3.11.1)
- Raw HTML comments inside an inline HTML element that closes in the same paragraph no longer split the paragraph. (3.11.1) — [release notes](https://github.com/Python-Markdown/markdown/releases/tag/3.11.1)
- An unterminated end tag such as `</foo` no longer causes all remaining content to be dropped. (3.11.1) — [release notes](https://github.com/Python-Markdown/markdown/releases/tag/3.11.1)
- Removing Abbreviations no longer raises an error. (3.11.0) — [release notes](https://github.com/Python-Markdown/markdown/releases/tag/3.11.0)
- Fixes excessive regex backtracking when matching inline code blocks. (3.11.0) — [release notes](https://github.com/Python-Markdown/markdown/releases/tag/3.11.0)
- The extension now honors tags added to Markdown.block_level_elements after the extension is loaded. (3.11.0) — [release notes](https://github.com/Python-Markdown/markdown/releases/tag/3.11.0)
