# What changed in marko

> 13 changes in marko 1 to 2 from its official release notes, upgrade guides and advisories: 7 breaking, 1 new APIs and options. Each one cited. Sources checked 2026-10-24. HTML: https://unstale.sh/pypi/marko/

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

## marko 2

### Breaking changes

- Input U+0000 characters are replaced with U+FFFD, as required by CommonMark §2.3. (2.2.3) — [release notes](https://github.com/frostming/marko/releases/tag/v2.2.3)
- The GFM alert regex now disallows content on the header line. (2.2.2) — [release notes](https://github.com/frostming/marko/releases/tag/v2.2.2)
- For block elements, children should now be a list of child elements. (2.0.0) — [release notes](https://github.com/frostming/marko/releases/tag/v2.0.0)
- HTMLBlock's HTML content moves from children to the body attribute. (2.0.0) — [release notes](https://github.com/frostming/marko/releases/tag/v2.0.0)
- Parsing no longer saves to global variables, allowing multiple parsers to run in parallel. (2.0.0) — [release notes](https://github.com/frostming/marko/releases/tag/v2.0.0)

### New APIs and options

- A helper class is added for creating extensions instead of using arbitrary objects to hold partial properties. (2.0.0) — [release notes](https://github.com/frostming/marko/releases/tag/v2.0.0)

### Behavior and default changes

- Extension blocks can now break a Paragraph. (2.2.3) — [release notes](https://github.com/frostming/marko/releases/tag/v2.2.3)
- Calling render alone now calls setup_extensions(). (2.0.0) — [release notes](https://github.com/frostming/marko/releases/tag/v2.0.0)

### Fixes and other changes

- GFM table indentation is preserved in lists. (2.2.3) — [release notes](https://github.com/frostming/marko/releases/tag/v2.2.3)
- Prevents an infinite loop caused by unnormalized line breaks. (2.2.3) — [release notes](https://github.com/frostming/marko/releases/tag/v2.2.3)
- Some built-in extensions that modify class attributes are fixed. (2.0.0) — [release notes](https://github.com/frostming/marko/releases/tag/v2.0.0)

## marko 1

### Breaking changes

- The deprecated extension object was removed. (1.0.0) — [release notes](https://github.com/frostming/marko/blob/HEAD/CHANGELOG.md)
- Support for Python 2.7 was dropped. (1.0.0) — [release notes](https://github.com/frostming/marko/blob/HEAD/CHANGELOG.md)
