egypttranslit
Convert Egyptological transliteration to clean Unicode with Python or from the command line.
By default, egypttranslit uses the plain-text IFAO-style forms ȝ, ʿ and ỉ.
Install
python -m pip install egypttranslit
Python 3.10+.
Try it in 30 seconds
from egypttranslit import parse, parse_mdc, normalize_unicode
print(parse("nTr mAat"))
# nṯr mȝʿt
print(parse_mdc("nTr Htp xpr"))
# nṯr ḥtp ḫpr
print(normalize_unicode("ȝ ʿ ỉ"))
# ꜣ ꜥ ꞽ
What can it do?
| Feature | Example | Result |
|---|---|---|
| Automatic conversion | parse("nTr mAat") |
nṯr mȝʿt |
| Explicit MdC conversion | parse_mdc("Htp xpr") |
ḥtp ḫpr |
| Canonical Unicode | normalize_unicode("ȝ ʿ ỉ") |
ꜣ ꜥ ꞽ |
| Output profiles | parse_mdc_profiled("mAat", profile="unicode-canonical") |
mꜣꜥt |
| Batch conversion | parse_mdc_many(["nTr", "mAat"]) |
("nṯr", "mȝʿt") |
| Diagnostics | analyze("mAat", mode="mdc") |
structured result |
| Validation | validate("mAꜥt") |
raises ValueError |
| Command line | egypttranslit --mode mdc "nTr Htp" |
nṯr ḥtp |
Automatic conversion
Use parse() when the input may already contain normal text or Unicode transliteration.
from egypttranslit import parse
assert parse("nTr mAat") == "nṯr mȝʿt"
assert parse("A taxi on the X axis.") == "A taxi on the X axis."
parse() is conservative: ambiguous ASCII is left unchanged instead of being guessed.
convert() is an alias for parse().
Explicit Manuel de Codage
Use parse_mdc() when you know the input is MdC transliteration.
from egypttranslit import parse_mdc
assert parse_mdc("A a H x X S T D") == "ȝ ʿ ḥ ḫ ẖ š ṯ ḏ"
assert parse_mdc("nTr Htp xpr mAat") == "nṯr ḥtp ḫpr mȝʿt"
Gardiner/JSesh sign identifiers such as A1, D36 and T3 are preserved.
IFAO-style text
The default output uses ȝ, ʿ and ỉ instead of the raised-looking ꜣ, ꜥ and ꞽ glyphs.
Already-transliterated IFAO-style text stays stable:
from egypttranslit import parse
text = "ḏd-ḥr mȝʿ-ḫrw sȝ n ʿnḫ-ḥr"
assert parse(text) == text
Output profiles
Use a profile when you want a specific editorial convention.
from egypttranslit.converter import parse_mdc_profiled
assert parse_mdc_profiled("mAat", profile="ifao") == "mȝʿt"
assert parse_mdc_profiled("mAat", profile="unicode-canonical") == "mꜣꜥt"
assert parse_mdc_profiled("jr qd", profile="gardiner-1957") == "ꞽr ḳd"
Available profiles:
| Profile | Main behavior |
|---|---|
default |
same as ifao |
ifao |
plain-text ȝ, ʿ, ỉ |
unicode-canonical |
canonical ꜣ, ꜥ, ꞽ |
gardiner-1957 |
Gardiner-style j → ꞽ, q → ḳ |
legacy-diacritics |
alias of gardiner-1957 |
Batch conversion
from egypttranslit.batch import parse_mdc_many
result = parse_mdc_many(["nTr", "Htp", "mAat"])
assert result == ("nṯr", "ḥtp", "mȝʿt")
Batch helpers preserve order and accept lists, tuples and generators.
Diagnostics and validation
from egypttranslit.diagnostics import analyze, validate
result = analyze("mAat", mode="mdc")
assert result.text == "mȝʿt"
assert result.detected == "mdc"
validate("mAꜥt") # raises ValueError: mixed encoding
Diagnostics can classify input as mdc, unicode, mixed, ambiguous or none.
Command line
egypttranslit "nTr mAat"
# nṯr mȝʿt
egypttranslit --mode mdc "nTr Htp xpr"
# nṯr ḥtp ḫpr
egypttranslit --mode mdc --profile unicode-canonical "nTr mAat"
# nṯr mꜣꜥt
For files or pipelines:
cat input.txt | egypttranslit --mode mdc > output.txt
Modes: auto, mdc, unicode.
Main API
parse(text) automatic, conservative conversion
convert(text) alias for parse()
parse_mdc(text) explicit MdC conversion
normalize_unicode(text) canonical Unicode normalization
parse_mdc_profiled(text, profile) explicit output profile
parse_mdc_many(texts) batch MdC conversion
analyze(text, mode=...) diagnostics
validate(text) reject dangerous mixed encodings
Citation
Citation metadata is in CITATION.cff.
Barrios, E. J. egypttranslit [Computer software]. https://github.com/edujbarrios/egypttranslit
References
- IFAO: https://www.ifao.egnet.net/publications/publier/outils-ed/polices/
- Unicode UAX #57: https://unicode.org/reports/tr57/
License
Apache-2.0. See LICENSE and NOTICE.
Metadata
Release files for egypttranslit 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| egypttranslit-1.1.1.tar.gz | 38.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| egypttranslit-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.4 kB
Release files / egypttranslit-1.1.1.tar.gz
| Download URL | egypttranslit-1.1.1.tar.gz |
|---|---|
| Size | 38.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2ebed93c94f92e3c47abd22c26c874a8d1cb73706a8923bc537006934c4de0a9
|
|
BLAKE2b-256 checksum How to use checksums |
65afe1ed80b51f19c9020b0b0637f84e1ac29260fe0cdb6bbac21e0d1c46c183
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / egypttranslit-1.1.1-py3-none-any.whl
| Download URL | egypttranslit-1.1.1-py3-none-any.whl |
|---|---|
| Size | 19.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
01c696580a04ef8c2cb8e1472e0e2917900dc445fd9b77907ce539232b51ea56
|
|
BLAKE2b-256 checksum How to use checksums |
2dd0d693d7703c750c4ee8fca4d49a91f33d260f926482d4499eaea8c9ce7749
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency log