Ruku

Ruku info

Ruku is a thematic section of verses in the Qur’an, often used to mark logical pause points during recitation. There are about 540 Rukus in total. In congregational prayer (Qiyam), it’s common to recite one Ruku per Rakaah for natural flow and coherence.

Tags

Download Links

About ruku metadata

Ruku data is exported in both JSON and SQLite formats.

Sample JSON

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

JSON
{
  "1": {
    "ruku_number": 1,
    "surah_ruku_number": 1,
    "verses_count": 7,
    "first_verse_key": "1:1",
    "last_verse_key": "1:7",
    "verse_mapping": {
      "1": "1-7"
    }
  }
}

Field descriptions

Field Type Description
ruku_number INTEGER Ruku number in the Quran.
surah_ruku_number INTEGER Surah ruku number.
verses_count INTEGER Total number of verses in the Ruku.
first_verse_key TEXT The key of the first verse in the Ruku (e.g. 1:1).
last_verse_key TEXT The key of the last verse in the Ruku (e.g. 2:141).
verse_mapping OBJECT A mapping of surah numbers to ayah ranges within this Ruku. For example, "1": "1-7" means this Ruku cover ayah from 1 to 7 of 1st Surah.

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 ruku_number as a string ("1" to "558"). The SQLite file has the same fields in the ruku 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 ruku. Use them as verse_key values in the other QUL resources.
  • Expand verse_mapping. verse_mapping lists the ayahs of this ruku 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.
  • Find the position in the surah. surah_ruku_number restarts at 1 in each surah. ruku_number continues from 1 to 558 across the whole Quran.
JavaScript
// Setup: unzip the download and serve quran-metadata-ruku.json from your app (here at /data/)
const items = await fetch('/data/quran-metadata-ruku.json').then((res) => res.json());

// Get the first ruku
const first = items['1']; // { ruku_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 ruku_number, first_verse_key, last_verse_key, verse_mapping
FROM ruku
ORDER BY ruku_number;

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