Skip to main content

biblical-transliteration

PyPI tests Python License: MIT

Biblical Hebrew and Koine Greek transliteration in three schemes — academic (SBL), simple ASCII, and phonetic. Pure Python, no dependencies.

from biblical_transliteration import (
    HebrewTransliterator, HebrewScheme, HebrewOptions,
    GreekTransliterator, GreekScheme, GreekOptions,
)

heb = HebrewTransliterator(HebrewOptions(scheme=HebrewScheme.SBL))
heb.transliterate("בְּרֵאשִׁית")
# 'bǝrēʾšîṯ'

grk = GreekTransliterator(GreekOptions(scheme=GreekScheme.SBL))
grk.transliterate("Ἐν ἀρχῇ ἦν ὁ λόγος")
# 'En archē ēn ho logos'

Install

pip install biblical-transliteration

Requires Python 3.10+. Zero runtime dependencies.

Schemes

Each transliterator supports three output styles via TransliterationScheme:

Scheme Hebrew (שָׁלוֹם) Greek (λόγος) Use when
SBL šālôm logos Academic writing, scholarly publications, lexicon entries. Full SBL Handbook of Style diacritics.
SIMPLE shalom logos Reader-friendly Latin, no diacritics. Good for UI labels and casual contexts.
PHONETIC shah-LOHM LAH-gahs Pronunciation cues with syllable boundaries and stress (capitalized syllable). Hebrew is spelled for modern-Hebrew pronunciation, Greek for Erasmian (Mounce-style seminary) pronunciation. For learners and audio-aligned uses.

What this handles

