# Extensions

Python Markdown offers a flexible extension mechanism, which makes it possible to change and/or extend the behavior of the parser without having to edit the actual source files.

To use an extension, pass it to markdown with the `extensions` keyword.

    markdown.markdown(some_text, extensions=[MyExtClass(), 'myext', 'path.to.my.ext:MyExtClass'])

See the Library Reference for more details.

From the command line, specify an extension with the `-x` option.

    python -m markdown -x myext -x path.to.module:MyExtClass input.txt > output.html

See the Command Line docs or use the `--help` option for more details.

See Also

If you would like to write your own extensions, see the Extension API for details.

## Included Extensions

The extensions listed below are included with (at least) the most recent release and are officially supported by Python-Markdown. Any documentation is maintained here and all bug reports should be made to this project. If you have a typical install of Python-Markdown, these extensions are already available to you using the “Entry Point” name listed in the second column below.

Extension | Entry Point | Dot Notation
--- | --- | ---
Extra | `extra` | `markdown.extensions.extra`
Abbreviations | `abbr` | `markdown.extensions.abbr`
Attribute Lists | `attr_list` | `markdown.extensions.attr_list`
Definition Lists | `def_list` | `markdown.extensions.def_list`
Fenced Code Blocks | `fenced_code` | `markdown.extensions.fenced_code`
Footnotes | `footnotes` | `markdown.extensions.footnotes`
Markdown in HTML | `md_in_html` | `markdown.extensions.md_in_html`
Tables | `tables` | `markdown.extensions.tables`
Admonition | `admonition` | `markdown.extensions.admonition`
CodeHilite | `codehilite` | `markdown.extensions.codehilite`
Legacy Attributes | `legacy_attrs` | `markdown.extensions.legacy_attrs`
Legacy Emphasis | `legacy_em` | `markdown.extensions.legacy_em`
Meta-Data | `meta` | `markdown.extensions.meta`
New Line to Break | `nl2br` | `markdown.extensions.nl2br`
Sane Lists | `sane_lists` | `markdown.extensions.sane_lists`
SmartyPants | `smarty` | `markdown.extensions.smarty`
Table of Contents | `toc` | `markdown.extensions.toc`
WikiLinks | `wikilinks` | `markdown.extensions.wikilinks`

Note

All of the included extensions are in maintenance mode. We will continue to fix bugs and keep them up-to-date with the core parser, but no new features or changes in behavior will be made. Additionally, no new extensions will be added to the project. All future extension development should happen in third-party extensions. If you need a feature that seems like it would be a good addition to one of the included extensions, then you have three options (1) find an existing third-party extension which meets your needs, (2) build your own extension, or (3) fork the relevant included extension (pursuant to its licensing requirements) and maintain it as a third-party extension.

## Third-Party Extensions

Various individuals and/or organizations have developed extensions which they have made available to the public. A list of third party extensions is maintained on the wiki for your convenience. The Python-Markdown team offers no official support for these extensions. Please see the developer of each extension for support.