Pre-built and reproducible Quran EPUBs with correct Arabic rendering, in 42 languages.
Download from the EPUB table below or see the latest release.
Best used in KOReader. See KOReader Settings for essential setup.
Extra features with the Quran Helper KOReader plugin: per-instance word dictionary with automatic entry matching, grammar dictionaries with WBW + syntax + i'rab, tafsir lookup (20 tafsirs, 6 languages), surah overviews, juz' and surah name in status bar, and more.
This tool uses validated script/font pairing to avoid the rendering bugs (broken sukun marks, mangled ligatures) common in other Quran EPUBs. Feedback and bug reports welcome — open a Feature Request for desired content or formats.
Each translation is available in up to three formats:
- Bilingual — Arabic and translation shown together, ayah by ayah. Best for studying or reading with a translation side by side.
- Interactive — Arabic text only, tap any ayah (number marker) to see the translation in a footnote popup. Best for reading the Arabic with occasional reference to the translation.
- Word-by-Word — Each Arabic word shown with its meaning directly below, forming visual word stacks. A full sentence translation follows each ayah. 8 languages have native word-level glosses; all translations also have an English-gloss WBW variant (plus Indonesian gloss for Malay). Best for vocabulary study and understanding how Arabic maps to the translation word by word.
There is also an Arabic-only EPUB with no translation — continuous flowing text. It is identical to the interactive version in visual layout.
All released EPUBs use Riwayat Hafs 'an 'Asim, anchored to the Madinah Mushaf (1405 AH / 604 pages). An experimental build for Riwayat Warsh 'an Nafi' is also available — see Other Versions (Work in Progress) for details and known limitations.
These EPUBs use embedded Arabic fonts and EPUB3 features (like footnotes and interactive lookup) that most proprietary e-reader software does not handle well. In those cases, KOReader is highly recommended — open-source, excellent Arabic rendering, runs on Android, Kobo, Kindle, PocketBook, and Linux.
See KOReader Settings for essential setup — footnote popups, RTL page turns, mushaf page numbers, and more.
- Kobo: Native reader struggles with Arabic. Install KOReader — no jailbreak needed.
- Kindle: Stock Kindle does not render Arabic EPUBs correctly. Requires jailbreaking + KOReader.
- Other e-readers: Proprietary readers will likely have rendering errors.
- Apple Books: Mostly works well on iOS and macOS, no changes needed. Some features may not fully work.
- Android e-readers: Most popular e-reader software like Moon+ Reader, Readera, Librera, etc., have various formatting errors and issues with rendering. Use KOReader where possible.
- Windows/Mac/Linux: You can also use the Calibre ebook viewer, which mostly works fine.
NB: Translation text uses your e-reader's built-in serif font. For non-Latin scripts (Urdu, Bengali, Hindi, etc.), make sure your device has fonts for that script installed. KOReader ships with Noto fonts covering most scripts. The Quranic fonts are embedded in the EPUB itself.
Overwrite the old file with the new one, keeping the same filename. KOReader (and most e-readers) store your reading position, highlights, and settings separately — they will be preserved. Do not delete the book from within KOReader before replacing, as this will delete your data. After updating, you can force refresh metadata (cover, etc) by long-pressing the book in KOReader and selecting Refresh cached metadata.
Essential Settings for a good reading experience. Footnote popups, RTL page turns, page numbers, and more
(Click to expand/collapse)
KOReader shows footnotes inline (on the page) by default, which breaks the layout of most EPUBs (Bilingual (annotated/with footnotes) and interactive versions) in this collection. Enable popups instead:
- You must have a book open (be in Reader view). Some settings are per-book unless you long-press to set a new default
- Disable in-page footnotes: Top Menu → Document icon → Style tweaks → In-page Footnotes → uncheck "In-page EPUB footnotes" (long-press and select "Don't use on all books" to disable for all books)
- Enable popup footnotes: Top Menu → Gear icon → Taps and Gestures → Links → check "Show Footnotes in Popup"
- Adjust popup font size: In the same Links menu, in Footnote popup settings, in "Footnote popup font size", lower the relative font size (-8 to -10 recommended) or use an absolute value (e.g. 14). This is because the default pop up font size is relative to 1em, and not to the (shrunken) inline translation in the EPUBs.
- Tip: check "Allow larger area around links" in Links menu for easier footnote tapping
Reclaims the bottom screen space used by the status bar — the bar overlaps the page content instead of shrinking the reading area:
- You must have a book open (be in Reader view)
- Top Menu → Gear icon → Status bar → check Overlap status bar
- You must have a book open (be in Reader view)
- Bottom Menu → Crop icon → Adjust margins to taste
In cobination with Overlap status bar, this let's you fill the screen to the bottom.
Adjust the size of the font for the whole EPUB.
- You must have a book open (be in Reader view)
- Bottom Menu → Letter icon → Adjust font size to taste
Makes justified full page content look denser if you prefer smaller/fewer gaps (Interactive and Arabic-only EPUBs):
- You must have a book open (be in Reader view)
- Bottom Menu → Letter icon → Word Spacing → Try out Small, or press Dot Menu → Change Scaling and Reduction to experiment.
Bilingual and interactive — without this, the endnotes section appears as regular pages at the end of the book and in the status bar:
- You must have a book open (be in Reader view) and the book must be compatibe (it must contain non-linear fragments) to see this setting
- Top Menu → Bookmark icon → Settings → Hide non-linear fragments
- Long-press the setting (after enabling it) to make it default for all books
Shows the traditional 604-page Madinah Mushaf pagination in margins and/or status bar:
- You must have a book open (be in Reader view)
- Top Menu → Bookmark icon → Settings → Stable page numbers
- Check "Use stable page numbers" for the status bar and TOC (KOReader counts the mushaf pages as the "real" pages, not the actual page turns you make on your ereader)
- Check "Show stable page numbers in margin" for showing the mushaf pages in the right margin (at the line of the ayah that begins the mushaf page)
- Default settings for new books → Pick the same settings as you picked above for Use stable page number and Show stable page numbers to make this the default
You can use one, both, or neither of these settings, depending on what you prefer
KOReader does not auto-detect RTL page direction from the EPUB. Without this, swiping goes the wrong way:
- You must have a book open (be in Reader view). Setting is per-book unless you long-press to set a new default
- Top Menu → Gear icon → Taps and Gestures → Page Turns → check Invert page turn taps and swipes
- Physical buttons: Top Menu → Gear icon → Navigation → Physical Buttons → check Invert page turn buttons (this is useful if you read with the buttons on the bottom so they are left-right in orientation, i.e. landscape on devices with side buttons or portrait on devices with bottom buttons)
The EPUBs in this collection enforce steady line heights (1.7×) for consistent Arabic diacritic spacing regardless of diacritical complexity.
To adjust:
- You must have a book open (be in Reader view). Setting is per-book unless you long-press to set a new default
- Top Menu → Document icon → Style tweaks → Text → Line heights → check "Ignore publisher line heights" to revert to the font's natural line height
- Combine 2 with a Override font-based normal line-height to set your own value
"Enforce steady line heights" toggle has no additional effect since the EPUB already enforces this.
KOReader does not add wight by default. If you feel the Arabic looks thin (not small, but lacking weight):
- You must have a book open (be in Reader view). Setting is per-book unless you long-press to set a new default
- Bottom Menu → Contrast icon → Font weight → try +1/2 or more
| Riwayah | ||
|---|---|---|
| Hafs | epub | Continuous flowing text, no translation |
| Warsh (experimental) | epub | Arabic-only, Riwayat Warsh 'an Nafi' — see known limitations |
| Translator | Bilingual | Interactive | WBW |
|---|---|---|---|
| Sahih International | epub | epub | epub |
| M.A.S. Abdel Haleem | epub | epub | epub |
| Sayyid Abul Ala Maududi (Tafhim ul-Quran) | epub | epub | epub |
| Dr. Mustafa Khattab / The Clear Quran | epub | epub | epub |
| Dr. Mustafa Khattab / The Clear Quran (annotated) | epub | epub | epub |
Français, Deutsch, Español, Türkçe, اردو — Urdu, Bahasa Indonesia, Русский, বাংলা — Bengali
| Language | Translator | Bilingual | Interactive | WBW |
|---|---|---|---|---|
| Français | Hamidullah | epub | epub | epuben wbw |
| Deutsch | Bubenheim & Elyas | epub | epub | epuben wbw |
| Español | Isa Garcia | epub | epub | epuben wbw |
| Türkçe | Diyanet İşleri | epub | epub | epub epuben wbw |
| اردو — Urdu | Jalandhari | epub | epub | epub epuben wbw |
| اردو — Urdu | Sayyid Abul Ala Maududi (Tafheem-ul-Quran) | epub | epub | epub epuben wbw |
| Bahasa Indonesia | Kementerian Agama | epub | epub | epub epuben wbw |
| Русский | Kuliev | epub | epub | epuben wbw |
| বাংলা — Bengali | Taisirul Quran | epub | epub | epub epuben wbw |
فارسی — Persian, Bahasa Melayu, Português, Italiano, Nederlands, Norsk, Svenska, Bosanski, Soomaali, Hausa, Fulfulde, Kiswahili
| Language | Translator | Bilingual | Interactive | WBW |
|---|---|---|---|---|
| فارسی — Persian | Hussein Taji Kal Dari | epub | epub | epub epuben wbw |
| Bahasa Melayu | Abdullah Muhammad Basmeih | epub | epub | epuben wbw epubid wbw |
| Português | Helmi Nasr | epub | epub | epuben wbw |
| Italiano | Hamza Roberto Piccardo | epub | epub | epuben wbw |
| Nederlands | Sofian S. Siregar | epub | epub | epuben wbw |
| Norsk | Einar Berg | epub | epub | epuben wbw |
| Svenska | Knut Bernström | epub | epub | epuben wbw |
| Bosanski | Besim Korkut | epub | epub | epuben wbw |
| Soomaali | Mahmud Muhammad Abduh | epub | epub | epuben wbw |
| Hausa | Abubakar Mahmoud Gumi | epub | epub | epuben wbw |
| Fulfulde — Fula | Rowad Translation Center | epub | epub | epuben wbw |
| Kiswahili | Ali Muhsin Al-Barwani | epub | epub | epuben wbw |
हिन्दी — Hindi, தமிழ் — Tamil, മലയാളം — Malayalam, پښتو — Pashto, کوردی — Kurdish, ئۇيغۇرچە — Uyghur, 中文, 한국어, 日本語, ไทย, Tiếng Việt, Filipino
| Language | Translator | Bilingual | Interactive | WBW |
|---|---|---|---|---|
| हिन्दी — Hindi | Maulana Azizul Haque al-Umari | epub | epub | epub epuben wbw |
| தமிழ் — Tamil | Abdul Hameed Baqavi | epub | epub | epub epuben wbw |
| മലയാളം — Malayalam | Abdul Hameed & Kunhi Mohammed | epub | epub | epuben wbw |
| پښتو — Pashto | Zakaria Abulsalam | epub | epub | epuben wbw |
| کوردی — Kurdish | Muhammad Saleh Bamoki | epub | epub | epuben wbw |
| ئۇيغۇرچە — Uyghur | Muhammad Saleh | epub | epub | epuben wbw |
| 中文 — Chinese | Ma Jian | epub | epub | epuben wbw |
| 한국어 — Korean | Hamed Choi | epub | epub | epuben wbw |
| 日本語 — Japanese | Saeed Sato | epub | epub | epuben wbw |
| ไทย — Thai | King Fahad Quran Complex | epub | epub | epuben wbw |
| Tiếng Việt | Ruwwad Center | epub | epub | epuben wbw |
| Filipino | Dar Al-Salam Center | epub | epub | epuben wbw |
Azərbaycanca, Oʻzbekcha, Тоҷикӣ — Tajik, Қазақша — Kazakh, Shqip — Albanian, Polski, Українська — Ukrainian, አማርኛ — Amharic, Yorùbá
| Language | Translator | Bilingual | Interactive | WBW |
|---|---|---|---|---|
| Azərbaycanca | Alikhan Musayev | epub | epub | epuben wbw |
| Oʻzbekcha | Muhammad Sodiq Muhammad Yusuf | epub | epub | epuben wbw |
| Тоҷикӣ — Tajik | Khawaja Mirof & Khawaja Mir | epub | epub | epuben wbw |
| Қазақша — Kazakh | Khalifa Altay | epub | epub | epuben wbw |
| Shqip — Albanian | Sherif Ahmeti | epub | epub | epuben wbw |
| Polski | Józef Bielawski | epub | epub | epuben wbw |
| Українська — Ukrainian | Dr. Mikhailo Yaqubovic | epub | epub | epuben wbw |
| አማርኛ — Amharic | Sadiq and Sani | epub | epub | epuben wbw |
| Yorùbá | Shaykh Abu Rahimah Mikael Aykyuni | epub | epub | epuben wbw |
Word-by-Word download links: epub = native-language word gloss, epuben wbw = English word gloss, epubid wbw = Indonesian word gloss. Cross-language WBW pairs English (or Indonesian) word-level meanings with a full sentence translation in the target language — useful for readers who understand basic English vocabulary but prefer reading a translation in their own language.
Many translations include translator footnotes where the source data provides them (Sahih International, Hamidullah, Garcia, Hamza Roberto Piccardo, Nasr, and others). Editions marked "with commentary" or "annotated" have especially extensive notes — Tafhim ul-Quran includes Sayyid Abul Ala Maududi's full tafseer-style commentary, and the annotated Clear Quran has 1,270 scholarly footnotes. See KOReader Settings for footnote popup setup.
Note on Maududi footnotes: A small number (~9%) of Tafhim ul-Quran footnotes are truncated in the upstream source data (ending mid-sentence). This is a known issue in the digitized text that all online sources share — not specific to this project.
The Quran Helper plugin enhances the reading experience with automatic word dictionary matching, grammar and tafsir lookup, surah overviews, and juz' status bar info.
Download quran_koplugin_v1.8.zip (18 KB), unzip quran.koplugin/ into KOReader's plugins/ folder:
| Platform | Path |
|---|---|
| Android | /sdcard/koreader/plugins/ |
| Kobo | /mnt/onboard/.adds/koreader/plugins/ |
| Kindle | /mnt/us/koreader/plugins/ |
| Desktop | ~/.config/koreader/plugins/ |
For the plugin to be installed correctly, the file structure should look like this (no nested folder, and foldername must be quran.koplugin exactly; remove "-main" or similar if you downloaded the zip from head):
koreader
└── plugins
└── quran.koplugin
├── _meta.lua
├── main.lua
└── ...
Restart KOReader. Go to Top Menu → Tool icon → Quran Helper to configure.
Shows the current juz in KOReader's footer status bar while reading.
- Six juz display formats:
جزء ٣(default),Juz 3, Arabic name (تلك الرسل), Arabic name with جزء (جزء تلك الرسل), Latin name (Tilkar-Rusul), Latin name with Juz' (Juz' Tilkar-Rusul) - Optional surah name appended (off by default), e.g.
جزء ٣ — البقرةorJuz 3 — Al-Baqarah, with five format options including سورة/Surat prefix variants - Boundary indicator (
*) when a new juz begins on the current page (e.g.,جزء ٣*)
Enable juz' title in status bar — the juz display is on by default in the plugin, but KOReader needs "External content" enabled in the status bar to show it:
- You must have a book open (be in Reader view)
- Top Menu → Gear icon → Status bar → Status bar items → check External content. After this you can change the plugin settings on-the-fly.
You can also sort the status bar items in this menu.
Plugin settings — configure juz format, surah name display, and other options:
- You should have a book open (be in Reader view) and status bar visible to see the results immediately for testing
- Top Menu → Tool icon → Quran Helper
- Adjust settings as needed
Per-instance English word-by-word StarDict dictionary for KOReader. Long-press any Quranic word while reading to see:
- Translation — English word meaning for that specific occurrence
- Transliteration — Latin script pronunciation
- Morphology — part of speech (Arabic + English), grammatical case/mood, gender/number/person, verb form and pattern (wazn) — specific to this occurrence
- Lemma and root — dictionary form and Arabic root letters
- Root definition — Lane's Lexicon summary for the root
- Occurrence counts — how many times this lemma and this exact form appear in the Quran
~33,000 unique entries covering every word instance in the Quran (77,426 instances, combined where the content is identical). Headwords use QPC Uthmani Hafs encoding — the same script as the EPUBs above. Other Quran text encodings will not match.
With the plugin installed: the plugin detects which ayah you are reading and automatically filters the dictionary results to show only the entry matching that position — one result with the correct translation and morphology for that exact word occurrence.
Without the plugin: KOReader shows all entries for the word form. Each unique translation/morphology combination is a separate entry that you scroll through (e.g. 1/5). Functional but less convenient for common words.
Install: Download quran_qpc_en_stardict_v1.3.zip (2.1 MB), unzip into KOReader's data/dict/ folder (creates a quran_qpc_en/ subfolder). Subfolder names and nesting does not matter as long as the files are in the dict folder. Restart KOReader.
| Platform | Path |
|---|---|
| Android | /sdcard/koreader/data/dict/ |
| Kobo | /mnt/onboard/.adds/koreader/data/dict/ |
| Kindle | /mnt/us/koreader/data/dict/ |
| Desktop | ~/.config/koreader/data/dict/ |
koreader
└── data
└── dict
└── quran_qpc_en
├── quran_qpc_en.dict
├── quran_qpc_en.idx
└── quran_qpc_en.ifo
You can sort your dictionaries in Top menu → Magnifying glass icon → Settings → Dictionary settings. Here you can also set book-specific preferences for the open book.
Build your own: python tools/build_dictionary.py --instance (requires cached data from Quran.com API, EQTB morphology, and Lane's Lexicon — see script for details).
Known upstream data issues:
- Transliteration from Quran.com API omits hamza (شَآءَ →
shāainstead ofshā'a) and sometimes drops shaddah doubling (ٱلۡحَقُّ →l-ḥaquinstead ofl-ḥaqqu) - Root definitions from Lane's Lexicon are per-root, not per-lemma — a verb and its derived noun share the same root gloss (e.g. شَآءَ "to will" shows the root شيأ gloss for "thing")
- Lemma data from EQTB (Extended Quranic Treebank) has known errors: some verb lemmas show the conjugated surface form instead of the dictionary headword, and some plural noun lemmas are incorrect. This is being investigated — an alternative lemma source will replace the EQTB lemmas in a future update. If you notice an incorrect lemma, please report it.
- QPC repurposes three Unicode codepoints for tanween variants (U+0657 for open fathatan, U+065E for open dammatan, U+0656 for kasratan) with custom glyphs in the QPC font. KOReader's dictionary popup uses a standard Arabic font, which renders these as their literal Unicode glyphs (inverted damma, fatha-with-dots, subscript alef). The dictionary builder normalizes headwords to standard tanween (U+064B, U+064C, U+064D) for correct rendering, and includes the original QPC forms as synonym keys for backward compatibility. With the KOReader plugin installed, lookups are normalized automatically for exact matching. Without the plugin, the QPC synonym keys provide exact matching with the original (cosmetically incorrect) rendering
Long-press any ayah number marker while reading to see per-ayah grammatical analysis. Requires the plugin.
- Word-by-word translation — English gloss for each word in the ayah (from Quran.com word-by-word data)
- Morphology — 35 POS types, case/mood, gender/number/person, verb form and wazn, passive voice, indefinite state (from EQTB)
- Syntax roles — subject, predicate, complement, conjunction, etc. with target word shown (e.g. "predicate (خبر) of ٱللَّهُ") — from the EQTB dependency treebank (full Quran coverage)
- I'rab — traditional Arabic grammatical analysis prose (إعراب), ~93% coverage (from QAC)
6,236 entries covering every ayah in the Quran. The plugin detects the current surah from the table of contents and handles the lookup automatically — just long-press the ayah number. The grammar dictionaries use special keys (e.g. "Al-Baqarah 255") that are not searchable without the plugin — the plugin is required.
Install: Pick one or more grammar dictionary variants and unzip into KOReader's data/dict/ folder (same location as the word dictionary):
| Platform | Path |
|---|---|
| Android | /sdcard/koreader/data/dict/ |
| Kobo | /mnt/onboard/.adds/koreader/data/dict/ |
| Kindle | /mnt/us/koreader/data/dict/ |
| Desktop | ~/.config/koreader/data/dict/ |
koreader
└── data
└── dict
└── quran_grammar_combined
├── quran_grammar_combined.dict
├── quran_grammar_combined.idx
└── quran_grammar_combined.ifo
| Variant | Language | Contents | Size |
|---|---|---|---|
| Combined v1.4 | EN + AR | WBW + morphology + syntax + i'rab | 4.9 MB |
| Grammar (Lite) v1.4 | EN | WBW + morphology + syntax (no i'rab) | 2.2 MB |
| I'rab only v1.4 | AR | Traditional Arabic grammatical analysis only | 2.2 MB |
Build your own: python tools/build_grammar_dictionary.py --variant all (requires cached data — see script for details).
Known upstream data issues:
- Word-by-word translations from Quran.com API use phrase-level rather than word-level glosses in ~50 chapters (mostly chapters 4+). E.g. three words may all show "O you who believe" instead of individual glosses. Chapters 1–3 have clean word-level data. This is the upstream API data, not a processing error.
- I'rab data covers ~93% of ayahs (5,790 of 6,236). The remaining ~446 ayahs have no i'rab analysis in the QAC source data.
- Lemma data from EQTB has known errors for some verb and noun forms (same issue as the word dictionary — shared data source). Being investigated. If you notice an incorrect lemma, please report it.
Long-press a surah name header (the decorative calligraphic name at the start of each surah) to see an introduction and overview of that surah. Navigate between surahs with the prev/next buttons or volume keys. Requires the plugin.
Install: Pick one or more languages and unzip into KOReader's data/dict/ folder. You can install multiple languages — all will show in the popup.
| Platform | Path |
|---|---|
| Android | /sdcard/koreader/data/dict/ |
| Kobo | /mnt/onboard/.adds/koreader/data/dict/ |
| Kindle | /mnt/us/koreader/data/dict/ |
| Desktop | ~/.config/koreader/data/dict/ |
koreader
└── data
└── dict
└── quran_surah_overview_en
├── quran_surah_overview_en.dict
├── quran_surah_overview_en.idx
└── quran_surah_overview_en.ifo
| Language | Download | Entries | Size |
|---|---|---|---|
| English | Surah Overview v1.1 | 114 | 298 KB |
| Urdu | Surah Overview v1.1 | 114 | 380 KB |
| Indonesian | Surah Overview v1.1 | 114 | 65 KB |
| Malayalam | Surah Overview v1.1 | 114 | 429 KB |
| Tamil | Surah Overview v1.1 | 114 | 27 KB |
| Italian | Surah Overview v1.1 | 112 | 34 KB |
Source: Quran.com API v4 surah info endpoint.
Build your own: python tools/build_surah_overview.py --all (or --language en for a single language).
Long-press any ayah number marker to see tafsir commentary for that ayah (in addition to grammar data, if installed). Each tafsir is a separate dictionary — install whichever ones you want. Navigate between ayahs with prev/next buttons or volume keys. Requires the plugin.
Some tafsirs group multiple ayahs under one commentary entry (e.g. Ibn Kathir). The popup title shows the ayah range, and all ayahs in the group are reachable. Like the grammar dictionaries, the tafsir dictionaries use special keys that require the plugin.
Install: Pick one or more tafsirs and unzip into KOReader's data/dict/ folder (same location as the word dictionary). You can install multiple tafsirs — all will show in the popup.
| Platform | Path |
|---|---|
| Android | /sdcard/koreader/data/dict/ |
| Kobo | /mnt/onboard/.adds/koreader/data/dict/ |
| Kindle | /mnt/us/koreader/data/dict/ |
| Desktop | ~/.config/koreader/data/dict/ |
koreader
└── data
└── dict
└── quran_tafsir_muyassar
├── quran_tafsir_muyassar.dict
├── quran_tafsir_muyassar.idx
└── quran_tafsir_muyassar.ifo
Arabic tafsirs (7)
| Tafsir | Download | Size |
|---|---|---|
| Tafsir al-Muyassar (المیسر) | v1.1 | 650 KB |
| Tafsir al-Sa'di (السعدي) | v1.1 | 1.7 MB |
| Tafsir al-Baghawi (البغوي) | v1.1 | 2.1 MB |
| Tafsir Ibn Kathir (ابن كثير) | v1.1 | 3.7 MB |
| al-Tafsir al-Wasit (Tantawi) | v1.1 | 4.6 MB |
| Tafsir al-Qurtubi (القرطبي) | v1.1 | 5.1 MB |
| Tafsir al-Tabari (الطبري) | v1.1 | 8.2 MB |
English tafsirs (3)
| Tafsir | Download | Size |
|---|---|---|
| Tazkirul Quran (Wahiduddin Khan) | v1.1 | 881 KB |
| Tafsir Ibn Kathir (Abridged) | v1.1 | 4.9 MB |
| Ma'ariful Qur'an (Mufti Shafi) | v1.1 | 4.4 MB |
Urdu tafsirs (4)
| Tafsir | Download | Size |
|---|---|---|
| Tazkir ul Quran (Wahiduddin Khan) | v1.1 | 1.1 MB |
| Bayan ul Quran (Israr Ahmad) | v1.1 | 2.2 MB |
| Tafsir Ibn Kathir (ابن کثیر) | v1.1 | 6.5 MB |
| Fi Zilal al-Quran (Qutb) | v1.1 | 7.4 MB |
Bengali tafsirs (4)
| Tafsir | Download | Size |
|---|---|---|
| Tafsir Ahsanul Bayaan | v1.1 | 1.9 MB |
| Tafsir Abu Bakr Zakaria | v1.1 | 2.6 MB |
| Tafsir Fathul Majid | v1.1 | 3.5 MB |
| Tafsir Ibn Kathir (ইবনে কাসীর) | v1.1 | 9.5 MB |
Russian (1) · Kurdish (1)
| Tafsir | Language | Download | Size |
|---|---|---|---|
| Tafsir al-Sa'di | Russian | v1.1 | 2.2 MB |
| Rebar Kurdish Tafsir | Kurdish | v1.1 | 1.4 MB |
Source: Quran.com API v4 tafsir endpoints. 20 tafsirs across 6 languages.
Build your own: python tools/build_tafseer_dictionary.py --all (or --tafsir muyassar for a single tafsir). Use --list to see all available tafsirs.
pip install -e ".[dev]"
quran-ebook build configs/bilingual/en_sahih.yamlEach YAML file in configs/ defines one EPUB variant. Configs are organized by type: arabic/, bilingual/, interactive/. Build everything with quran-ebook build --all configs/.
PRs or FRs are welcome.
- Arabic text: Quran.com API v4 — QPC Uthmani Hafs encoding (Riwayat Hafs 'an 'Asim), Madinah Mushaf V1 (1405 AH) page mapping
- Translations: Quran.com API v4 + fawazahmed0/quran-api — 42 languages, 46 translators (see configs/ for full list)
- Surah names: Quran.com API v4 for most languages; QuranEnc for languages not on the API (e.g. Fulfulde)
- Surah overviews: Quran.com API v4 —
/chapters/{id}/infoendpoint, available in English, Urdu, Indonesian, Malayalam, Tamil, Italian - Tafsir: Quran.com API v4 —
/tafsirs/{id}/by_chapter/{ch}endpoint, 20 tafsirs across 6 languages (Arabic, English, Urdu, Bengali, Russian, Kurdish) - Morphology & syntax (grammar + word dictionaries): EQTB (Extended Quranic Treebank) — POS, case, mood, gender, number, person, verb form, dependency relations with head pointers (CC BY 4.0)
- I'rab: Quranic Arabic Corpus — traditional Arabic grammatical analysis prose (GPL)
- Root definitions: Lane's Lexicon — root meanings (public domain)
- Primary font (Hafs): KFGQPC Uthmanic Script Hafs — King Fahd Complex, via Tarteel CDN
- Primary font (Warsh): KFGQPC Warsh Uthmanic Script v0.10 — King Fahd Complex, via thetruetruth/quran-data-kfgqpc
- Symbol font: Scheherazade New (SIL International) — rub al-hizb markers, surah header numerals, TOC labels, and in-book cover text
- Basmala font: Quran Common (QUL / King Fahd Complex) — ornamental bismillah ligature (U+FDFD)
- Header font: Surah Name V4 (QUL / King Fahd Complex) — calligraphic surah name glyphs
An experimental Arabic-only EPUB for Riwayat Warsh 'an Nafi' is included in the release. See the Arabic EPUB table for the download link.
Data source: KFGQPC (King Fahd Glorious Quran Printing Complex) via thetruetruth/quran-data-kfgqpc. This is the only freely available digital Warsh package with matched text and font. The same data is used by most open-source multi-qiraat projects.
Font: KFGQPC Warsh Uthmanic Script v0.10 (2018, Ashfaq Ahmad Niazi). The text encoding is inseparable from its font — Warsh text rendered with a Hafs font produces broken diacritics, and vice versa. The font uses Maghribi orthographic conventions: dot under fa (ف), compact comma-style damma, hamzat al-wasl markers (U+06EC), and the distinctive North African kaf.
What this edition is: The Quranic text follows Warsh 'an Nafi' with Madani ayah numbering (6,214 ayahs across 114 surahs, vs 6,236 in Hafs). The basmala is unnumbered and absent from Al-Fatiha's ayah count. 50 surahs have different ayah counts compared to Hafs. All 30 juz boundaries are present and correct for the Warsh tradition (12 of 30 differ from Hafs). Orthographic conventions such as sun-letter assimilation marking (shadda placement) follow the Medina Warsh printing tradition.
Page numbers: The KFGQPC data uses a 604-page digital layout that mirrors the Hafs Madinah Mushaf grid structure. These are not physical Warsh mushaf page numbers — the printed Warsh Madinah Mushaf has ~576 pages. All 114 surah start pages are identical between the KFGQPC Warsh and Hafs datasets. Page references in the EPUB footer are KFGQPC virtual pages, not references to any specific printed Warsh mushaf.
What works:
| Feature | Status |
|---|---|
| Arabic text rendering | Correct (matched KFGQPC font + text) |
| Ayah numbering | Correct Warsh/Madani tradition (6,214 ayahs) |
| Ayah markers (ornate) | Correct (KFGQPC font renders Arabic-Indic digits as markers) |
| Juz boundaries & TOC | Correct for Warsh (from KFGQPC data) |
| Hizb/rub markers | Present (from KFGQPC data) |
| Basmala | QPC-encoded text with correct Warsh diacritics (extracted from S27:30) |
| Surah headers | Plain Arabic text in Warsh font (no calligraphic glyph, no side columns) |
| Page numbers in footer | Functional but virtual (see above) |
Known limitations:
- No calligraphic surah headers or ornamental basmala. The Hafs decorative fonts (surah-name-v4, quran-common) use Mashriqi orthographic marks (different sukun, hamza shapes) that do not match Warsh/Maghribi conventions. No Warsh-specific decorative fonts exist in the digital Quran font ecosystem. The EPUB falls back to plain Arabic text in the Warsh font for both.
- Single waqf marker type. The KFGQPC Warsh data uses only U+06D6 (صلى) for pause marking, consistent with the simplified waqf system used in many Medina Warsh mushafs. The multi-symbol waqf system (قلى, مـ, لا, ج, three dots) common in Hafs mushafs is not present in this data source.
- KOReader plugin: The Quran navigation plugin hardcodes Hafs ayah counts and juz boundaries. Surah-level navigation works (reads the EPUB TOC), but ayah-level prev/next navigation will be incorrect. The juz status bar reads the EPUB TOC and should display correctly.
- Dictionaries: The WBW, grammar, and tafsir dictionaries are keyed to Hafs ayah numbers (6,236 ayahs). Since Warsh has different ayah boundaries in 50 surahs, dictionary lookups will be misaligned for those surahs for now. The surah overview dictionary is also differently keyed.
- Bilingual / interactive / WBW layouts are not yet available for Warsh (Arabic-only for now).
Experimental support for tajweed color-coded Quran text using the Quran Foundation's per-page glyph fonts (QCF V4). Each word is rendered as a single pre-composed glyph with tajweed colors baked into the font via OpenType COLR/CPAL tables. This avoids the Arabic shaping breakage that CSS color spans cause in CREngine.
The EPUB build pipeline is functional — Arabic-only, bilingual, and interactive layouts all build and pass epubcheck. Spacing and sizing tuning is in progress.
Requires patched KOReader: QCF V4 tajweed colors need COLR v0 color font support in CREngine. A patch has been submitted as koreader/crengine#654. Until merged, tajweed colors only render in a locally patched KOReader build. A plain (non-color) QCF V1 variant works on stock KOReader.
Built on the work of many contributors to the Quranic digital ecosystem:
- rockneverdies55/quran-epub — demonstrated the demand for open-source Quran ebooks
- bilalsaci/compare-quran-scripts-and-fonts — identified correct script/font pairings and diagnosed rendering bugs
- mohd-akram/mushaf — clean EPUB3 structure reference
- mostafa-khaled775/quran-epub-builder — multi-qiraat approach reference
Fonts: KFGQPC Uthmanic Script (Hafs + Warsh), Quran Common, and Surah Name V4 (King Fahd Complex via QUL), Scheherazade New (SIL International, OFL 1.1).
GPL-3.0
Quran text and translation data sourced from Quran.com API. Font licenses: Scheherazade New (SIL OFL 1.1), KFGQPC Uthmanic Script / Quran Common / Surah Name V4 (King Fahd Complex — use, copy, and distribute permitted; modification not permitted).


















