PackageTrack
Sign in Get early access

markdown

A portable Markdown library written in Dart that can parse Markdown into HTML.

7.3.1 2.5M downloads/mo #233 most downloaded on pub.dev dart-lang/tools

What this package is like to depend on

Last release 5 months ago

18 Mar 2026

Release timing varies

gaps range from 5 weeks to 1.2 years

Most releases are documented

notes for 47 of 54 stable releases

Nothing withdrawn

no release was ever pulled

14 years old

55 releases · first in 2013

1 release in the last 12 months

see the full history below

Release timeline

55 releases · Feb 2013 to Mar 2026
2014 2016 2018 2020 2022 2024 2026
Release Pre-release

Releases

latest 55
  1. 7.3.1 18 Mar 2026
    Release notes
    • Preserve metadata passed to fenced code blocks as data-metadata on the created pre element.
    • Update the README link to the markdown playground (https://dart-lang.github.io/tools).
    • Update package:web API references in the example.
    • Fix performance and correctness of HTML comment parser.
    • Optimize indentation processing of fenced code blocks.
    • Fix an issue with nested list structure when indented by tabs (#2172).
    • Deprecated LinkContext and BlockParser.standardBlockSyntaxes. Implementation members that should never have been made public.
    • Require Dart ^3.9.0.
    Open source →
  2. 7.3.0 13 Jan 2025
    Release notes
    • Move to dart-lang/tools monorepo.
    • Fix an issue with checkbox list items separated with blank lines (#602).
    • Require package web: '>=0.4.2 <2.0.0'.
    • Fix several RangeError hazards in links (#623).
    • Export LinkReferenceDefinitionSyntax publicly (#626).
    Open source →
  3. 7.2.2 07 Mar 2024
    Release notes
    • Fix a crash parsing alert block syntax (#584).
    • Have alert block syntax support multiple paragraphs (#577).
    • Require Dart ^3.2.0.
    Open source →
  4. 7.2.1 19 Jan 2024
    Release notes
    • Address a termination issue with GitHub alert syntax parsing.
    Open source →
  5. 7.2.0 17 Jan 2024
    Release notes
    • Require Dart ^3.1.0.
    • Update all CommonMark specification links to 0.30.
    • Fix beginning of line detection in AutolinkExtensionSyntax.
    • Add a new syntax AlertBlockSyntax to parse GitHub Alerts.
    Open source →
  6. 7.1.1 13 Jul 2023
    Release notes
    • Fix delimiter row matching pattern for tables.
    • Tables are now able to interrupt other blocks.
    • Fix an obscure issue with HtmlBlockSyntax.
    Open source →
  7. 7.1.0 02 May 2023
    Release notes
    • Support for footnotes.
    • Fixed bug causing infinite loop for links inside tables.
    Open source →
  8. 7.0.2 31 Mar 2023
    Release notes
    • Require Dart 2.19
    • Fix an issue in HeaderWithIdSyntax, do not generate heading IDs for headings with no content.
    Open source →
  9. 7.0.1 15 Feb 2023
    Release notes
    • Remove RegExp lookarounds from autolink extension patterns. (Fixes issues when running on Safari.)
    Open source →
  10. 7.0.0 10 Feb 2023
    Release notes
    • Breaking change: close() of DelimiterSyntax and LinkSyntax returns multiple nodes instead of single one.
    • Breaking change: Remove deprecated APIs, including TagSyntax, indicatorForCheckedCheckBox, and indicatorForUncheckedCheckBox.
    • Breaking change: Removed BlockHtmlSyntax, BlockTagBlockHtmlSyntax, LongBlockHtmlSyntax, and OtherTagBlockHtmlSyntax.
    • Breaking change: Change the line properties of type String to Line.
    • Breaking change: Change the lines properties of type List<String> to List<Line>.
    • Add a new syntax HtmlBlockSyntax to parse HTML blocks.
    • Add an enableTagfilter option to HtmlRenderer to eanble GFM tagfilter extension.
    • Add a new syntax DecodeHtmlSyntax to decode HTML entity and numeric character references.
    • Add a new syntax SoftLineBreakSyntax to remove the single space before the line ending.
    • Add a new syntax EscapeHtmlSyntax to encode ("), (<), (>) and (&).
    • Add an option caseSensitive to TextSyntax.
    • Add a new public method parse(String text) for Document.
    • Add a new public method parseLineList(List<Line> text) for Document.
    • Add a new type: Line.
    • Add a new optional parameter parentSyntax for parseLines() of BlockParser, which can be used when parsing nested blocks.
    • Add a new optional parameter disabledSetextHeading for parseLines() of BlockParser, which is used to disable the SetextHeaderSyntax.
    • Add a new public property previousSyntax for BlockParser.
    Open source →
  11. 6.0.1 20 Sep 2022
    Release notes
    • Fix a crash in checkbox lists when mixing checkbox items with non-checkbox items.
    Open source →
  12. 6.0.0 10 Aug 2022
    Release notes
    • Require Dart 2.17
    • Add support to GFM extension for GitHub task lists (aka checkboxes). These are only active in the gitHubFlavored and gitHubWeb extension sets.
    • Add support for #ff0000 color swatches.
    • Change emoji list do be derived from the GitHub API. The only two emoji that visually change are :cricket: and :beetle:. There are alternate emoji :cricket_game: and :lady_beetle: which can be used to access the previous emoji. update_github_emoji.dart now pulls all emoji info directly from GitHub API and as a result we have now support the entire GitHub emoji set (excluding the 19 custom GitHub specific emoji which have no Unicode support).
    • Breaking change: The TagSyntax is deprecated.
    • Add new syntax DelimiterSyntax.
    • Breaking change: StrikethroughSyntax now extends DelimiterSyntax instead of TagSyntax.
    • Breaking change: LinkSyntax now extends DelimiterSyntax instead of TagSyntax.
    • Add two new emphasis syntaxes EmphasisSyntax.underscore and EmphasisSyntax.asterisk.
    Open source →
  13. 5.0.0 01 Apr 2022
    Release notes
    • Breaking change: Change the type of parseInline's parameter from String? to String.
    • Fix table-rendering bug when table rows have trailing whitespace. #368.
    • Do not allow reference link labels to contain left brackets. Thanks @chenzhiguang. #335.
    • Treat lines matching a code block syntax as continuations of paragraphs, inside blockquotes. Thanks @chenzhiguang. #358.
    • Add a syntax for GitLab-flavored fenced blockquotes. GitLab-flavored Markdown will be evaluated into an ExtensionSet, in a future release. Thanks @chenzhiguang. #359.
    • Add bool withDefaultInlineSyntaxes and bool withDefaultBlockSyntaxes parameters to markdownToHtml and Document to support the case of specifying exactly the list of desired syntaxes. Thanks @chenzhiguang. #393.
    Open source →
  14. 4.0.1 19 Nov 2021
    Release notes
    • Export src/emojis.dart in public API.
    • Update version of example page.
    • Internal: enforce lint rules found in the lints package.
    • Bump io dependency to ^1.0.0.
    Open source →
  15. 4.0.0 11 Feb 2021
    Release notes
    • Stable null safety release.
    • Require the latest args, update the markdown executable to be opted in.
    Open source →
  16. 4.0.0-nullsafety.0 06 Jan 2021 pre-release
    Release notes
    • Migrate package to Dart's null safety language feature, requiring Dart 2.12 or higher.
    • Breaking change: The TagSyntax constructor no longer takes an end parameter. TagSyntax no longer implements onMatchEnd. Instead, TagSyntax implements a method called close which creates and returns a Node, if a Node can be created and closed at the current position. If the TagSyntax instance cannot create a Node at the current position, the method should return null. Some TagSyntax subclasses will unconditionally create a tag in close, while others may be unable to, such as LinkSyntax, if an inline or reference link could not be resolved.
    • Improved parsing of nested links, images, and emphasis. CommonMark compliance of emphasis-parsing improves to 99%, and link-parsing compliance rises to 93%. Overall compliance improves to 94% and overall GitHub-flavored Markdown improves to 93%.
    Open source →
  17. 3.0.0 12 Oct 2020
    Release notes
    • Adds discovery API to find both a configuration and its location:
      findPackageConfigAndFile and findPackageConfigAndUri.
    • Removes support for the .packages file.
      The Dart SDK no longer supports that file, and no new .packages files
      will be generated.
      Since the SDK requirement for this package is above 3.0.0,
      no supporting SDK can use or generate .packages.
    • Simplifies API that no longer needs to support two separate files.
      • Renamed readAnyConfigFile to readConfigFile, and removed
        the preferNewest parameter.
      • Same for readAnyConfigFileUri which becomes readConfigFileUri.
      • Old functions still exists as deprecated, forwarding to the new
        functions without the preferNewest argument.
        Makes PackageConfig, Package and LanguageVersion @sealed classes,
        in preparation for making them final in a future update.
    • Adds PackageConfig.minVersion to complement .maxVersion.
      Currently both are 2.
    Open source →
    Release notes
    • Breaking change: Remove ListSyntax.removeLeadingEmptyLine, ListSyntax.removeTrailingEmptyLines, TableSyntax.parseAlignments, TableSyntax.parseRow.
    • Allow intra-word strikethrough in GFM (#300).
    • Breaking change: Change BlockSyntax.canEndBlock from a getter to a method accepting a BlockParser.
    Open source →
  18. 2.1.8 17 Aug 2020
    Release notes
    • Deprecate the public methods ListSyntax.removeLeadingEmptyLine, ListSyntax.removeTrailingEmptyLines, TableSyntax.parseAlignments, TableSyntax.parseRow. These will be made private in a major version bump as early as 3.0.0.
    Open source →
  19. 2.1.7 31 Jul 2020
    Release notes
    • Add dependency on the meta package
    Open source →
  20. 2.1.5 11 Jun 2020
    Release notes
    • Overhaul table row parsing. This does not have many consequences, except that whitespace around escaped pipes is handled better. (#287).
    Open source →
  21. 2.1.4 28 May 2020
    Release notes
    • Correctly parse a reference link with a newline in the link reference part (#281).
    Open source →
  22. 2.1.3 26 Nov 2019
    Release notes
    • Do not encode HTML in link URLs. Also do not encode HTML in link text when encodeHtml is false (e.g. when used in Flutter).
    Open source →
  23. 2.1.2 15 Nov 2019
    Release notes
    • Drop support for Dart 2.0.0 through 2.1.0.
    • Recognize Unicode ellipsis (…) and other Unicode punctuation as punctuation when parsing potential emphasis.
    • Reduce time to parse a large HTML-block-free Markdown document (such as that in #271) by more than half.
    • Add a new optional parameter for InlineSyntax(), startCharacter, where a subclass can specify a single character to try to match, before matching with more expensive regular expressions.
    Open source →
  24. 2.1.1 25 Sep 2019
    Release notes
    • Fix for encoding HTML for text string that contains <pre> (#263).
    Open source →
  25. 2.1.0 23 Sep 2019
    Release notes
    • Improve strict spec compliance of > handling by always encoding as &gt; – unless preceded by /.
    • Improve strict spec compliance for blockquote by always putting the closing tag on a new line.
    • Improve strict spec compliance for code elements defined with "`".
    • Properly encode <, >, and " as their respective HTML entities when interpreted as text.
    • Improve inline code parsing when using multiple backticks.
    • Do not encode HTML in indented code blocks when encodeHtml is false (e.g. when used in Flutter).
    Open source →
  26. 2.0.3 16 Apr 2019
    Release notes
    • Render element attributes in the order they were defined. Aligns more closely with the strict spec definition.
    • Correctly render & within inline image titles.
    • Add 68 new GitHub emoji.
    • Escape HTML attribute for fenced code blocks, in the info string.
    Open source →
  27. 2.0.2 16 Jul 2018
    Release notes
    • Set max SDK version to <3.0.0, and adjust other dependencies.
    Open source →
  28. 2.0.1 02 Jul 2018
    Release notes
    • Require Dart 2.0.0-dev.
    Open source →
  29. 2.0.0 09 May 2018
    Release notes
    • Breaking change: The Link class has been renamed LinkReference, and the Document field, refLinks, has been renamed linkReferences.

    • Breaking change: Remove the deprecated ExtensionSet.gitHub field. Use ExtensionSet.gitHubFlavored instead.

    • Breaking change: Make all of the fields on Document read-only.

    • Overhaul support for emphasis (*foo* and _foo_) and strong emphasis (**foo** and __foo__), dramatically improving CommonMark compliance.

    • Overhaul support for links and images, again dramatically improving CommonMark compliance.

    • Improve support for tab characters, and horizontal rules.

    • Add support for GitHub Flavored Markdown's Strikethrough extension. See the GFM spec.

    • The above fixes raise compliance with the CommonMark specs to 93%, and compliance with the GFM specs to 92%.

    • Add an encodeHtml parameter to Document, which defaults to true. When false, HTML entities (such as &copy; and the < character) will not be escaped, useful when rendering Markdown in some output format other than HTML.

    • Allow the binary script to take a --extension-set option.

      A reminder: You can run bin/markdown.dart from anywhere via:

      $ pub global activate markdown
      $ markdown
      
    Open source →
  30. 1.1.1 30 Dec 2017
    Release notes
    • Add support for GitHub's colon-based Emoji syntax. :tada:! This is available in the gitHubWeb extension set.
    Open source →
  31. 1.1.0 20 Dec 2017
    Release notes
    • Make the constructor for ExtensionSet public, for tools like dartdoc.
    • Split the gitHub ExtensionSet into two sets: gitHubFlavored, which represents the GitHub Flavored Markdown spec, and gitHubWeb, which represents what GitHub actually renders Markdown.
    Open source →
  32. 1.0.0 02 Nov 2017
    Release notes
    • Fix issue where accept could cause an exception.
    • Remove deprecated escapeHtml function.
    • Fix compliance with auto-links, including support for email addresses.
    • Updated ExtensionSet.gitHub to more closely align with GitHub markdown.
    Open source →
  33. 0.11.4 13 Jun 2017
    Release notes
    • Fix bug with lazy blockquote continuations (#162)
    • Fix bug with list item continuations (#156)
    Open source →
  34. 0.11.3 06 Apr 2017
    Release notes
    • Deprecate escapeHtml. This code exists in dart:convert.
    Open source →
  35. 0.11.2 09 Dec 2016
    Release notes
    • Fix reference code links inside blockquotes.
    • Add src/util.dart to exports.
    Open source →
  36. 0.11.1 14 Sep 2016
    Release notes
    • Add version information:
      • dart bin/markdown.dart --version now shows the package version number.
      • The playground app now shows the version number.
    • Improve autolink parsing.
    • Add new table syntax: TableSyntax.
    • Add new ExtensionSet that includes the table syntax: ExtensionSet.gitHub.
    • For development: added tool/travis.sh.
    • Support multiline Setext headers.
    • Handle loose-vs-strict list items better.
    • Support ordered lists that start with a number other than 1.
    Open source →
  37. 0.11.0 03 Aug 2016
    Release notes
    • Parse HTML blocks more accurately, according to CommonMark.
    • Support shortcut reference links.
    • Don't allow an indented code block to interrupt a paragraph.
    • Change definition of "loose" and "strict" lists (items wrapped in paragraph tags vs not) to CommonMark's. The primary difference is that any single list item can trigger the entire list to be marked as "loose", rather than defining "looseness" on each specific item.
    • Fix paragraph continuations in blockquotes and list items.
    • Fix silly typing bug with tool/common_mark_stats.dart, which resulted in a dramatic overestimate of our CommonMark compliance.
    • There are now 427/613 (69%) passing CommonMark v0.25 specs.
    Open source →
  38. 0.11.0+1 06 Aug 2016
    Release notes
    • Add playground app at https://dart-lang.github.io/markdown.
    Open source →
  39. 0.10.1 24 May 2016
    Release notes
    • Parse hard line breaks properly (#86). Thanks @mehaase!
    • Fix processing of [ ... ] syntax when no resolver is specified (#92).
    • There are now 401/613 (65%) passing CommonMark v0.24 specs. (Actually: after 0f64c8f the actual number of passing tests was 352/613 (57%).)
    Open source →
  40. 0.10.0 28 Mar 2016
    Release notes
    • BREAKING: Now following the CommonMark spec for fenced code blocks. If a language (info string) is provided, it is added as a class to the code element with a language- prefix.
    • BREAKING: Now following the CommonMark spec for images. Previously, ![text](img.png) would compile too <a href="img.prg"><img src="img.prg" alt="text"></img></a>. That same code will now compile to <img src="img.png" alt="text" />.
    • Fix all strong mode errors.
    Open source →
  41. 0.9.0 10 Nov 2015
    Release notes
    • BREAKING: The text [foo] (bar) no longer renders as an inline link (#53).
    • BREAKING: Change list parsing to allow lists to begin immediately after a preceding block element, without a blank line in between.
    • Formalize an API for Markdown extensions (#43).
    • Introduce ExtensionSets. FencedCodeBlock is considered an extension, but existing usage of markdownToHtml() and new Document() will use the default extension set, which is ExtensionSet.commonMark, which includes FencedCodeBlock.
    • Inline HTML syntax support; This is also considered an extension (#18).
    • The text [foo]() now renders as an inline link.
    • Whitespace now allowed between a link's destination and title (#65).
    • Header identifier support in the HeaderWithIdSyntax and SetextHeaderWithIdSyntax extensions.
    • Implement backslash-escaping so that Markdown syntax can be escaped, such as [foo]\(bar) ==> <p>[foo](bar)</p>.
    • Support for hard line breaks with either \\\n or <code> \n</code> (#30, #60).
    • New public method for BlockParser: peek(int linesAhead), meant for use in subclasses.
    • New public members for ListSyntax: blocksInList and determineBlockItems(), meant for use in subclasses.
    • Improve public docs (better, and more of them).
    Open source →
  42. 0.8.0 14 Sep 2015
    Release notes
    • Breaking: Remove (probably unused) fields: LinkSyntax.resolved, InlineParser.currentSource.
    • Switch tests to use test instead of unittest.
    • Fix a few bugs in inline code syntax.
    • Ignore underscores inside words (#41).
    Open source →
  43. 0.7.2 06 Aug 2015
    Release notes
    • Allow resolving links that contain inline syntax (#42).
    Open source →
  44. 0.7.1+1 03 Jan 2015

    Nothing published for this version

  45. 0.7.1+2 03 Jan 2015
    Release notes
    • Formatted code.

    • Updated readme.

    Open source →
  46. 0.7.1+3 03 Aug 2015
    Release notes
    • Updated homepage.
    Open source →
  47. 0.7.0 11 Apr 2014

    Nothing published for this version

  48. 0.6.0 28 Mar 2014
    Release notes
    • Breaking Change: sdkPath now returns String? (returning null if no
      valid Dart SDK can be located).
    • Support robust SDK discovery for AOT-compiled tools (dart install,
      dart build cli) probing Platform.resolvedExecutable, DART_ROOT,
      DART_SDK, system PATH (with Flutter wrapper layout awareness), and
      FLUTTER_ROOT.
    • Add dartExecutable getter (String?) to locate the dart binary.
    • Add isValidSdkPath(String candidatePath) validation helper.
    Open source →
  49. 0.6.0+1 30 Mar 2014

    Nothing published for this version

  50. 0.5.1 06 Mar 2014
    Release notes
    • Add showMultiSelectDialog and showSingleSelectDialog to new
      cli_components library, as well as an example.
    • Adds a package:cli_util/windows_compatibility.dart library which initially
      contains just the Win32AnsiStdin class. This can be used on Windows to get
      a stdin stream that forwards arrow keys and other special keys in the way
      that you'd expect, and converts then to ANSI escape sequences.
      • Note that this is not a full implementation, and only handles the events
        that are needed for the CLI components in this package.
    • Increases min SDK constraint to ^3.7.0.
    Open source →
  51. 0.5.0 12 May 2013
    Release notes
    • Add BaseDirectories class and deprecate applicationConfigHome.
    • Removed unused package:meta dependency.
    • Require Dart 3.4.
    Open source →
  52. 0.4.0 21 Feb 2013

    Nothing published for this version

  53. 0.3.6 20 Feb 2013

    Nothing published for this version

  54. 0.3.5 19 Feb 2013

    Nothing published for this version

  55. 0.3.4 19 Feb 2013

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive