NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #34 most downloaded on PyPI
Safely add untrusted strings to HTML/XML markup.
Last release 2 days ago
02 Oct 2026
Release timing varies
gaps range from 1 weeks to 12 months
Most releases are documented
notes for 23 of 33 stable releases
Nothing withdrawn
no release was ever pulled
16 years old
36 releases · first in 2010
This is the MarkupSafe 3.0.4 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared t…
This is the MarkupSafe 3.0.4 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.
PyPI: https://pypi.org/project/MarkupSafe/3.0.4/
Changes: https://markupsafe.palletsprojects.com/page/changes/#version-3-0-4
Milestone: https://github.com/pallets/markupsafe/milestone/17?closed=1
striptags. #521Released 2026-10-02
Build Python 3.15, armv7l, ppc64le, Android, and iOS wheels.
Improve performance of striptags. 521
One column per quarter.
This is the MarkupSafe 3.0.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared t…
This is the MarkupSafe 3.0.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.
PyPI: https://pypi.org/project/MarkupSafe/3.0.3/
Changes: https://markupsafe.palletsprojects.com/page/changes/#version-3-0-3
Milestone: https://github.com/pallets/markupsafe/milestone/15?closed=1
Released 2025-09-27
__version__ raises DeprecationWarning instead of UserWarning. 487
Adopt multi-phase initialisation (489) for the C extension. 494
Build Windows ARM64 wheels. 485
Build Python 3.14 wheels. 503
Build riscv64 wheels. 505
This is the MarkupSafe 3.0.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes.
This is the MarkupSafe 3.0.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes.
PyPI: https://pypi.org/project/MarkupSafe/3.0.2/
Changes: https://markupsafe.palletsprojects.com/en/stable/changes/#version-3-0-2
Milestone: https://github.com/pallets/markupsafe/milestone/14?closed=1
Released 2024-10-18
Fix compatibility when __str__ returns a str subclass. 472
Build requires setuptools >= 70.1. 475
This is the MarkupSafe 3.0.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes.
This is the MarkupSafe 3.0.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes.
PyPI: https://pypi.org/project/MarkupSafe/3.0.1/
Changes: https://markupsafe.palletsprojects.com/en/stable/changes/#version-3-0-1
Milestone: https://github.com/pallets/markupsafe/milestone/13?closed=1
Released 2024-10-08
Address compiler warnings that became errors in GCC 14. 466
Fix compatibility with proxy objects. 467
…add new deprecations, or introduce potentially breaking changes. The 3.0.x branch is now the supported fix branch, the 2.1.x branch will become a tag…
This is the MarkupSafe 3.0.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. The 3.0.x branch is now the supported fix branch, the 2.1.x branch will become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as pip-tools to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.
PyPI: https://pypi.org/project/MarkupSafe/3.0.0/
Changes: https://markupsafe.palletsprojects.com/en/stable/changes/#version-3-0-0
Milestone: https://github.com/pallets/markupsafe/milestone/10?closed=1
pyproject.toml instead of setup.cfg. #348distutils imports to setuptools. #399Markup methods to match str signatures. Use positional-only arguments. #400str methods on Markup no longer escape their argument: strip, lstrip, rstrip, removeprefix, removesuffix, partition, and rpartition; replace only escapes its new argument. These methods are conceptually linked to search methods such as in, find, and index, which already do not escape their argument. #401__version__ attribute is deprecated. Use feature detection, or importlib.metadata.version("markupsafe"), instead. #402It fixes bugs but does not otherwise change behavior and should not result in breaking changes.
This is a fix release for the 2.1.x feature release branch. It fixes bugs but does not otherwise change behavior and should not result in breaking changes.
Fixes a regression in striptags behavior from 2.14. Spaces are now collapsed correctly.
Released 2024-02-02
Fix striptags not collapsing spaces. 417
It fixes bugs but does not otherwise change behavior and should not result in breaking changes.
This is a fix release for the 2.1.x feature release branch. It fixes bugs but does not otherwise change behavior and should not result in breaking changes.
Improves performance of the Markup.striptags method for large input.
Changes: https://markupsafe.palletsprojects.com/en/stable/changes/#version-2-1-4
Milestone: https://github.com/pallets/markupsafe/milestone/11?closed=1
Released 2024-01-19
Don't use regular expressions for striptags, avoiding a performance issue. 413
This is a fix release for the 2.1.x feature branch.
This is a fix release for the 2.1.x feature branch.
Released 2023-06-02
Implement format_map, casefold, removeprefix, and removesuffix methods. 370
Fix static typing for basic str methods on Markup. 358
Use Self for annotating return types. 379
This is the first release to provide wheels for Python 3.11. An SLSA provenance file is also generated, and is available to download from the GitHub r
This is the first release to provide wheels for Python 3.11. An SLSA provenance file is also generated, and is available to download from the GitHub release page.
Released 2023-01-17
Fix striptags not stripping tags containing newlines. 310
Changes: https://markupsafe.palletsprojects.com/en/stable/changes/#version-2-1-1
Released 2022-03-14
Avoid ambiguous regex matches in striptags. 293
Changes: https://markupsafe.palletsprojects.com/en/stable/changes/#version-2-1-0
Released 2022-02-17
Drop support for Python 3.6. 262
Remove soft_unicode, which was previously deprecated. Use soft_str instead. 261
Raise error on missing single placeholder during string interpolation. 225
Disable speedups module for GraalPython. 277
Changes: https://markupsafe.palletsprojects.com/en/stable/changes/#version-2-0-1
Released 2021-05-18
Mark top-level names as exported so type checking understands imports in user projects. 215
Fix some types that weren't available in Python 3.6.0. 215
New major versions of all the core Pallets libraries, including MarkupSafe 2.0, have been released! :tada:
New major versions of all the core Pallets libraries, including MarkupSafe 2.0, have been released! :tada:
This represents a significant amount of work, and there are quite a few changes. Be sure to carefully read the changelog, and use tools such as pip-compile and Dependabot to pin your dependencies and control your updates.
Released 2021-05-11
Drop Python 2.7, 3.4, and 3.5 support.
Markup.unescape uses html.unescape to support HTML5 character references. 117
Add type annotations for static typing tools. 149
Changes: https://markupsafe.palletsprojects.com/en/stable/changes/#version-2-0-0
Nothing published for this version
Nothing published for this version
Fix segfault when __html__ method raises an exception when using the C speedups. The exception is now propagated correctly. 109
Released 2019-02-23
Fix segfault when __html__ method raises an exception when using the C speedups. The exception is now propagated correctly. 109
Drop support for Python 2.6 and 3.3.
Released 2018-11-05
Drop support for Python 2.6 and 3.3.
Build wheels for Linux, Mac, and Windows, allowing systems without a compiler to take advantage of the C extension speedups. 104
Use newer CPython API on Python 3, resulting in a 1.5x speedup. 64
escape wraps __html__ result in Markup, consistent with documented behavior. 69
Fixed custom types not invoking __unicode__ when used with format().
Released 2017-03-07
Fixed custom types not invoking __unicode__ when used with format().
Added __version__ module attribute.
Improve unescape code to leave lone ampersands alone.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fixed __mul__ and string splitting on Python 3.
Released 2013-05-22
Fixed __mul__ and string splitting on Python 3.
Fixed a bug with broken interpolation on tuples.
Released 2013-05-21
Fixed a bug with broken interpolation on tuples.
Improved Python 3 Support and removed 2to3.
Released 2013-05-20
Improved Python 3 Support and removed 2to3.
Removed support for Python 3.2 and 2.5.
Fixed a typo that caused the library to fail to install on pypy and jython.
Released 2011-07-20
Fixed a typo that caused the library to fail to install on pypy and jython.
Released 2011-07-20 - Release fix for 0.13.
Released 2011-07-20
Release fix for 0.13.
Do not attempt to compile extension for PyPy or Jython.
Released 2011-07-20
Do not attempt to compile extension for PyPy or Jython.
Work around some 64bit Windows issues.
Released 2011-02-17 - Improved PyPy compatibility.
Released 2011-02-17
Improved PyPy compatibility.
Released 2011-02-17
Improved PyPy compatibility.
Changes
Version 3.0.4
Version 3.0.3
Version 3.0.2
Version 3.0.1
Version 3.0.0
Version 2.1.5
Version 2.1.4
Version 2.1.3
Version 2.1.2
Version 2.1.1
Version 2.1.0
Version 2.0.1
Version 2.0.0
Version 1.1.1
Version 1.1.0
Version 1.0
Version 0.18
Version 0.17
Version 0.16
Version 0.15
Version 0.14
Version 0.13
Version 0.12
© Copyright 2010 Pallets. Created using Sphinx 9.1.0.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →