Introducing the Modernized BDB Reader at ChavrutAI: A Modernization of Brown-Driver-Briggs, the Major Scholarly Dictionary of Biblical Hebrew
ChavrutAI now has a Brown-Driver-Briggs reader live at chavrutai.com/bdb.1 BDB is shorthand for A Hebrew and English Lexicon of the Old Testament by Francis Brown, S.R. Driver, and Charles Briggs (1906), the standard scholarly dictionary of biblical Hebrew. Every Hebrew root, every shade of meaning, every cognate from Akkadian to Ugaritic to Arabic, across 1,127 pages of dense text full of archaic abbreviations.
The reader is a sibling of the Jastrow dictionary I shipped last year.2 Same architecture, same browse-by-letter grid, same autosuggest, same pipeline that splits long entries into paragraphs and links every Bible reference to the corresponding ChavrutAI Bible page. What changed is the source material. Jastrow is post-biblical Hebrew and Aramaic for the Talmud; BDB is biblical Hebrew.
What the reader does
ChavrutAI’s BDB reader uses Sefaria’s version of BDB. It takes the dense raw text and splits into new lines, using deterministic rules based on punctuation. In addition, it exposes Sefaria’s modernized canonical names of biblical books in its hyperlinks, as the visible text. In addition, it expands more than 230 abbreviations,3 adds transliteration (in brackets) for Greek and Arabic into Latin characters and Syriac into Hebrew characters,4 and converts BDB’s tiny superscript citations into readable parentheticals.
For example, grammatical shorthand: Pf. becomes perfect, cstr. becomes construct, Hiph. becomes Hiphil. Cognate-language prefixes: Akk. becomes Akkadian, Ar. becomes Arabic, Syr. becomes Syriac. Scholar surnames that BDB cites in shortened form: Lag becomes Lagarde, We becomes Wellhausen, Hpt becomes Haupt. Latin logical shorthand: l.c. becomes in the place cited, c. acc. becomes with the accusative.
Bible references are rewritten and hyperlinked. An in-line citation that originally reads Nu 21:30 is replaced with Numbers 21:30 and links straight to that chapter in the ChavrutAI Bible reader.
The pipeline that does this work is shared across both Jastrow and BDB. Each lexicon supplies its own mappings.json (the abbreviation table)5 and a few small format-detection heuristics.
Screenshots
Screenshot of ChavrutAI’s BDB main page, showing search and index grid:6
Screenshot of page for Letter “Alef”, listing all “Alef” entries:
Example
Entry “אֲבִינֵר”, in ChavrutAI:
noun proper masculine (my father is Nêr, or is a lamp compare
II Samuel 21:17; according to Lagarde (BN 75) = אֲבֶן (= בֶּן) + נֵר = son of Ner; compare LXX (Septuagint) Ἀβεννηρ [Abennēr])
so only I Samuel 14:50, elsewhere אַבְנֵר
cousin of Saul, and captain of his host I Samuel 14:50, I Samuel 14:51; I Samuel 17:55 ((×3)) + 52 times 1 & 2 S + I Kings 2:5, I Kings 2:32 I Chronicles 26:28; I Chronicles 27:21.
Screenshot:
Compare with that same entry “אֲבִינֵר”, in Sefaria:
אֲבִינֵר n.pr.m. (my father is Nêr, or is a lamp cf. 2 S 21:17; according to LagBN 75 = אֲבֶן (= בֶּן) + נֵר = son of Ner; cf. 𝔊 Ἀβεννηρ)—so only 1 S 14:50, elsewhere אַבְנֵר—cousin of Saul, and captain of his host 1 S 14:50, 51; 17:55(×3) + 52 times 1 & 2 S + 1 K 2:5, 32 1 Ch 26:28; 27:21.
Screenshot:
Appendix 1 - Some selected mapped abbreviations, by category
Grammar/morphology (~35): Pf. Impf. Inf. Imv. Pt. Niph. Pi. Pu. Hiph. Hoph. Hithp. abs. cstr. sf. sg. pl. ms. mpl. fs. fpl. vb. n.m. n.f. subst. denom. trans. intrans. partic. adj. adv. conj. prep. pron. neg. interrog. rel.
Source/literature (~14): MT (Masoretic Text), LXX (Septuagint), NH (New Hebrew), BR (Biblical Researches), KAT (Keilinschriften und das Alte Testament), MI (Mesha Inscription), ZAW (Zeitschrift für die alttestamentliche Wissenschaft), ZMG (Zeitschrift der deutschen morgenländischen Gesellschaft), Onom. (Onomasticon), AG. (Aramaic Grammar), Sudar. Alt. (Südarabische Altertümer), Hex (Hexateuch), Vrss (Versions), COT
Cognate languages (~15): Ar. (Arabic), Aram. (Aramaic), Syr. (Syriac), Eth. (Ethiopic), Akk. (Akkadian), Assyr. (Assyrian), Egypt. (Egyptian), Ph. (Phoenician), Sab. (Sabean), Sam. (Samaritan), Gk. (Greek), Nab. (Nabataean), Palm. (Palmyrene), Ugar. (Ugaritic), Euseb. (Eusebius)
Scholar surnames (~22):
Bu (Budde),
Che (Cheyne),
Co (Cornill),
Dl (Delitzsch)
Dr (Driver),
Du (Duhm)
Ges (Gesenius)
Hal (Halévy)
Hpt (Haupt)
DHM (D.H. Müller)
Kit (Kittel)
Klo (Klostermann)
Kö (König)
Lag (Lagarde)
Rob (Robinson)
RS / WRS (W. Robertson Smith)
Sm (Smend)
Sta (Stade)
Th (Thenius)
We (Wellhausen)
Logical / cross-reference (~19): i.e. e.g. cf. comp. cmp. opp. subj. obj. loc. l.c. id. v. vid. dub. c. c. acc. in phr. sq. ref. infr.
Usage/style (~10): metaph. fig. lit. Arch. perh. prob. usu. esp. freq. appar.
Symbols (6):
√ (verbal root)
𝔊 (Septuagint)7
𝔐 (Masoretic)
𝔖 (Syriac)
𝔗 (Targum)
𝔙 (Vulgate)
Appendix 2 - Technical
Files are at the ChavrutAI Github repo, in the folder “scripts”.
Headword fetcher
Script: scripts/fetch-lexicon-headwords.ts.
TypeScript, run via tsx. Parametric — same script handles BDB, Jastrow, and any other Sefaria lexicon by name.
npx tsx scripts/fetch-lexicon-headwords.ts --lexicon=”BDB Dictionary”
npx tsx scripts/fetch-lexicon-headwords.ts --lexicon=”Jastrow Dictionary”
Algorithm:
Define the alphabet to enumerate (default: 22 standard Hebrew letters; optional
--alphabet=hebrew-extendedadds the five final-letter forms).For each letter,
GET https://www.sefaria.org/api/words/completion/{letter}/{lexiconName}?limit=50000.The response is a JSON array of[displayForm, canonicalHeadword]pairs.Dedupe across letters (rare overlaps occur for entries that re-anchor at multiple letters).
Write a JSON file with a metadata block (lexicon name, source URL, fetched timestamp, per-letter counts) and a flat headwords array to JSON files in shared/data/lexicon-headwords/.
Headword filter
Script: scripts/filter-lexicon-headwords.ts. Takes a raw headword index, fetches each entry against /api/words/, and writes a filtered index containing only headwords that resolve to a non-empty entry.
The filter is what catches the ghost headwords. The strategy is conservative: a headword is kept only if the API returns a 200 with at least one sense object and at least one non-empty definition string. Entries that return an empty array, an error, or a malformed payload are dropped.
For BDB the filter keeps 5,250 of 9,045. For Jastrow it keeps 30,756 of 30,939.
Abbreviation expansion
File: client/src/lib/dictionary-format.ts, function expandAbbreviations(text, mappings). Shared by both lexicons.
Pipeline order (BDB)
splitIntoParagraphs
→ convertSupTagsToParens
→ splitByPeriodAndLink
→ convertSuperscriptLetters
→ expandAbbreviations(text, bdbMappings)
→ convertBdbInternalLinks
→ convertSefariaLinksToInternal
See also my new table uploaded at my Academia page, which was part of this project: “Proper Nouns (People and Places) in the Hebrew Bible: A Structured Extraction of BDB’s Entries on Named Entities”. See the abstract there:
An extraction of every “noun proper” entry in the Brown-Driver-Briggs Hebrew Lexicon (BDB, 1906) — the standard scholarly dictionary of biblical Hebrew — covering personal names, place names, deities, peoples, rivers, mountains, and other named entities.
The source HTML was harvested from Sefaria’s lexicon API and parsed; BDB’s dense, century-old scholarly shorthand is then expanded into modern equivalents and split into structured columns.
Headline numbers:
1,796 senses across 1,741 unique headwords (homonyms get separate rows — e.g. אָדָם appears as both “the man” and “the city”)
6,588 Bible references in canonical full-name form (II Samuel 23:32, not BDB’s terse 2 S. 23, 32)
What’s been modernized:
POS abbreviations expanded (n.pr.m. → masculine, n.pr.loc. → locative (place name), n.pr.gent. → gentilic (people group), …)
Bible references canonicalized to Sefaria-format full book names with Roman numerals
Etymology, definition body, Bible refs, and internal BDB cross-references split into separate columns
Greek words in both the definition and the etymology get a Latin transliteration appended in [brackets] using standard scholarly conventions
See my announcement for that at the time: “Jastrow’s Talmud Dictionary: A Modernized and Enhanced Digital Presentation at ChavrutAI“ (Sep 28, 2025).
Compare BDB’s own list of abbreviations at Sefaria; I checked against those: https://www.sefaria.org.il/BDB%2C_Abbrevations.
Stored at ChavrutAI’s Github, here. See the technical appendix at the end of this piece for the full pipeline.
I hope to expand and fine-tune all aspects of the BDB technical pipeline, both in terms of line splitting, and in terms of abbreviation opening and display. (Currently, the line splitting logic is optimized for the Jastrow dictionary reader; thus, there’s much room to optimize it for the BDB reader.) Therefore, it’s still in “beta” on ChavrutAI website.
Note that the index grid shows numbers, indicating how many entries are under that letter. I’ve updated the Jastrow Dictionary on ChavrutAI, to have that same functionality as well.