Hebrew (~1,000 lines of rules):

  • Full nikkud (vowel point) coverage, including hataf vowels
  • BeGaD KeFaT spirantization with proper SBL macron-under marks (ḇ ḡ ḏ ḵ p̄ ṯ)
  • Vocal vs silent shewa distinction
  • Qamats qatan (o) vs qamats gadol (a) detection
  • Dagesh forte vs lene
  • Shin/sin dot disambiguation
  • Final letter forms (ך ם ן ף ץ)
  • Cantillation marks (te'amim) drive stress placement in the PHONETIC scheme, backed by an OSHB-derived stress lexicon when no te'am is present
  • The Tetragrammaton is never rendered as the qere-vowel hybrid (yǝhwāh, the "Jehovah" error) — bare consonants by default, or a substitute of your choice (Adonai, Hashem, …)
  • Maqaf, meteg, sof pasuq

Koine Greek (~800 lines of rules):

  • Diphthongs in canonical order (αι, ει, οι, υι, αυ, ευ, ηυ, ου), uppercase and lowercase
  • Breathing marks read off either vowel of a diphthong
  • Iota subscript (macron-only ā ē ō in SBL so it can't collide with the αι diphthong; i appended in Simple; silent in Phonetic)
  • Final sigma (ς)
  • Koine-correct phonemes in SBL/Simple — β = b (not modern v), φ = ph (not modern f), υ = u in diphthongs; the PHONETIC scheme is Erasmian, spelled for English readers (χ = kh, φ = f)
  • Eta/omega macron distinction in SBL
  • Accents and breathing marks normalized

Why three schemes?

Open-source transliterators tend to pick one and stick with it, which forces you to choose between accuracy (SBL is hard to read for non-specialists) and readability (loose ASCII loses important phonemic distinctions). Three schemes lets you produce SBL-compliant output for academic work, ASCII for UI labels, and pronunciation cues for learners — from the same source text.

Why a separate Hebrew + Greek package?

Most existing PyPI packages are language-specific and use inconsistent APIs. This package presents a single mental model — Transliterator(Options(scheme=...)) — that works identically across both languages, so consumer code that transliterates whatever script it encounters stays clean.

This package fills a specific gap in the Python biblical-NLP ecosystem. Other tools cover adjacent problems well; here's what they do differently so you can pick the right one:

Package Scope Notes
biblical-transliteration (this) Hebrew + Koine Greek, three schemes (SBL/Simple/Phonetic) Designed for biblical use specifically. Koine-correct phonemes for Greek; full nikkud + begadkefat + qamats qatan handling for Hebrew. Single consistent API across both languages.
transliterate 9 languages including (Modern/Classical) Greek; no Hebrew Excellent general-purpose romanizer for European/Caucasian scripts. Greek pack is calibrated for Modern Greek phonology, not Koine — β→v, φ→f, eta and epsilon collapsed. Use this if you need Russian/Armenian/Georgian/Bulgarian etc. alongside Greek.
beta-code Greek only Solves a different problem: BETA encoding ↔ Greek Unicode (e.g. mh=nin ↔ μῆνιν). Pair it with this package when working with CCAT/TLG sources — first beta→Unicode with beta-code, then Unicode→Latin with this.
Hebrew transliteration on PyPI — As of 2026, there is no actively maintained Biblical Hebrew transliterator on PyPI. This package fills that gap.

If your workflow needs SBL Handbook of Style-compliant academic transliteration with proper diacritics for both Hebrew (bǝrēʾšîṯ, šālôm) and Greek (logos, Iēsous), this package is the only option in the Python ecosystem at the time of writing.

Limitations

  • Hebrew text must be Unicode (with or without nikkud). Beta-coded Hebrew (CCAT/Michigan-Claremont format) is not handled by this library — use a beta→Unicode converter first.
  • Greek text is assumed Koine. Modern Greek and Classical Greek work with the SBL and SIMPLE schemes, but PHONETIC is calibrated for Koine and may not match what you expect for Classical or Modern texts.
  • Qamats qatan detection is rule-based, not perfect. Texts with explicit U+05C7 marking (modern WLC) work reliably; older texts using the ambiguous U+05B8 may occasionally guess wrong. Meteg is not consulted, so a meteg-disambiguated qamats gadol (e.g. חָֽכְמָה "she was wise" vs חָכְמָה "wisdom") is still read as qatan.
  • Unpointed Hebrew gets consonant-skeleton output. BeGaD KeFaT letters default to their stop values (b g d k p t) since there is no dagesh information; final kaf/pe keep the spirant (post-vocalic position). Nikkud detection is per transliterate() call, not per word: an unpointed word mixed into pointed text uses the pointed defaults.

Examples

from biblical_transliteration import HebrewTransliterator, HebrewOptions, HebrewScheme

# All three schemes for the same word
word = "שָׁלוֹם"
for scheme in HebrewScheme:
    t = HebrewTransliterator(HebrewOptions(scheme=scheme))
    print(f"{scheme.value:10} {t.transliterate(word)}")
# sbl        šālôm
# simple     shalom
# phonetic   shah-LOHM
from biblical_transliteration import GreekTransliterator, GreekOptions, GreekScheme

# John 1:1
text = "Ἐν ἀρχῇ ἦν ὁ λόγος, καὶ ὁ λόγος ἦν πρὸς τὸν θεόν, καὶ θεὸς ἦν ὁ λόγος."
for scheme in GreekScheme:
    t = GreekTransliterator(GreekOptions(scheme=scheme))
    print(f"{scheme.value:10} {t.transliterate(text)}")

Development

git clone https://github.com/curran-gehring/biblical-transliteration.git
cd biblical-transliteration
python -m venv .venv
source .venv/bin/activate     # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
pytest

License

MIT — see LICENSE.

Acknowledgments

Transliteration rules were developed against the Society of Biblical Literature Handbook of Style (2nd ed., 2014) and validated against verses from the CATSS parallel corpus.

The phonetic stress lexicon (biblical_transliteration/data/stress_lexicon.json) is derived from the cantillation accents of the Westminster Leningrad Codex as encoded by the Open Scriptures Hebrew Bible (morphhb), used under the Creative Commons Attribution 4.0 International License. The bundled file contains only derived stress positions; regenerate it with tools/build_stress_lexicon.py.

Metadata

Release files for biblical-transliteration 0.5.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for biblical-transliteration 0.5.3
File Size Uploaded
biblical_transliteration-0.5.3.tar.gz 111.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for biblical-transliteration 0.5.3
File Interpreter ABI Platform
biblical_transliteration-0.5.3-py3-none-any.whl Python 3 none any Details

Total release size: 212.6 kB

Release files / biblical_transliteration-0.5.3.tar.gz

Download URL biblical_transliteration-0.5.3.tar.gz
Size 111.9 kB
Tags Source
SHA-256 checksum
How to use checksums
fbab6c64fee978ee17965ffd71e5adf0bf27a20b2aa77d029de5e3d9c0f37a23
BLAKE2b-256 checksum
How to use checksums
11289e2c57668998594d5672ad20c0c0324f9407f3af99e4361886b6d8fd6e3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 23, 2026.

Transparency log

Release files / biblical_transliteration-0.5.3-py3-none-any.whl

Download URL biblical_transliteration-0.5.3-py3-none-any.whl
Size 100.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d7a91378e66f230c34943f94847302de73c61c428e2aefc19c680deb618c8a95
BLAKE2b-256 checksum
How to use checksums
60559a52b13a930c1faa5d1cbcbc79501c06d7658ce6051b189a888cfc05af00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 23, 2026.

Transparency log

Release history Release notifications | RSS feed

0.5.5

2 release files

0.5.4

2 release files

This release

0.5.3 This release

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.3.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page