Convert HTML to Markdown-formatted text.

Overview

html2text

Build Status Coverage Status Downloads Version Wheel? Format License

html2text is a Python script that converts a page of HTML into clean, easy-to-read plain ASCII text. Better yet, that ASCII also happens to be valid Markdown (a text-to-HTML format).

Usage: html2text [filename [encoding]]

Option Description
--version Show program's version number and exit
-h, --help Show this help message and exit
--ignore-links Don't include any formatting for links
--escape-all Escape all special characters. Output is less readable, but avoids corner case formatting issues.
--reference-links Use reference links instead of links to create markdown
--mark-code Mark preformatted and code blocks with [code]...[/code]

For a complete list of options see the docs

Or you can use it from within Python:

>>> import html2text
>>>
>>> print(html2text.html2text("<p><strong>Zed's</strong> dead baby, <em>Zed's</em> dead.</p>"))
**Zed's** dead baby, _Zed's_ dead.

Or with some configuration options:

>>> import html2text
>>>
>>> h = html2text.HTML2Text()
>>> # Ignore converting links from HTML
>>> h.ignore_links = True
>>> print h.handle("<p>Hello, <a href='https://www.google.com/earth/'>world</a>!")
Hello, world!

>>> print(h.handle("<p>Hello, <a href='https://www.google.com/earth/'>world</a>!"))

Hello, world!

