Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Convert HTML to Markdown-formatted text.
Python HTML

This branch is 195 commits ahead of aaronsw:master

Bump version number to latest.

Going to release now!!!
latest commit e902a7c7bb
@Alir3z4 authored


Build Status Coverage Status Downloads Version Egg? 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|url) [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
--protect-links Protect links from line breaks surrounding them "+" with angle brackets
--ignore-images Don't include any formatting for images
--images-to-alt Discard image data, only keep alt text
--images-with-size Write image tags with height and width attrs as raw html to retain dimensions
-g, --google-doc Convert an html-exported Google Document
-d, --dash-unordered-list Use a dash rather than a star for unordered list items
-b BODY_WIDTH, --body-width=BODY_WIDTH Number of characters per output line, 0 for no wrap
-i LIST_INDENT, --google-list-indent=LIST_INDENT Number of pixels Google indents nested lists
-s, --hide-strikethrough Hide strike-through text. only relevent when -g is specified as well
--escape-all Escape all special characters. Output is less readable, but avoids corner case formatting issues.
--bypass-tables Format tables in HTML rather than Markdown syntax.
--single-line-break Use a single line break after a block element rather than two.

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=''>world</a>!")
Hello, world!

>>> print(h.handle("<p>Hello, <a href=''>world</a>!"))

Hello, world!

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

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

How to install

html2text is available on pypi

$ pip install html2text

How to run unit tests

PYTHONPATH=$PYTHONPATH:. coverage run --source=html2text test -v
Something went wrong with that request. Please try again.