Hide navigation sidebar
Hide table of contents sidebar
Skip to content
Back to top
View this page
Toggle table of contents sidebar

# Optional speedup extension

## Why?

charset-normalizer will always remain pure Python, meaning that a environment without any build capabilities will run this program without any additional requirements.

Nonetheless, starting from the version 3.0 we introduce and publish some platform specific wheels including a pre-built extension.

Most of the time is spent in the module md.py so we decided to “compile it” using Mypyc.

1. It does not require to have a separate code base

2. Our project code base is rather simple and lightweight

3. Mypyc is robust enough today

4. Four times faster!

## How?

If your platform and/or architecture is not served by this swift optimization you may compile it easily yourself. Following those instructions (provided you have the necessary toolchain installed):

>     export CHARSET_NORMALIZER_USE_MYPYC=1
>     pip install mypy build wheel
>     pip install charset-normalizer --no-binary :all:

## How not to?

You may install charset-normalizer without the speedups by directly using the universal wheel (most likely hosted on PyPI or any valid mirror you use) with `--no-binary`.

E.g. when installing `requests` and you don’t want to use the `charset-normalizer` speedups, you can do:

>     pip install requests --no-binary charset-normalizer

When installing charset-normalizer by itself, you can also pass `:all:` as the specifier to `--no-binary`.

>     pip install charset-normalizer --no-binary :all: