Manzil

Manzil info

The Qur’an is traditionally divided into 7 Manzils to allow for its complete recitation in one week. This division is especially useful for those who aim to maintain a weekly recitation habit.

Tags

Download Links

About manzil metadata

Manzil data is exported in both JSON and SQLite formats.

Sample JSON

Here is an example of the JSON structure for the first Manzil:

JSON
{
  "1": {
    "manzil_number": 1,
    "verses_count": 669,
    "first_verse_key": "1:1",
    "last_verse_key": "4:176",
    "verse_mapping": {
      "1": "1-7",
      "2": "1-286",
      "3": "1-200",
      "4": "1-176"
    }
  }
}

Field descriptions

Field Type Description
manzil_number INTEGER The manzil number (1 to 7).
verses_count INTEGER Total number of verses in the manzil.
first_verse_key TEXT The key of the first verse in the manzil (e.g. 1:1).
last_verse_key TEXT The key of the last verse in the hizb (e.g. 4:176).
verse_mapping OBJECT A mapping of surah numbers to ayah ranges within this manzil. For example, "2": "1-286" indicates that all ayahs of Surah Al-Baqarah(1 to 286) are in this manzil.

How to use this resource

Download the JSON or SQLite file from the download links on this page. The JSON file is one object: each key is the manzil_number as a string ("1" to "7"). The SQLite file has the same fields in the manzil table, but verse_mapping is JSON text there. Parse it before you use it.

  • Find the start and end. first_verse_key and last_verse_key (surah:ayah) are the first and last ayah of each manzil. Use them as verse_key values in the other QUL resources.
  • Expand verse_mapping. verse_mapping lists the ayahs of this manzil in each surah. Each key is a surah number, and each value is a string like "1-141", meaning ayahs 1 to 141, both included. Split it on - and convert both numbers to integers.
JavaScript
// Setup: unzip the download and serve quran-metadata-manzil.json from your app (here at /data/)
const items = await fetch('/data/quran-metadata-manzil.json').then((res) => res.json());

// Get the first manzil
const first = items['1']; // { manzil_number: 1, first_verse_key: "1:1", verse_mapping: { ... }, ... }

// Expand verse_mapping into a list of verse keys
const verseKeys = Object.entries(first.verse_mapping).flatMap(([surah, range]) => {
  const [from, to] = range.split('-').map(Number);
  return Array.from({ length: to - from + 1 }, (_, i) => `${surah}:${from + i}`);
});
verseKeys.length === first.verses_count; // true
SQL
-- SQLite: verse_mapping is JSON text. Parse it in your app.
SELECT manzil_number, first_verse_key, last_verse_key, verse_mapping
FROM manzil
ORDER BY manzil_number;

For a longer walkthrough, see Tutorial 7: Quran Metadata End-to-End.