Skip to content

Third Party Extensions

Thibaud Gambier edited this page Nov 17, 2024 · 145 revisions

These extensions have been developed by various people who have made them available to the public. The Python-Markdown team does not endorse or offer any support for these extensions. Please see the individual developer of each extension for support.

If you write an extension, please add it to this list.

Math / LaTeX

  • md4mathjax Add mathjax.js support the markdown output, In a very simple straight way.
  • mdx_math Creates, saves and embeds images from LaTeX code in <math></math> tags.
  • Markdown-LaTeX Adds inline LaTeX support without the need for external images.
  • Markdown-KaTeX Adds support for KaTeX using Gitlab style syntax.
  • markdown2latex (PyPI) Selects LaTeX instead of HTML as output format.
  • asciimathml Converts AsciiMathML in markdown to presentational MathML in the HTML output.
  • python-markdown-math (PyPI) The standalone math extension from PyMarkups library, using MathJax.
  • markdown-simplechem Smart formatter for chemical equations, eliminating need for special markup in most cases. Automatically detects when number is subscript or not.
  • L2M4M (PyPI) Extends Markdown to convert LaTeX math expressions to MathML for seamless mathematical notation rendering.

Additional Tags

  • DjangoStaticTag Convert image tag source to {% 'static' <your_source> %}
  • Icons Easily display icon fonts in markdown: &icon-html5;
  • Superscript (PyPI) Superscripts text between ^ symbols
  • Subscript (PyPI) Subscripts text between ~ symbols
  • markdown_sub_sup (PyPI) as superscript and subscript, but compatible with the 3.4 version of python markdown.
  • cite (PyPI) Adds support for the <cite> tag.
  • mdx_convo markup message conversations
  • KBD Extension (PyPI) Adds support for the <kbd> tag.
  • markdown-del-ins (PyPI) Add support for <del> and <ins> tags
  • markdown-emdash (PyPI) Replace all triple dashes (---) with em-dashes (&mdash;)
  • PyEmbed (PyPI) Simple content embedding using oEmbed. Archived, currently non-functional. Not compatible with Python-Markdown 3.4.
  • python-markdown-qrcode encodes strings between [-[ and ]-] as QR codes and embeds those.
  • semanticwikilinks (PyPI) Add support for semantic (wiki)links (RDFa).
  • mdx_wikilink_plus (PyPI) Converts wikilinks ([[wikilink]]) to relative links. Absolute links are kept as is (with an automatic label made from the file path part in the URL if label is not given explicitly)
  • semanticdata (PyPI) Add support for semantic data (RDFa).
  • Grid Tables Adds grid table support (as seen in reStructuredText) to Markdown.
  • mkdcomments Removes triple-dashed html comments (<!---comment-->) in preprocessing.
  • checklist Adds GitHub-style task lists with checkboxes
  • Markdown-Bugzilla-Extension Adds shortcut links to bugs in Bugzilla using [bz#123] or [rhbz#456]
  • MarkdownBlankLine (PyPI) A markdown extension that enables you to add blank lines
  • MarkdownHighlight (PyPI) Use "???something???" to create <mark>something</mark>
  • markdown_mark (PyPI) Use "==text==" or "???text???" to create <mark>text</mark>
  • markdown-tweetable (PyPI) Embed tweetable quotes into your blog posts
  • mdx_unimoji replaces common text smileys (like ;)) with their Unicode emoji emoticons () that on some platforms automagically render in nice colors (:wink:; provided a suitable font is available).
  • markdown-magic (PyPI) Autocreates memes and finds the best-fitting gifs for your posts using Markdown.
  • mdx-google-map (PyPI) Creates embedded Google map centered with a pin on the given location.
  • mdx-map Embedded OpenStreetmap/Leaflet map. Annotate with markers and gpx routes
  • ocxsect (PyPI) Adds semantic HTML5 sectioning elements into the generated html, e.g. ~~S section 1~~ becomes <section id="section1">.
  • prependnewline (PyPI) Prepends new line to all lists that exists in the markdown document.
  • mdx_gh_links Adds support for shorthand links to GitHub users (@mention) , repositories, issues (#123) and commits.
  • mdx_gitlab_links (PyPI) Adds support for GitLab references.
  • pm_attr_list An alternative to the built-in attr_list to allow setting attributes on implied elements, such as lists (<ol>, <ul>, <dl>) and tables (<table>).
  • addcode A Python Markdown extension to add code from an existing code file into a blockcode
  • Bootstrap4Markdown A Python-Markdown extension which provides a simple syntax for including Bootstrap objects within a Markdown document.
  • markdown-gfm-admonition (PyPI) Enables the admonition syntax of GFM

URL conversion

Generic / Structure

  • figures/images/captions
  • custom-span-class (Updated version)- easily wrap text with <span> containing custom class.
  • smartypants Typographic Characters etc.
  • markdown-typografix Typographic Characters etc.
  • mdx_titlecase Apply proper casing to all titles.
  • markdown-downheader Not compatible with Python-Markdown 3.4
  • mdx_downheader (PyPI) Downgrade HTML headers, for example, transforms h1 headers to h2 Not compatible with Python-Markdown 3.4
  • outline (PyPI) Wrap Document in <section> tags based on a hierarchy of header tags.
  • xhtml_wrap
  • RSS (previous shipped with Python-Markdown before version 3.0)
  • lead-trail Add identifying class name to the first and last element of the document.
  • newtab Adds target="_blank" to links
  • markdown_link_attr_modifier Modify attributes of all generated <a> link tags. Add target="_blank" or any other custom attributes. Python-Markdown 3.x supported.
  • python-markdown-yaml-meta-data Use YAML meta data, like pandoc
  • python-markdown-full-yaml-metadata Use YAML meta data with all YAML features
  • markdown-graphviz-svg Renders {% dot ...-style Graphviz code blocks as inline SVGs
  • plantuml-markdown Adds the possibility to integrate PlantUML diagrams
  • Markdown-Include (PyPI) Provides syntax which will include the contents of other files
  • mdx_include (PyPI) Provides syntax to include local or remote files at arbitrary positions.
  • markdown-include-line Provides syntax to include lines of code from files into your document.
  • Table cell and row spans Provides spanned cells and columns in tables. Works with Python Markdown versions 2.6 and 3 under both Python 2 and Python 3.
  • mdx_spantables Provides spanned table columns and rows. Works with Python Markdown 2.6; fails with ImportError on Python Markdown 3.
  • MD-Environ (PyPI) Provides syntax which allows environment variables to be inserted into the text.
  • sections Embeds document in a hierarchy of div tags derived from the levels of headings. (Superseded by outline.)
  • pinyin_markdown (PyPI) Type Chinese pinyin with tone numbers (pin1yin1), and have them converted to beautiful accented pīnyīn.
  • markdown-i18n i18n extension for Python Markdown
  • markdown-blockdiag Blockdiag extension for Python Markdown Not compatible with Python-Markdown 3.4
  • markdown-aafigure aafigure extension for Python Markdown
  • markdown-svgbob svgbob extension for Python Markdown
  • doctor_leipzig (PyPI) extension for adding Leipzig/interlinear glosses
  • mdx_truly_sane_lists (PyPI) makes lists truly sane. Custom indents for nested lists and fix for messy linebreaks and paragraphs between lists.
  • markdown-headdown (PyPI) Demote headings by a customisable number of levels.
  • markdown-cjk-spacing Insert a space between Chinese / Japanese / Korean and English words, to display beautifully.
  • markdown-markup-emoji Markup of Emoji in the markdown document.
  • markdown-autodirection Adds dir="auto" attribute to paragraphs, This will help browser to set text direction based on the content of each paragraph
  • mkpatcher Allows arbitrary scripts to modify input files. Especially useful for MkDocs.
  • mdform Transform a markdown document into a Jinja2 Template and WTForm class.
  • CustomBlocks (PyPI) : A common markup for parametrizable and nestable components that can be extended by defining a Python function. Includes examples for div container, admonition, figure, map, linkcard, youtube, vimeo, twitter, facebook, instagram, goteo and verkami.
  • LeidenMark (PyPI): for converting Leiden+ epigraphic text to TEI Epidoc XML.
  • ToTEI (PyPI): Convert generic markdown snippets to TEI XML (consists of a single postprocessor that transforms the HTML output).
  • mdx_breakless_lists (PyPI): Allow lists to be rendered directly below paragraphs without a line break.
  • citeurl (PyPI): An extensible framework to detect legal citations and insert relevant hyperlinks.
  • md-mermaid (PyPI): mermaid extension to add support for mermaid graph inside markdown file (Flowchart, Sequence diagram, Class Diagram, State Diagram, Entity Relationship Diagram, User Journey, Gantt, Pie Chart, Requirement Diagram)
  • citeproc-markdown (PyPI): A citeproc extension to render bibliographies.
  • plain-text: Plain text serializer
  • mdx_tableau: Table markup with row and column spans, per-cell formatting, optional or multiple headers, ….

Bundles

  • PyMdown Extensions (PyPI): A collection of Python Markdown extensions. Mix and match what you like.

    • arithmatex Preserves inline and block Tex for use with MathJax.
    • b64 Embed local images by encoding them with base64.
    • betterem A slightly different approach to emphasis.
    • caret Add support for insert and superscript tags. Syntax is built around ^.
    • critic Accept, reject, or view (view is very limited) CriticMarkup syntax.
    • emoji Add support for inserting emojis (or html linked to either images on a CDN or local) via :shortnames:. Supports Gemoji short name index, and emojione out of the box.
    • escapeall Changes escape (\) so that it escapes everything so you don't have to remember what it escapes (especially if an extension appends escapes).
    • extra Alternative extra module that replaces fenced_code with superfences and smart_strong with betterem.
    • extrarawhtml A wrapper that splits out raw HTML parser from Python Markdown's extra module. Great if you don't want to enable all of extra.
    • github A convenience extension that loads up a specific set of extensions to give a GFM feel. This has been deprecated since Nov 2017
    • magiclink Auto-link email and http addresses.
    • mark Insert mark tags. Syntax uses =.
    • pathconverter Provides absolute or relative path conversions for relative links.
    • plainhtml Strip out id, style, class attributes and/or comments to get a stripped down HTML output.
    • progressbar Adds syntax for adding progress bars.
    • smartsymbols Adds a number of shorthand notation for selected symbols.
    • superfences Nested fences and flow charts and sequence diagrams (additional JS libraries required for charts and diagrams).
    • tasklist Adds tasklist support.
    • tilde Insert del and subscript tags. Syntax is built around ~.
    • inlinehilite Like CodeHilite, but for inline code blocks.