unicodedata2
Unicodedata backport updated to the latest Unicode version.
What it is and what it does
unicodedata2 is a backport and forward-port of Python's built-in unicodedata module that provides access to Unicode character properties and data. It allows you to query character names, categories, bidirectional properties, decompositions, and other Unicode attributes. The package version number tracks the Unicode standard version it implements—version 17.0.1 provides Unicode 17.0.0 data—so you can use newer Unicode versions in your code before they ship in the Python standard library.
The package is distributed as pre-compiled wheels for common platforms (macOS, Linux, Windows) and Python versions (3.10–3.12), making installation straightforward. It has no runtime dependencies and is maintained actively by the fonttools project. Use it when you need access to Unicode properties for text processing, character classification, or when your application requires Unicode data newer than what your Python version's standard library provides.
Use it for:
- Access Unicode 17.0.0 character properties in Python versions whose stdlib unicodedata hasn't been updated yet
- Perform character name lookups, category classification, and bidirectional property queries on text
- Handle emoji and new Unicode blocks in font tools or text processing pipelines
- Normalize Unicode strings using decomposition and composition data from the latest Unicode standard
- Support multilingual text analysis that depends on current Unicode character classifications
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides updated Unicode character data tables via a backport of Python's unicodedata module, currently supporting Unicode 17.0.0 with pre-compiled wheels for multiple Python versions and platforms.
Yes, if you need Unicode data newer than your Python version's standard library provides or are working with recent Unicode blocks (emoji, new scripts). No, if your application's Unicode requirements are met by the built-in unicodedata module. The package is stable, actively maintained, has no dependencies, and carries no security vulnerabilities, making it a low-risk addition when needed.
Install
unicodedata2 on PyPI
pip
pip install unicodedata2uv
uv add unicodedata2poetry
poetry add unicodedata2Installing unicodedata2
Before you install
Medium install friction due to compiled wheel distribution across multiple platforms and Python versions (3.10–3.12 supported). Active maintenance with recent release (183 days ago) and ongoing repository activity.
License in practice
Licensed under Apache License 2.0 (permissive), allowing use in proprietary and open-source projects with minimal restrictions beyond attribution.
Quickstart
pip install unicodedata2==17.0.1
import unicodedata2
print(unicodedata2.name('A'))
print(unicodedata2.category('é'))
Verify before relying
- Whether this package is necessary for projects already using Python's built-in unicodedata or only when newer Unicode versions are required before Python stdlib updates
- Performance characteristics compared to the standard library unicodedata module
- Specific use cases where Unicode 17.0.0 support is critical (e.g., emoji handling, new character blocks)
Package facts
| License | Apache License 2.0 (permissive) |
| Python support | not specified |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 183 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 785,782/month — #5,068 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: unicodedata2-17.0.1-cp310-cp310-macosx_10_9_universal2.whl; unicodedata2-17.0.1-cp310-cp310-macosx_11_0_arm64.whl; unicodedata2-17.0.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; unicodedata2-17.0.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; unicodedata2-17.0.1-cp310-cp310-musllinux_1_2_aarch64.whl; unicodedata2-17.0.1-cp310-cp310-musllinux_1_2_x86_64.whl; unicodedata2-17.0.1-cp310-cp310-win32.whl; unicodedata2-17.0.1-cp310-cp310-win_amd64.whl; unicodedata2-17.0.1-cp311-cp311-macosx_10_9_universal2.whl; unicodedata2-17.0.1-cp311-cp311-macosx_11_0_arm64.whl; unicodedata2-17.0.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; unicodedata2-17.0.1-cp311-cp311-musllinux_1_2_x86_64.whl; unicodedata2-17.0.1-cp311-cp311-win32.whl; unicodedata2-17.0.1-cp311-cp311-win_amd64.whl; unicodedata2-17.0.1-cp312-cp312-macosx_10_13_universal2.whl; unicodedata2-17.0.1-cp312-cp312-macosx_11_0_arm64.whl; unicodedata2-17.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; unicodedata2-17.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; unicodedata2-17.0.1-cp312-cp312-musllinux_1_2_aarch64.whl; unicodedata2-17.0.1-cp312-cp312-musllinux_1_2_x86_64.whl
Tags
More Text Processing packages
A drop-in replacement for Python's standard…
permissive · top 100 on PyPI
pyparsingpyparsing provides a library for building text…
permissive · top 1,000 on PyPI
docutilsDocutils converts plaintext documentation in…
unclear · top 1,000 on PyPI
RapidFuzzRapidFuzz provides fast fuzzy string matching…
permissive · top 1,000 on PyPI
tinycss2tinycss2 parses CSS strings into token and…
permissive · top 1,000 on PyPI
llama-parseLlamaParse parses complex documents (PDFs,…
permissive · top 1,000 on PyPI
unicodedataplusExtends Python's built-in unicodedata module…
permissive · top 15,000 on PyPI
tangled-up-in-unicodeProvides detailed Unicode character properties…
permissive · top 15,000 on PyPI
traceback2Provides a backport of Python's traceback…
permissive · top 5,000 on PyPI
pyunormalizeProvides Unicode normalization (NFC, NFD, NFKC,…
permissive · top 5,000 on PyPI
textwrap3Backports Python 3.6's textwrap module to…
permissive · top 5,000 on PyPI
backports.csvProvides Python 3's csv module API for Python…
unclear · top 15,000 on PyPI
pyucaImplements the Unicode Collation Algorithm to…
permissive · top 15,000 on PyPI
configparser2Backport of Python 3's configparser module to…
permissive · top 15,000 on PyPI
contextlib2contextlib2 backports the Python standard…
permissive · top 5,000 on PyPI
linecache2Provides a backport of Python's linecache…
permissive · top 5,000 on PyPI