# What changed in markdownify

> 19 changes in markdownify 1 from its official release notes, upgrade guides and advisories: 5 breaking, 1 new APIs and options. Each one cited. Sources checked 2026-10-27. HTML: https://unstale.sh/pypi/markdownify/

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

## markdownify 1

### Breaking changes

- The children_only parameter was removed. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)
- Custom tag conversion functions have a changed interface; update functions that use convert_*(). (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)
- Markdown links are no longer constructed inside code spans and code blocks. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)
- Nonbreaking spaces are no longer stripped. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)
- Right square brackets are escaped. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)

### New APIs and options

- A new configuration option controls table header row inference. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)

### Behavior and default changes

- Conversion functions now allow tags with special characters in their names, such as "subtag-name". (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)
- Empty-line handling changes for <li> and <blockquote> content. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)
- Supports converting HTML definition lists, including <dl>, <dt>, and <dd>. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)
- Blank lines are added before and after preformatted blocks. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)
- A blank line is inserted between a table caption and table content. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)
- Accepts None for unlimited line lengths. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)

### Fixes and other changes

- The types now allow None for strip_pre and warp_width parameters. (1.2.3) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.2.3)
- html.parser now preserves text nested inside <br>. (1.2.3) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.2.3)
- The distribution now includes the py.typed marker file. (1.2.2) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.2.2)
- A blank line is added before ATX-style headings to avoid ambiguity. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)
- When computing <ol>/<li> numbering, non-<li> previous siblings are ignored. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)
- Conversion no longer mutates the soup and improves div, article, and section handling. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)
- Superfluous leading and trailing whitespace is removed. (1.0.0) — [release notes](https://github.com/matthewwithanm/python-markdownify/releases/tag/1.0.0)
