About Holy Writings
Holy Writings aims to make the sacred texts of the Bahá’í Faith accessible in as many languages as possible, in a single place, with reliable cross-referencing.
The project is maintained by Joop Kiefte and is not an official Bahá’í publication. It is a personal project born from a love for the Writings and a desire to serve the worldwide Bahá’í community.
What this site does
There are wonderful Bahá’í prayer and scripture resources online, but they tend to be separate: one site has prayers in 500+ languages, another has a comprehensive catalog, another the authoritative texts. Holy Writings brings them together:
- Prayers in 520+ languages, drawn from bahaiprayers.net, bahaiprayers.app, and other sources.
- Writings — the Hidden Words, Kitáb-i-Aqdas, Kitáb-i-Íqán, Gleanings, Prayers & Meditations, Some Answered Questions, Tablets of Bahá’u’lláh, Tablets of the Divine Plan, Days of Remembrance, and Ridván Messages in multiple languages.
- Bible (KJV with marginal notes, Hebrew OT, Greek & Syriac NT, Van Dyck Arabic, plus 26 Bolls.life translations) and Qur’an in 13 translations.
- Cross-referencing via the Phelps Index — a catalog of 29,000+ Bahá’í Holy Writings, each identified by a unique code.
- Tools — daily devotions (random readings, obligatory prayer, 95 Allah-u-Abhá counter with audio/vibration feedback, Qiblih compass), a devotional program builder with side-by-side language comparison, Arabic/Persian transliteration reading aid, and downloadable PDFs.
- 22 interface languages — English, German, Spanish, French, Portuguese, Dutch, Polish, Italian, Russian, Arabic, Persian, Japanese, Chinese (Simplified & Traditional), Esperanto, Romanian, Swedish, Hungarian, Korean, Turkish, Finnish, and Greek.
How it works
The core challenge is connecting prayers across sources and languages. A prayer on bahaiprayers.net might appear under a different title or category than the same prayer on bahaiprayers.app. Connecting them requires identifying which specific prayer each entry is.
I use the Phelps Index Number (PIN) system as the common key. Each prayer or text has a unique code (e.g. BH00074BLE for “Blessed is the spot”). Matching each source entry to its PIN involves:
- Cross-language matching — if a prayer is already identified in one language, the same prayer in another language can often be found through the source site’s internal cross-references.
- Text comparison — comparing opening lines and content against the Phelps inventory’s catalog of first lines.
- Using LLM assistance to translate excerpts from less-common languages into English for matching when automated methods fall short.
- Fingerprint vectors — 31-dimensional structural and semantic vectors for language-agnostic similarity matching.
- Manual review for ambiguous or high-stakes matches.
The database is hosted on DoltHub (a version-controlled SQL database) and the site source is on GitHub. The site rebuilds automatically via Cloudflare Pages, pulling fresh data from DoltHub on each deploy.
Arabic/Persian transliteration
The بb button in the header toggles a Latin-script reading aid for Arabic and Persian text. It uses Bahá’í-style transliteration (acute accents: á í ú) and works on any page.
For vocalized text (with tashkeel/harakat), the transliteration reads the vowel marks directly. For unvocalized text (most Arabic and Persian online), it predicts vowels using three layers:
- Known words — ~80 hand-curated Bahá’í terms (Alláh, Bahá’u’lláh, Kitáb, etc.) with exact transliteration.
- Vowel dictionary — 2,000 words mined from vocalized texts in the database.
- Bigram statistics — consonant-pair vowel probabilities (822 Arabic, 587 Persian) for words not in the dictionary. Persian-specific letters (پ چ ژ گ) automatically select the Persian table.
Predicted (uncertain) vowels are shown at reduced opacity so you can distinguish them from confirmed vowels. Sun letter assimilation (al- → ar-/ash-/etc.), liaison rules (bismi’lláh), and sentence capitalization are applied automatically.
The transliteration also appears as Arabic (Latin) and Persian (Latin) in the language pickers, including the comparison tool and devotional program — so you can view transliterated text alongside the original or other translations.
Language comparison tool
The devotional program includes a side-by-side comparison mode. Click Compare and add languages from the picker to see texts in multiple languages aligned in columns.
- Any number of language columns, including transliteration.
- Each column is independently scrollable with RTL support.
- The comparison is included in shared links and QR codes (controlled by the “Include language” checkbox).
- Works in full-screen mode and prints cleanly.
You can also select verse ranges from the Bible, Qur’an, and Writings pages using the checkboxes, then add them to a devotional program.
Devotional suggestions
The devotional program builder suggests prayers based on the Bahá’í calendar and common devotional themes.
Each Bahá’í month has a spiritual quality (e.g. Núr = Light, Raḥmat = Mercy). I’ve mapped these to prayer categories that seem to reflect that quality — for example, the month of Núr suggests prayers from “Enlightenment”, “Guidance”, and “Teaching”. Similarly, holy days suggest prayers specific to that occasion.
These associations are my own editorial choices, not authoritative assignments. They’re a starting point for inspiration, not a prescription. If you have thoughts on better associations, I’d love to hear them.
Full month–theme table
| Month | Meaning | Suggested categories |
|---|---|---|
| Bahá | Splendour | Praise & Gratitude, Spiritual Growth, Nearness to God |
| Jalál | Glory | Praise & Gratitude, Steadfastness, Trust in God |
| Jamál | Beauty | Praise & Gratitude, Spiritual Growth, Nearness to God |
| ‘Aẓamat | Grandeur | Praise & Gratitude, Firmness in the Covenant, Triumph of the Cause |
| Núr | Light | Enlightenment, Guidance, Teaching |
| Raḥmat | Mercy | Forgiveness, Healing, Humanity |
| Kalimát | Words | Teaching, Guidance, Firmness in the Covenant |
| Kamál | Perfection | Spiritual Growth, Detachment, Steadfastness |
| Asmá’ | Names | Praise & Gratitude, Nearness to God, Trust in God |
| ‘Izzat | Might | Aid & Assistance, Protection, Steadfastness |
| Mashíyyat | Will | Tests & Difficulties, Trust in God, Detachment |
| ‘Ilm | Knowledge | Enlightenment, Guidance, Children |
| Qudrat | Power | Aid & Assistance, Triumph of the Cause, Steadfastness |
| Qawl | Speech | Teaching, Gatherings, Unity |
| Masá’il | Questions | Guidance, Spiritual Growth, Enlightenment |
| Sharaf | Honour | Service, Humanity, Justice |
| Sulṭán | Sovereignty | Firmness in the Covenant, Triumph of the Cause, Tablets of Visitation |
| Mulk | Dominion | Praise & Gratitude, Spiritual Assembly, Unity |
| ‘Alá’ | Loftiness | The Fast, Nearness to God, Detachment |
Data quality
This is a work in progress. The matching process is imperfect, and I’m continuously improving it. Here’s an honest picture of where things stand:
What’s solid
- Every prayer entry has an identifier — no untagged entries.
- Cross-language matching for major languages is well-tested.
- 400+ prayer excerpts have proper mnemonic sub-codes for disambiguation.
- Known false positives are blacklisted to prevent recurrence.
- All 24 Kitáb-i-Íqán translations aligned to 287 paragraphs.
What needs work
- ~500 unidentified prayers (TMP codes) remain. Some are regional texts not in the Phelps inventory, some are composite entries, some I simply haven’t been able to identify yet.
- Most matching was done with LLM assistance — initial bulk matching of 10,000+ prayers across 500+ languages was done through extensive Gemini sessions, followed by ongoing cleanup with Claude. The LLM helps translate excerpts, identify prayers by context, and flag suspicious matches. The results are then verified and corrected manually, but some errors inevitably remain — especially for short prayers or prayers with similar openings in less-common languages.
- Categories come from the source sites and occasionally have errors.
- Transliteration uses heuristics and statistical prediction — predicted vowels are marked but may be wrong, especially for unvocalized Arabic text where multiple readings are possible.
How I’m checking
- Using LLM assistance to run length-ratio scans across languages — if the “same” prayer is 5x longer in one language, something is probably miscoded.
- Systematic category audits across the top languages.
- Splitting same-tablet prayers that were incorrectly sharing one code.
- Fingerprint-vector similarity matching for cross-language verification.
- And of course: reading reports from people who actually use these prayers and notice when something is off.
How you can help
The most valuable contributions come from people who know these prayers. If you spot something wrong, please tell me — even a short email helps.
- Compare prayers on the Search page — pick English and a language you speak, then look through the results. If a prayer’s first line in your language doesn’t match the English one next to it, that entry is probably miscoded. Reporting even one such discrepancy is enormously helpful. Pro tip: filter for your language and add it as the Compare column — that way nothing sits in between.
- Wrong or missing prayers — if a prayer shows up under the wrong code, in the wrong category, or is missing from a language you know.
- Unidentified prayers — browse the TMP entries and let me know if you recognize any.
- Interface translations — the UI supports 22 languages; more are welcome.
- Transliteration corrections — if you notice incorrect readings in the Arabic/Persian transliteration, especially for common words.
- Suggestion improvements — ideas for better month–theme associations or additional themes for the devotional builder.
- Code contributions — the source code and database are both open.