Tool · Beta

Bayanat Labs Arabic Text Normalizer (arabic-normalize)

arabic-normalize applies a named normalisation policy, such as bayanat-norm-v1, to Arabic text and reports exactly what changed: the normalised text, a change log with the position of every change, the lossy changes, the diacritization ratio and the SHA-256 of the policy. It comes as a Python library, a JavaScript package in the same repository and a free in-browser tool, with conformance fixtures that both implementations pass.

By Bayanat Labs· Updated · Apache-2.0· اقرأ بالعربية
LicenceApache-2.0 (code); CC BY 4.0 (conformance fixtures)
Versionv0.1.0 · Pilot, not released yet: no release tag, and not on PyPI or npm. Conformance fixtures v0.1.
Published
Updated
Who it is forTeams that normalise Arabic text for search, training data or speech-recognition scoring and need to state exactly which normalisation they used.
LevelIntermediate

Arabic text normalization Arabic normalizer Arabic WER normalization Arabic diacritics removal Unicode Arabic text

Key numbers

80conformance fixtures
64fixtures in the dev split
16fixtures in the acceptance split

Counted by script from the released files. Each key number is read from MANIFEST.json in the Hugging Face conformance dataset and pinned to its SHA-256.

Downloads and identifiers

Get started

Install from GitHub, pinned to a commit (the packages are not on PyPI or npm yet)

# Python 3.9 or later
pip install "git+https://github.com/Bayanat-Labs/arabic-normalize@3ad22326a66596e8dc413321017251eed6e60439"

# JavaScript (Node 20 or later): the js/ folder of a clone at the same commit
git clone https://github.com/Bayanat-Labs/arabic-normalize.git
git -C arabic-normalize checkout 3ad22326a66596e8dc413321017251eed6e60439
npm install ./arabic-normalize/js

What is released

PartLicenceIn this release
Python library, CLI and JavaScript packageApache-2.0Yes
Conformance fixtures (dev and acceptance splits)CC BY 4.0Yes
In-browser normalizer on Hugging Face SpacesApache-2.0Yes

Attribution: arabic-normalize by Bayanat Labs. https://github.com/Bayanat-Labs/arabic-normalize

Intended uses

  • Normalise Arabic text with a named, versioned policy and record its SHA-256 in a paper, a score or a dataset card.
  • See what a normalisation changed, with the position of every change and the lossy flags.
  • Test another implementation against the conformance fixtures.

Out of scope

  • Spelling correction or diacritization: the policies remove or map characters; they do not restore them.
  • Changing a released policy: any change in behaviour ships under a new policy name.

Rights at a glance

Training, display, redistribution and synthetic-voice use are separate permissions.

UseStatusNote
TrainingAllowedCode under Apache-2.0; fixtures under CC BY 4.0 with attribution.
DisplayAllowedFixtures under CC BY 4.0, with attribution.
RedistributionAllowedCode under Apache-2.0; fixtures under CC BY 4.0 with attribution; Unicode data under the Unicode License V3.
Synthetic voiceNot applicableText only.

Limitations

  • Install from GitHub for now; the PyPI and npm packages are not published yet.
  • The conformance fixtures cover the three released policies only.

Sources and licences

SourceLicenceRedistributed here
Unicode Character Database 18.0.0Unicode License V3Yes

Written by Bayanat Labs. The library bundles data derived from the Unicode Character Database, covered by the Unicode License V3 (see NOTICE in the repository). Source details

How to cite

Cite as:

Bayanat Labs (2026). arabic-normalize: Arabic text normalisation with named, versioned policies, version 0.1.0. Bayanat Labs. https://github.com/Bayanat-Labs/arabic-normalize

No DOI. Cite the URL in the citation above and the date you read it.

@misc{bayanatlabs2026arabicnormalize,
  author       = {{Bayanat Labs}},
  title        = {arabic-normalize: Arabic text normalisation with named, versioned policies, version 0.1.0},
  year         = {2026},
  month        = oct,
  howpublished = {\url{https://github.com/Bayanat-Labs/arabic-normalize}}
}

How we handle citations

Changelog

DateVersionChange
v0.1.0Pilot code (v0.1.0, not released yet) on GitHub, the in-browser tool on Hugging Face Spaces and the conformance fixtures on Hugging Face.

Corrections and removal requests

If something in this release should not be there, or is wrong, email hello@bayanatlabs.com. We handle removal requests within 30 days, and platform requests within 24 hours. How removal requests work

Related product: Bayanat Bench

Need production-grade, rights-cleared data?

We publish synthetic fixtures, open benchmarks, results, code and guides for free. Data at scale is licensed or built to order: ready-to-license Arabic speech and text datasets with commercial AI-use rights written into the agreement, and custom collection, annotation and evaluation.

Bayanat Bench: Compare model versions using the language, documents, and tasks your users rely on. License Arabic evaluation data or build a private suite around your product.