cChardet is high speed universal character encoding detector.
Project Links
Meta
Author: PyYoshi
Requires Python: >=3.10
Classifiers
Development Status
- 6 - Mature
Programming Language
- Python :: 3
- Python :: 3.10
- Python :: 3.11
- Python :: 3.12
- Python :: 3.13
- Python :: 3.14
Topic
- Software Development :: Libraries
cChardet
cChardet is high speed universal character encoding detector. - binding to uchardet.
This fork (faust-cchardet) vs PyYoshi/cChardet
This is the faust-streaming maintained fork of
upstream PyYoshi/cChardet. It exists mainly to keep the
project building on current Python and Windows toolchains and to publish up-to-date prebuilt
wheels across platforms. The public Python API is unchanged from upstream.
The distribution is renamed on PyPI; the import name is not:
pip install faust-cchardet
import cchardet # same import name as upstream
Key differences
- Prebuilt wheels built with
cibuildwheel, so most users install without a C++ compiler:- Linux:
x86_64,i686,aarch64(CPython and PyPy) - macOS:
x86_64,arm64 - Windows:
x86_64/ AMD64
- Linux:
- Windows / MSVC support — pinned to an MSVC-compatible
uchardet(bdb8a0…) so the C++ extension compiles under Microsoft Visual C++. Upstream's neweruchardetheader does not build under MSVC. - Modern build — uses the meson-python build backend
(
distutilsis removed in Python 3.12+); Meson builds the Cython output as C++ and links the matching C++ runtime automatically. - Versioning — the version lives in
src/cchardet/version.pyand is exposed ascchardet.__version__(upstream usessetuptools_scm). - Python support — requires Python >= 3.10 (3.6–3.9 are dropped).
Detection differences (a consequence of the pinned uchardet)
- A UTF-8 byte-order mark is reported as
UTF-8-SIG(upstream reportsUTF-8). - On 32-bit (
i686) builds a few near-equivalent labels differ — e.g. ThaiTIS-620is detected asISO-8859-11.
Supported Languages/Encodings
- International (Unicode)
- UTF-8
- UTF-16BE / UTF-16LE
- UTF-32BE / UTF-32LE / X-ISO-10646-UCS-4-34121 / X-ISO-10646-UCS-4-21431
- Arabic
- ISO-8859-6
- WINDOWS-1256
- Bulgarian
- ISO-8859-5
- WINDOWS-1251
- Chinese
- ISO-2022-CN
- BIG5
- EUC-TW
- GB18030
- HZ-GB-2312
- Croatian:
- ISO-8859-2
- ISO-8859-13
- ISO-8859-16
- Windows-1250
- IBM852
- MAC-CENTRALEUROPE
- Czech
- Windows-1250
- ISO-8859-2
- IBM852
- MAC-CENTRALEUROPE
- Danish
- ISO-8859-1
- ISO-8859-15
- WINDOWS-1252
- English
- ASCII
- Esperanto
- ISO-8859-3
- Estonian
- ISO-8859-4
- ISO-8859-13
- ISO-8859-13
- Windows-1252
- Windows-1257
- Finnish
- ISO-8859-1
- ISO-8859-4
- ISO-8859-9
- ISO-8859-13
- ISO-8859-15
- WINDOWS-1252
- French
- ISO-8859-1
- ISO-8859-15
- WINDOWS-1252
- German
- ISO-8859-1
- WINDOWS-1252
- Greek
- ISO-8859-7
- WINDOWS-1253
- Hebrew
- ISO-8859-8
- WINDOWS-1255
- Hungarian:
- ISO-8859-2
- WINDOWS-1250
- Irish Gaelic
- ISO-8859-1
- ISO-8859-9
- ISO-8859-15
- WINDOWS-1252
- Italian
- ISO-8859-1
- ISO-8859-3
- ISO-8859-9
- ISO-8859-15
- WINDOWS-1252
- Japanese
- ISO-2022-JP
- SHIFT_JIS
- EUC-JP
- Korean
- ISO-2022-KR
- EUC-KR / UHC
- Lithuanian
- ISO-8859-4
- ISO-8859-10
- ISO-8859-13
- Latvian
- ISO-8859-4
- ISO-8859-10
- ISO-8859-13
- Maltese
- ISO-8859-3
- Polish:
- ISO-8859-2
- ISO-8859-13
- ISO-8859-16
- Windows-1250
- IBM852
- MAC-CENTRALEUROPE
- Portuguese
- ISO-8859-1
- ISO-8859-9
- ISO-8859-15
- WINDOWS-1252
- Romanian:
- ISO-8859-2
- ISO-8859-16
- Windows-1250
- IBM852
- Russian
- ISO-8859-5
- KOI8-R
- WINDOWS-1251
- MAC-CYRILLIC
- IBM866
- IBM855
- Slovak
- Windows-1250
- ISO-8859-2
- IBM852
- MAC-CENTRALEUROPE
- Slovene
- ISO-8859-2
- ISO-8859-16
- Windows-1250
- IBM852
- MAC-CENTRALEUROPE
Example
One-shot detection
import cchardet as chardet
with open(r"src/tests/samples/wikipediaJa_One_Thousand_and_One_Nights_SJIS.txt", "rb") as f:
msg = f.read()
result = chardet.detect(msg)
print(result)
Streaming detection
import cchardet
detector = cchardet.UniversalDetector()
with open("bigfile.txt", "rb") as f:
for line in f:
detector.feed(line)
if detector.done:
break
detector.close()
print(detector.result)
Command line
A cchardetect console script is installed with the package:
$ cchardetect src/tests/samples/wikipediaJa_One_Thousand_and_One_Nights_SJIS.txt
src/tests/samples/wikipediaJa_One_Thousand_and_One_Nights_SJIS.txt: SHIFT_JIS with confidence 0.99
$ cat somefile.txt | cchardetect # also reads from stdin
Benchmark
$ pip install -e .
$ python src/tests/bench.py
Results
CPU: AMD Ryzen 9 7950X3D
RAM: DDR5-5600MT/s 96GB
Platform: Ubuntu 24.04 amd64
Python 3.12.3
| Request (call/s) | |
|---|---|
| chardet v5.2.0 | 1.1 |
| cchardet v2.2.0a1 | 2263.6 |
LICENSE
See COPYING file.
Contact
Support Platforms
Prebuilt wheels are published for:
- Windows x86_64 (AMD64)
- Linux x86_64, i686, aarch64
- macOS x86_64, arm64
3.0.0
Jul 20, 2026
2.2.1
Jul 19, 2026
2.2.0
Jul 19, 2026
2.1.20
Jul 16, 2026
2.1.19
Aug 09, 2023
2.1.18
Feb 21, 2023
2.1.16
Jan 18, 2023
2.1.15
Jan 12, 2023
2.1.14
Jan 04, 2023
2.1.13
Dec 19, 2022
2.1.12
Dec 12, 2022
2.1.12rc0
Dec 12, 2022
2.1.11
Dec 09, 2022
2.1.10
Nov 28, 2022
2.1.10rc0
Nov 28, 2022
2.1.9
Nov 28, 2022
2.1.9rc5
Nov 28, 2022
Wheel compatibility matrix
Files in release
faust_cchardet-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl (138.2KiB)
faust_cchardet-3.0.0-cp310-cp310-macosx_11_0_arm64.whl (135.0KiB)
faust_cchardet-3.0.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (149.3KiB)
faust_cchardet-3.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (148.6KiB)
faust_cchardet-3.0.0-cp310-cp310-musllinux_1_2_aarch64.whl (1.1MiB)
faust_cchardet-3.0.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.1MiB)
faust_cchardet-3.0.0-cp310-cp310-win_amd64.whl (308.7KiB)
faust_cchardet-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl (138.1KiB)
faust_cchardet-3.0.0-cp311-cp311-macosx_11_0_arm64.whl (134.8KiB)
faust_cchardet-3.0.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (149.4KiB)
faust_cchardet-3.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (148.7KiB)
faust_cchardet-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl (1.1MiB)
faust_cchardet-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.1MiB)
faust_cchardet-3.0.0-cp311-cp311-win_amd64.whl (308.7KiB)
faust_cchardet-3.0.0-cp312-cp312-macosx_10_13_x86_64.whl (138.6KiB)
faust_cchardet-3.0.0-cp312-cp312-macosx_11_0_arm64.whl (135.0KiB)
faust_cchardet-3.0.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (149.9KiB)
faust_cchardet-3.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (149.6KiB)
faust_cchardet-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl (1.1MiB)
faust_cchardet-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.1MiB)
faust_cchardet-3.0.0-cp312-cp312-win_amd64.whl (309.1KiB)
faust_cchardet-3.0.0-cp313-cp313-macosx_10_13_x86_64.whl (137.8KiB)
faust_cchardet-3.0.0-cp313-cp313-macosx_11_0_arm64.whl (134.2KiB)
faust_cchardet-3.0.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (149.5KiB)
faust_cchardet-3.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (149.0KiB)
faust_cchardet-3.0.0-cp313-cp313-musllinux_1_2_aarch64.whl (1.1MiB)
faust_cchardet-3.0.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.1MiB)
faust_cchardet-3.0.0-cp313-cp313-win_amd64.whl (308.4KiB)
faust_cchardet-3.0.0-cp314-cp314-macosx_10_15_x86_64.whl (138.0KiB)
faust_cchardet-3.0.0-cp314-cp314-macosx_11_0_arm64.whl (134.5KiB)
faust_cchardet-3.0.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (149.7KiB)
faust_cchardet-3.0.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (149.3KiB)
faust_cchardet-3.0.0-cp314-cp314-musllinux_1_2_aarch64.whl (1.1MiB)
faust_cchardet-3.0.0-cp314-cp314-musllinux_1_2_x86_64.whl (1.1MiB)
faust_cchardet-3.0.0-cp314-cp314-win_amd64.whl (315.0KiB)
faust_cchardet-3.0.0-cp314-cp314t-macosx_10_15_x86_64.whl (139.7KiB)
faust_cchardet-3.0.0-cp314-cp314t-macosx_11_0_arm64.whl (136.6KiB)
faust_cchardet-3.0.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (152.6KiB)
faust_cchardet-3.0.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (151.6KiB)
faust_cchardet-3.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl (1.1MiB)
faust_cchardet-3.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl (1.1MiB)
faust_cchardet-3.0.0-cp314-cp314t-win_amd64.whl (318.2KiB)
faust_cchardet-3.0.0.tar.gz (767.4KiB)
No dependencies