erusev/parsedown
Parser for Markdown.
1.8.0
160M downloads/mo
#514 most downloaded on Packagist
erusev/parsedown
What this package is like to depend on
Last release 6 months ago
16 Feb 2026
Ships unpredictably
gaps range from 4 weeks to 3.7 years
Rarely documented
notes for 3 of 68 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
81 releases · first in 2013
1 release in the last 12 months
see the full history below
Release timeline
81 releases · Jul 2013 to Feb 2026Releases
latest 60 of 81-
v2.0.0-beta-121 May 2022 pre-releaseNothing published for this version
-
1.8.016 Feb 2026Release notes
Open source →The first stable release in over six years. Requires PHP 7.1+.
Breaking Changes
- PHP 7.1 minimum -- dropped support for PHP 5.3, 5.4, 5.5, 5.6, and 7.0.
- List separation by marker type -- lists using different markers (
*,+,-, or switching between.and)for ordered lists) are now treated as separate lists, matching the CommonMark spec. - Lazy blockquotes -- consecutive blockquotes separated by a blank line are no longer merged into one, per CommonMark.
- Sparse HTML blocks -- blank lines inside block-level HTML are now wrapped in
<p>tags instead of being preserved as-is. - Empty ATX headings --
#and##on their own now produce<h1></h1>and<h2></h2>instead of being treated as paragraphs. - Extensions accessing block internals may need to update: the element structure uses
elementinstead oftextin some places (e.g.$Block['element']['element']['text']instead of$Block['element']['text']['text']).
Security
- Regex patterns throughout the parser now use possessive quantifiers (
*+,++) to prevent catastrophic backtracking (ReDoS). This addresses denial-of-service vectors where malformed emphasis markers or other adversarial input could cause memory exhaustion or hangs. - Safe mode now sanitizes nested elements correctly via recursive AST traversal. Previously, sanitization only applied at the top level.
- Extensions can mark self-produced HTML as trusted using
allowRawHtmlInSafeModeso it isn't escaped in safe mode, while untrusted input remains escaped.
PHP Compatibility
- Fixed implicit nullable parameter deprecations for PHP 8.4+.
- Updated PHPUnit dependency and test infrastructure for modern PHP.
- CI moved from Travis CI to GitHub Actions.
CommonMark Compliance
- Setext headings now handle leading/trailing spaces correctly.
- ATX heading closing
#sequences are trimmed properly (e.g.# # of levels # #renders as<h1># of levels #</h1>). - Ordered lists support
)as a marker in addition to.. - Ordered lists starting with a number other than 1 no longer interrupt paragraphs.
- One-column tables are now supported.
- Fenced code blocks require the closing fence to have at least as many backticks/tildes as the opening fence.
- HTML comments follow the CommonMark spec more closely.
- Email autolinks validate against the CommonMark email definition.
- Escaped tilde characters (
\~\~) are no longer treated as strikethrough.
New Features
- Strict mode (
setStrictMode(true)) -- requires a space after#in ATX headings (CommonMark-compliant behavior).
Bug Fixes
- Fixed "Uninitialized string offset" errors on certain inputs.
- Fixed adjacent blockquotes being incorrectly merged.
- Fixed line-break standardization when using the
line()method directly. - Fixed table header validation (headers containing newlines are no longer accepted).
- Fixed spaces in fenced code block class names.
-
1.8.0-beta-717 Mar 2019 pre-releaseNothing published for this version
-
v1.8.0-beta-617 Mar 2019 pre-releaseRelease notes
Open source →This is a pre-release.
To see what's changed from 1.7.1, please refer to the draft release notes in #601.
Any testing, bug-reports, or bug-fixes are very welcome.
This beta increment is a security release and resolves an issue which would allow a user to add arbitrary classes to fenced code blocks. This might have security consequences, see #699 for more detail.
-
1.8.0-beta-511 Jun 2018 pre-releaseRelease notes
Open source →This is a pre-release.
To see what's changed from 1.7.1, please refer to the draft release notes in #601.
Any testing, bug-reports, or bug-fixes are very welcome.
This beta release restores the existence of some previously deleted protected interface endpoints.
-
1.8.0-beta-408 May 2018 pre-releaseNothing published for this version
-
1.8.0-beta-307 May 2018 pre-releaseNothing published for this version
-
1.8.0-beta-207 May 2018 pre-releaseNothing published for this version
-
1.8.0-beta-108 Apr 2018 pre-releaseNothing published for this version
-
1.7.430 Dec 2019Release notes
Open source →Introduce rawHtml concept from beta 1.8 that extensions may optionally utilise. In 1.8 beta versions this feature is utilised internally and might have compatibility issues with extensions, this release does not use this feature internally so no such issues will be present.
-
1.7.317 Mar 2019Nothing published for this version
-
v1.7.217 Mar 2019Release notes
Open source →This is a security release and resolves an issue which would allow a user to add arbitrary classes to fenced code blocks. This might have security consequences, see #699 for more detail.
-
1.7.108 Mar 2018Nothing published for this version
-
1.7.028 Feb 2018Nothing published for this version
-
1.6.414 Nov 2017Nothing published for this version
-
1.6.314 May 2017Nothing published for this version
-
1.6.229 Mar 2017Nothing published for this version
-
1.6.102 Nov 2016Nothing published for this version
-
1.6.004 Oct 2015Nothing published for this version
-
1.5.403 Aug 2015Nothing published for this version
-
1.5.329 Apr 2015Nothing published for this version
-
1.5.218 Mar 2015Nothing published for this version
-
1.5.124 Jan 2015Nothing published for this version
-
1.5.019 Jan 2015Nothing published for this version
-
1.4.515 Jan 2015Nothing published for this version
-
1.4.415 Jan 2015Nothing published for this version
-
1.4.315 Jan 2015Nothing published for this version
-
1.4.215 Jan 2015Nothing published for this version
-
1.4.114 Jan 2015Nothing published for this version
-
1.4.012 Jan 2015Nothing published for this version
-
1.3.012 Jan 2015Nothing published for this version
-
1.2.010 Jan 2015Nothing published for this version
-
1.1.429 Nov 2014Nothing published for this version
-
1.1.328 Nov 2014Nothing published for this version
-
1.1.219 Nov 2014Nothing published for this version
-
1.1.129 Oct 2014Nothing published for this version
-
1.1.025 Sep 2014Nothing published for this version
-
1.0.121 May 2014Nothing published for this version
-
1.0.014 May 2014Nothing published for this version
-
1.0.0-rc.512 May 2014 pre-releaseNothing published for this version
-
1.0.0-rc.430 Apr 2014 pre-releaseNothing published for this version
-
1.0.0-rc.330 Apr 2014 pre-releaseNothing published for this version
-
1.0.0-rc.228 Apr 2014 pre-releaseNothing published for this version
-
1.0.0-rc.117 Apr 2014 pre-releaseNothing published for this version
-
0.9.406 Feb 2014Nothing published for this version
-
0.9.306 Feb 2014Nothing published for this version
-
0.9.205 Feb 2014Nothing published for this version
-
0.9.102 Feb 2014Nothing published for this version
-
0.9.022 Jan 2014Nothing published for this version
-
0.8.320 Jan 2014Nothing published for this version
-
0.8.218 Jan 2014Nothing published for this version
-
0.8.116 Jan 2014Nothing published for this version
-
0.8.026 Dec 2013Nothing published for this version
-
0.7.718 Dec 2013Nothing published for this version
-
0.7.607 Dec 2013Nothing published for this version
-
0.7.505 Dec 2013Nothing published for this version
-
0.7.402 Dec 2013Nothing published for this version
-
0.7.323 Nov 2013Nothing published for this version
-
0.7.223 Nov 2013Nothing published for this version
-
0.7.122 Nov 2013Nothing published for this version