Skip to main content

Make every effort to properly decode HTML, because HTML is unicode, dammit!

Project description

Latest Version Build & Tests Status Test Coverage License: MIT

Make every effort to properly decode HTML, because HTML is unicode, dammit!


  • Very easy to use with integrations for requests and urlopen().
  • Utilizes information from HTTP headers, inline encoding declarations, and UTF BOM-s (Byte Order Marks), as well as falling back to making a best guess based on the raw data.
  • Improves upon BeautifulSoup’s great UnicodeDammit utility.


pip install htmldammit

Additionally, it is highly recommended to install the cchardet and/or the chardet libraries. This will enable the fallback to guessing the encoding based on the raw data.

pip install cchardet chardet

Basic usage

To decode any binary HTML content into unicode (passing HTTP headers is optional):

from htmldammit import decode_html
html = decode_html(raw_html, http_headers)

To get unicode HTML from a requests response:

from htmldammit.integrations.requests import get_response_html
response = requests.get('')
html = get_response_html(response)

To get unicode HTML from a urlopen() response:

from htmldammit.integrations.urllib import get_response_html
response = urlopen('')
html = get_response_html(response)

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

htmldammit-0.1.1.tar.gz (5.9 kB view hashes)

Uploaded source

Built Distribution

htmldammit-0.1.1-py2.py3-none-any.whl (8.2 kB view hashes)

Uploaded py2 py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page