>>> # Don't Ignore links anymore, I like links
>>> h.ignore_links = False
>>> print(h.handle("<p>Hello, <a href='https://www.google.com/earth/'>world</a>!"))
Hello, [world](https://www.google.com/earth/)!

Originally written by Aaron Swartz. This code is distributed under the GPLv3.

How to install

html2text is available on pypi https://pypi.org/project/html2text/

$ pip install html2text

How to run unit tests

tox

To see the coverage results:

coverage html

then open the ./htmlcov/index.html file in your browser.

Documentation

Documentation lives here

Comments
  • 3.200.3 vs 2014.7.3 output quirks

    3.200.3 vs 2014.7.3 output quirks

    Just upgraded from 3.200.3 to 2014.7.3 and noticed the following things:

    Bold text inside links

    <a href="link.htm"><b>Text</b></a>
    

    Before: [**Text**](link.htm) After: **[Text**](link.htm) (to me this looks incorrect)

    Image links

    <a href="images/image.jpg"><img alt="Title" src="images/thumbnails/image.jpg"></img></a>
    

    Before: [![Title](images/thumbnails/image.jpg)](images/image.jpg) After: ![Title](images/thumbnails/image.jpg)

    Literal links

    Links like this [http://example.com](http://example.com) now look like this <http://example.com>. Is that valid markdown?

    Escapes

    A lot of unnecessary escapes: \--, 1\.

    Downgraded back to 3.200.3

    bug 
    opened by max-arnold 22
  • Malformed output of links

    Malformed output of links

    >>> import html2text
    >>> h = html2text.HTML2Text()
    >>> h.handle('<a href="http://www.test.com">http://www.test.com</a>')  #  this fails
    u'<http://www.test.com>\n\n'
    >>> h.handle('<a href="http://www.test.com/">http://www.test.com</a>')  # adding slash works
    u'[http://www.test.com](http://www.test.com/)\n\n'
    

    while this works as expected

    >>> h.handle('<a href="http://www.test.com/">test</a>')
    u'[test](http://www.test.com/)\n\n'
    >>> h.handle('<a href="http://www.test.com">test</a>')
    u'[test](http://www.test.com)\n\n'
    
    bug 
    opened by barsch 16
  • Fix issue with emphasis and whitespace

    Fix issue with emphasis and whitespace

    This fixes some issues that occurs with white spaces around the following emphasis marks ~~, **, _. It's not the most beautiful code, but it fixes the bugs.

    opened by jonathan-s 15
  • unexpanded < > &

    unexpanded < > &

    From: https://bugs.debian.org/791470

    Version: 2015.6.21-1 (and current master):

    $ echo '<body>&lt;&gt;&amp;</body>' | html2markdown
    &lt;&gt;&amp;
    

    It worked correctly in 2014.9.25-1:

    $ echo '<body>&lt;&gt;&amp;</body>' | html2markdown
    <>&
    
    bug 
    opened by stefanor 15
  • escaping surrogate.

    escaping surrogate.

    Throwing errors for my command:

    curl http://www.baeldung.com/websockets-spring|html2text|vim -

    Traceback (most recent call last): File "C:\Users\mohi\AppData\Local\Programs\Python\Python36\Scripts\html2text-script.py", line 11, in load_entry_point('html2text==2017.10.4', 'console_scripts', 'html2text')() File "c:\users\mohi\appdata\local\programs\python\python36\lib\site-packages\html2text\cli.py", line 306, in main wrapwrite(h.handle(data)) File "c:\users\mohi\appdata\local\programs\python\python36\lib\site-packages\html2text\utils.py", line 207, in wrapwrite text = text.encode('utf-8') UnicodeEncodeError: 'utf-8' codec can't encode character '\udc9d' in position 676: surrogates not allowed

    opened by ahmedmohiduet 14
  • Don't split paragraphs in blockquotes

    Don't split paragraphs in blockquotes

    This PR should fix #139. When fixing this issue I discovered that whitespace plays a crucial role at the end of the line which is rather annoying. This PR also partially fixes this as it removes whitespace from some lines.

    enhancement 
    opened by jonathan-s 13
  • UnicodeDecode Error

    UnicodeDecode Error

    I am trying to use html2text to clean up html tags on news reports scraped from Google RSS feed. I run into some UnicodeDecode errors. Specifically, I run html2text directly on the command line html2text --ignore-links --ignore-images 52778881361118.htm > test.txt I could not enclose the file as the issue tracker won't take such files. It gives me the following error: Traceback (most recent call last): File "/usr/local/bin/html2text", line 8, in load_entry_point('html2text==2014.9.25', 'console_scripts', 'html2text')() File "/Library/Python/2.7/site-packages/html2text/init.py", line 1083, in main data = data.decode(encoding) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xa5 in position 22495: invalid start byte

    Do you have any insight into how I can work around this? Thanks, Philippe

    invalid 
    opened by ploustaunau 13
  • Wraps long URLs

    Wraps long URLs

    Forwarding aaronsw/html2text#7, so it doesn't get forgotten: Forwarding http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=616090:

    Long URLs are wrapped, which they probably shouldn't be.

    Example:

    <html>
    <head><title>Test</title></head>
    <body>
    <p>And <a href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=multiarch;[email protected]">here</a> is a long link I had at hand.</p>
    </body>
    </html>
    

    Results in:

    And [here][1] is a long link I had at hand.
    
       [1]: http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=multiarch;users
    [email protected]
    
    bug 
    opened by stefanor 13
  • Add callback feature

    Add callback feature

    This PR enables finer-grained control over the output generated. Example usage:

    my_em = False
    def my_tag_handle(parser, tag, attrs, start):
      global my_em
      if tag == 'em':
        if 'class' in attrs and 'my' in attrs['class'] and start:
          parser.o("[my] ")
          my_em = True
          return True
        elif my_em and not start:
          parser.o("[/my]")
          my_em = False
          return True
    
    parser = html2text.HTML2Text()
    parser.tag_callback = my_tag_handle
    text = parser.handle(html)
    
    enhancement 
    opened by critiqjo 12
  • Long links wrapping option

    Long links wrapping option

    Possible fix for #38

    • urls which are long are not wrapped if so desired.
    • old behaviour is maintained to avoid breaking someone's code
    • --no-wrap-links has been added.
    • both inline links and reference links are supported for no wrapping.
    • docs have been updated
    opened by theSage21 12
  • Emtpy link title of <a><img></a> with images_to_alt

    Emtpy link title of with images_to_alt

    # Python 3.4.3 (default, Aug 10 2015, 16:40:44) 
    # [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
    >>> import html2text
    >>> html2text.__version__
    (2016, 4, 2)
    
    >>> txt = html2text.HTML2Text()
    >>> txt.images_to_alt = True
    >>> txt.handle('<a href="http://google.com"><img src="images/google.png"></a>')
    '[](http://google.com)\n\n'
    

    So the conversion:

    <a href="http://google.com"><img src="images/google.png"></a>
    
    [](http://google.com)\n\n
    

    Seem to come up with an empty tile. I would like to get an output like

    [image](http://google.com)\n\n
    

    or be able to ignore such links completely. Is there a way yet to archive that?

    opened by luckydonald 11
  • HTML <picture> Element not returned as image link from srcset

    HTML Element not returned as image link from srcset

    The image link from the srcset is not returned in the markdown return in the <picture> html element. I expect it to be returned like if the image src was in the <img> html element.

    Code snippet example:

    import html2text
    
    html = """
    <section>
        <h1>Poorly drawn lines comics</h1>
        <picture>
            <source
                sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"
                srcset=" https://pbs.twimg.com/media/FbVo3fiUcAAYytB?format=jpg&name=smal 640w, 
                    https://pbs.twimg.com/media/FbVo3fiUcAAYytB?format=jpg&name=medium 828w, 
                    https://pbs.twimg.com/media/FbVo3fiUcAAYytB?format=jpg&name=large 1400w" />
            <img alt="" />
        </picture>
        <p>
            This is one of my most favorite recent comics. Comes in print too. I want it for my home.
        </p>
    </section>
    """
    md = html2text.html2text(html)
    print(md)
    

    Actual Output:

    # Poorly drawn lines comics
    
    This is one of my most favorite recent comics. Comes in print too. I want it
    for my home.
    

    Expected Output:

    • includes the image link (though I'm not particular for which one)
    • same result as if using the <img> html element
    # Poorly drawn lines comics
    
    ![](https://pbs.twimg.com/media/FbVo3fiUcAAYytB?format=jpg&name=small)
    
    This is one of my most favorite recent comics. Comes in print too. I want it
    for my home.
    
    • Version by html2text --version 2020.1.16
    • Python version python --version 3.9.13
    opened by contendaClara 0
  • Support Python 3.10

    Support Python 3.10

    • Support Python 3.10 (edits to .travis.yml, setup.cfg and tox.ini files)

    In the process of implementing the above, this fix was required:

    • Fix test data for br_inside_a (my creation, not sure how this wrong version got pushed and passed Travis CI)
    • Setting environment variable PYTHONUTF8 = 1 in tox.ini as Unicode tests would fail due to encoding defaulting to windows-1252 on Windows
    • Added .gitattribute to have correct line endings

    In the process of fixing the above, the following was discovered:

    • Reversed order of arguments in assertions in tests (was assert result == actual but pytest standard -- and IDESs -- expect the reverse order, i.e. assert actual == expected)

    In the process of all the above the following was in the way:

    • Modern IDEs don't allow *.md files to end with multiple empty lines and will automatically trim them out, so I had to modify tests to assert actual.rstrip() == expected.rstrip()

    All tox tests are passed by this PR.

    opened by mborsetti 0
  • Link titles break with encoded quote

    Link titles break with encoded quote

    • Version by html2text --version: 2020.1.16
    • Test script:
    $ printf '<a title="&quot;" href="/">foo</a>' | html2text
    [foo](/ """)
    

    [foo](/ """) → [foo](/ """) [foo](/ "\"")foo

    • Python version python --version: 3.10.5
    opened by xPMo 0
  • --ignore-links flag creates new composite words in output

    --ignore-links flag creates new composite words in output

    Hi! I'm doing some natural language processing experiments and using html2text to make text sources out of internet pages. My problem is words in links are sticking to each other if I use --ignore-link flag:

    html2text --ignore-links <<< '<a href="/1">1</a><a href="/2">2</a><a href="/3">3 4</a><a href="/5">5</a>'
    123 45
    

    example is specially simplified of course, but it "creates" new composite words. I've patched it locally to add spaces after each ignored link, sort of workaround with minimal changes:

    if tag == "a" and self.ignore_links and not start:
        self.o(" ")
    if tag == "a" and not self.ignore_links:
    

    and it produces what I need:

    html2text --ignore-links <<< '<a href="/1">1</a><a href="/2">2</a><a href="/3">3 4</a><a href="/5">5</a>'
    1 2 3 4 5
    

    Should I open a pull request for this? The code above is sort of workaround, but if it will be useful - I'd be happy to make it cleaner, add tests, changelog, etc.

    • Version by html2text --version: 2020.1.16 (from pypi, but github/master version is affected too)
    • Python version python3.8 --version: Python 3.8.0`
    opened by strizhechenko 0
Releases(2019.8.11)
  • 2019.8.11(Aug 11, 2019)

    • Add support for wrapping list items.
    • Fix #201: handle ‎/‏ marks mid-text within stressed tags or right after stressed tags.
    • Feature #213: images_as_html config option to always generate an img html tag. preserves "height", "width" and "alt" if possible.
    • Remove support for end-of-life Pythons. Now requires Python 2.7 or 3.4+.
    • Remove support for retrieving HTML over the network.
    • Add __main__.py module to allow running the CLI using python -m html2text ....
    • Fix #238: correct spacing when a HTML entity follows a non-stressed tags which follow a stressed tag.
    • Remove unused or deprecated:
      • html2text.compat.escape()
      • html2text.config.RE_UNESCAPE
      • html2text.HTML2Text.replaceEntities()
      • html2text.HTML2Text.unescape()
      • html2text.unescape()
    • Fix #208: handle LEFT-TO-RIGHT MARK after a stressed tag.

    PyPI: https://pypi.org/project/html2text/2019.8.11/

    Source code(tar.gz)
    Source code(zip)
  • 2018.1.9(Jan 10, 2018)

    2018.9.1


    • Fix #188: Non-ASCII in title attribute causes encode error.
    • Feature #194: Add support for the tag.
    • Feature #193: Add support for the tag.

    PyPI: https://pypi.python.org/pypi/html2text/2018.1.9

    Source code(tar.gz)
    Source code(zip)
  • 2017.10.4(Oct 4, 2017)

    Version 2017.10.4

    • Fix #157: Fix images link with div wrap
    • Fix #55: Fix error when empty title tags
    • Fix #160: The html2text tests are failing on Windows and on Cygwin due to differences in eol handling between windows/*nix
    • Feature #164: Housekeeping: Add flake8 to the travis build, cleanup existing flake8 violations, add py3.6 and pypy3 to the travis build
    • Fix #109: Fix for unexpanded < > &
    • Fix #143: Fix line wrapping for the lines starting with bold
    • Adds support for numeric bold text indication in font-weight, as used by Google (and presumably others.)
    • Fix #173 and #142: Stripping whitespace in crucial markdown and adding whitespace as necessary
    • Don't drop any cell data on tables uneven row lengths (e.g. colspan in use)

    PyPI: https://pypi.python.org/pypi/html2text/2017.10.4

    Source code(tar.gz)
    Source code(zip)
  • 2016.9.19(Sep 20, 2016)

    2016.9.19


    • Default image alt text option created and set to a default of empty string "" to maintain backward compatibility
    • Fix #136: --default-image-alt now takes a string as argument
    • Fix #113: Stop changing quiet levels on /script tags.
    • Merge #126: Fix deprecation warning on py3 due to html.escape
    • Fix #145: Running test suite on Travis CI for Python 2.6.

    PyPI: https://pypi.python.org/pypi/html2text/2016.9.19

    Source code(tar.gz)
    Source code(zip)
  • 2016.5.29(May 29, 2016)

    2016.5.29


    2016.5.29


    • Fix #125: --pad_tables now pads table cells to make them look nice.
    • Fix #114: Break does not interrupt blockquotes
    • Deprecation warnings for URL retrieval.

    PyPI: https://pypi.python.org/pypi/html2text/2016.5.29

    Source code(tar.gz)
    Source code(zip)
  • 2016.4.2(Apr 1, 2016)

  • 2016.1.8(Jan 8, 2016)

    2016.1.8


    • Feature #99: Removed duplicated initialization.
    • Fix #100: Get element style key error.
    • Fix #101: Fix error end tag pop exception.
    • <s>, <strike>, <del> now rendered as ~~text~~.

    PyPi: https://pypi.python.org/pypi/html2text/2016.1.8

    Source code(tar.gz)
    Source code(zip)
  • 2015.11.4(Nov 4, 2015)

    2015.11.4


    • Fix #38: Long links wrapping controlled by --no-wrap-links.
    • Note: --no-wrap-links implies --reference-links
    • Feature #83: Add callback-on-tag.
    • Fix #87: Decode errors can be handled via command line.
    • Feature #95: Docs, decode errors spelling mistake.
    • Fix #84: Make bodywidth kwarg overridable using config.

    PyPi: https://pypi.python.org/pypi/html2text/2015.11.4

    Source code(tar.gz)
    Source code(zip)
  • 2015.6.21(Jun 21, 2015)

    2015.6.21


    • Fix #31: HTML entities stay inside link.
    • Fix #71: Coverage detects command line tests.
    • Fix #39: Documentation update.
    • Fix #61: Functionality added for optional use of automatic links.
    • Feature #80: title attribute is preserved in both inline and reference links.
    • Feature #82: More command line options. See docs.

    Pypi: https://pypi.python.org/pypi/html2text/2015.6.21

    Source code(tar.gz)
    Source code(zip)
  • 2015.6.12(Jun 12, 2015)

    2015.6.12


    • Feature #76: Making pre blocks clearer for further automatic formatting.
    • Fix #71: Coverage detects tests carried out in subprocesses

    PyPi: https://pypi.python.org/pypi/html2text/2015.6.12

    Source code(tar.gz)
    Source code(zip)
  • 2015.6.6(Jun 5, 2015)

    2015.6.6


    • Fix #24: 3.200.3 vs 2014.7.3 output quirks.
    • Fix #61. Malformed links in markdown output.
    • Feature #62: Automatic version number.
    • Fix #63: Nested code, anchor bug.
    • Fix #64: Proper handling of anchors with content that starts with tags.
    • Feature #67: Documentation all over the module.
    • Feature #70: Adding tests for the module.
    • Fix #73: Typo in config documentation.
    Source code(tar.gz)
    Source code(zip)
  • 2015.4.14(Apr 14, 2015)

    2015.4.14


    • Feature #59: Write image tags with height and width attrs as raw html to retain dimensions.

    PyPi: https://pypi.python.org/pypi/html2text/2015.4.14

    Source code(tar.gz)
    Source code(zip)
  • 2015.4.13(Apr 13, 2015)

    2015.4.13


    • Feature #56: Treat '-' file parameter as stdin.
    • Feature #57: Retain escaping of html except within code or pre tags.

    PyPi: https://pypi.python.org/pypi/html2text/2015.4.13

    Source code(tar.gz)
    Source code(zip)
  • 2015.2.18(Feb 18, 2015)

  • 2014.12.29(Dec 29, 2014)

    2014.12.29


    • Feature #51: Add single line break option. This feature is useful for ensuring that lots of extra line breaks do not end up in the resulting Markdown file in situations like Evernote .enex exports. Note that this only works properly if body-width is set to 0.

    PyPi: https://pypi.python.org/pypi/html2text/2014.12.29

    Source code(tar.gz)
    Source code(zip)
  • 2014.12.24(Dec 24, 2014)

    2014.12.24


    • Feature #49: Added a images_to_alt option to discard images and keep only their alt.
    • Feature #50: Protect links, surrounding them with angle brackets to avoid breaking...
    • Feature: Add setup.cfg file.

    PyPi: https://pypi.python.org/pypi/html2text/2014.12.24

    Source code(tar.gz)
    Source code(zip)
  • 2014.12.5(Dec 5, 2014)

    2014.12.5


    • Feature: Update README.md with usage examples.
    • Fix #35: Remove py_modules from setup.py.
    • Fix #36: Excludes tests from being installed as a separate module.
    • Fix #37: Don't hardcode the path to the installed binary.
    • Fix: Readme typo in running cli.
    • Feature #40: Extract cli part to cli module.
    • Feature #42: Bring python version compatibility to compat.py module.
    • Feature #41: Extract utility/helper methods to utils module.
    • Fix #45: Does not accept standard input when running under Python 3.
    • Feature: Clean up ChangeLog.rst for version and date numbers.

    PyPi: https://pypi.python.org/pypi/html2text/2014.12.5

    Source code(tar.gz)
    Source code(zip)
  • 2014.9.25(Sep 25, 2014)

    2014.9.25 - 2014-09-25


    • Feature #29, #27: Add simple table support with bypass option.
    • Fix #20: Replace project website with: http://alir3z4.github.io/html2text/ .
    Source code(tar.gz)
    Source code(zip)
  • 2014.9.8(Sep 18, 2014)

  • 2014.9.7(Sep 18, 2014)

    2014.9.7 - 2014-09-07


    • Fix unicode/type error in memory leak unit-test.
    • Feature #16: Remove install_deps.py.
    • Feature #17: Add status badges via pypin.
    • Feature #18: Add Python 3.4 to travis config file.
    • Feature #19: Bring html2text to a separate module and take out the conf/constant variables.
    • Feature #21: Remove meta vars from html2text.py file header.
    • Fix: Fix TypeError when parsing tags like . Fixed in #25.
    Source code(tar.gz)
    Source code(zip)
  • 2014.7.3(Jul 4, 2014)

    2014.7.3 - 2014-07-03

    Fix #8: Remove How to do a release section from README.md. Fix #11: Include test directory markdown, html files. Fix #13: memory leak in using handle while keeping the old instance of html2text.

    PyPi: https://pypi.python.org/pypi/html2text/2014.7.3

    Source code(tar.gz)
    Source code(zip)
  • 2014.4.5(Jul 4, 2014)

    2014.4.5 - 2014-04-05

    Fix #1: Add ChangeLog.rst file. Fix #2: Add AUTHORS.rst file.

    PyPi: https://pypi.python.org/pypi/html2text/2014.4.5

    Source code(tar.gz)
    Source code(zip)
Owner
Alireza Savand
I am Alireza Savand, a Software Architect.
Alireza Savand
A super simple script which uses the GitHub API to convert your markdown files to GitHub styled HTML site.

A super simple script which uses the GitHub API to convert your markdown files to GitHub styled HTML site.

Çalgan Aygün 213 Dec 22, 2022
Provides syntax for Python-Markdown which allows for the inclusion of the contents of other Markdown documents.

Markdown-Include This is an extension to Python-Markdown which provides an "include" function, similar to that found in LaTeX (and also the C pre-proc

Chris MacMackin 85 Dec 30, 2022
Mdformat is an opinionated Markdown formatter that can be used to enforce a consistent style in Markdown files

Mdformat is an opinionated Markdown formatter that can be used to enforce a consistent style in Markdown files. Mdformat is a Unix-style command-line tool as well as a Python library.

Executable Books 180 Jan 6, 2023
Application that converts markdown to html.

Markdown-Engine An application that converts markdown to html. Installation Using the package manager [pip] pip install -r requirements.txt Usage Run

adriano atambo 1 Jan 13, 2022
A command line tool that can convert Day One data into markdown files.

Introduction Features Before Start Export data from Day One Check Integrity Special Cases for Photo Extension Name Audio Extension Name Usage Known Is

gyro永不抽风 26 Dec 31, 2022
A fast yet powerful Python Markdown parser with renderers and plugins.

Mistune v2 A fast yet powerful Python Markdown parser with renderers and plugins. NOTE: This is the re-designed v2 of mistune. Check v1 branch for ear

Hsiaoming Yang 2.2k Jan 4, 2023
A Python implementation of John Gruber’s Markdown with Extension support.

Python-Markdown This is a Python implementation of John Gruber's Markdown. It is almost completely compliant with the reference implementation, though

Python-Markdown 3.1k Dec 30, 2022
A Python implementation of John Gruber’s Markdown with Extension support.

Python-Markdown This is a Python implementation of John Gruber's Markdown. It is almost completely compliant with the reference implementation, though

Python-Markdown 3.1k Dec 31, 2022
Static site generator that supports Markdown and reST syntax. Powered by Python.

Pelican Pelican is a static site generator, written in Python. Write content in reStructuredText or Markdown using your editor of choice Includes a si

Pelican dev team 11.3k Jan 5, 2023
Extensions for Python Markdown

PyMdown Extensions Extensions for Python Markdown. Documentation Extension documentation is found here: https://facelessuser.github.io/pymdown-extensi

Isaac Muse 685 Jan 1, 2023
markdown2: A fast and complete implementation of Markdown in Python

Markdown is a light text markup format and a processor to convert that to HTML. The originator describes it as follows: Markdown is a text-to-HTML con

Trent Mick 2.4k Dec 30, 2022
Comprehensive Markdown plugin built for Django

Django MarkdownX Django MarkdownX is a comprehensive Markdown plugin built for Django, the renowned high-level Python web framework, with flexibility,

neutronX 740 Jan 8, 2023
Awesome Django Markdown Editor, supported for Bootstrap & Semantic-UI

martor Martor is a Markdown Editor plugin for Django, supported for Bootstrap & Semantic-UI. Features Live Preview Integrated with Ace Editor Supporte

null 659 Jan 4, 2023
Markdown parser, done right. 100% CommonMark support, extensions, syntax plugins & high speed. Now in Python!

markdown-it-py Markdown parser done right. Follows the CommonMark spec for baseline parsing Configurable syntax: you can add new rules and even replac

Executable Books 398 Dec 24, 2022
A fast, extensible and spec-compliant Markdown parser in pure Python.

mistletoe mistletoe is a Markdown parser in pure Python, designed to be fast, spec-compliant and fully customizable. Apart from being the fastest Comm

Mi Yu 546 Jan 1, 2023
Livemark is a static page generator that extends Markdown with interactive charts, tables, and more.

Livermark This software is in the early stages and is not well-tested Livemark is a static site generator that extends Markdown with interactive chart

Frictionless Data 86 Dec 25, 2022
Remarkable Markdown Debian Package Fix

Remarkable debian package fix For some reason the Debian package for remarkable markdown editor has not been made to install properly on Ubuntu 20.04

Eric Seifert 37 Jan 2, 2023
Read a list in markdown and do something with it!

Markdown List Reader A simple tool for reading lists in markdown. Usage Begin by running the mdr.py file and input either a markdown string with the -

Esteban Garcia 3 Sep 13, 2021
Lightweight Markdown dialect for Python desktop apps

Litemark is a lightweight Markdown dialect originally created to be the markup language for the Codegame Platform project. When you run litemark from the command line interface without any arguments, the Litemark Viewer opens and displays the rendered demo.

null 10 Apr 23, 2022