How was the Quran compiled? — credits
Written down in the Prophet's ﷺ lifetime but not in one place, the Quran was gathered into sheets by Zayd ibn Thabit after al-Yamama, on the order of Abu Bakr as caliph, on Umar's advice; years later, prompted by Hudhayfa's alarm at differing recitations, Uthman had those sheets copied into bound volumes, one for every region, with the Companions' agreement. A hand-made-style paper-collage animation, rendered live in your browser with plain JavaScript and canvas.
Sources for the story
- Sahih al-Bukhari 4986: al-Yamama and the reciters; Umar's advice and “By Allah, it is good”; Abu Bakr's order; Zayd chosen; palm stalks, thin stones and the hearts of men; Zayd's words about moving a mountain
- Sahih al-Bukhari 4987: Hudhayfa's alarm at differing recitations, “Save this Ummah”; the sheets sent from Hafsa, copied into volumes, a copy sent to every region
- Sahih al-Bukhari 4990 and Jami' at-Tirmidhi 3954: the Quran written down in the Prophet's ﷺ lifetime
- Ibn Hajar, Fath al-Bari, vol. 9, pp. 12–18: written in the Prophet's ﷺ lifetime but not gathered in one place; glosses of palm stalks and thin stones; the Companions' agreement to Uthman's copies
- Ibn Abi Dawud, Kitab al-Masahif: Ali on Abu Bakr's gathering and on Uthman's copies
Out of respect, the Prophet ﷺ is never depicted, and people are shown only from behind.
Made with
- Narration: Google Gemini 3.8 Flash TTS (voice “Algieba”), directed and edited for this film.
- Illustrations: Google Gemini 3.1 Flash Image (backgrounds) and OpenAI GPT Image 2.5 (cut-outs), art-directed and reviewed frame by frame.
- Typefaces (SIL Open Font License): Caveat Brush, Caveat, Patrick Hand, Aref Ruqaa.
- Animation engine, sound design and mix: written for this series.
Sound
No music is used. All sound effects are CC0 unless noted.
- amb_creek_flowing — WATRFlow-Ext_Small FLowing Creek_HvD_OwSFX_Loop (Freesound) by Hano_van_Dalen, CC0 1.0. Edits: source 10.0-70.0 s; highpass=f=60:poles=2; small flowing creek (the full wadi river); 40 s seamless loop, -24 LUFS; 48k/16-bit
- amb_creek_sand — Small Creek Runs over Sand Bank (Freesound) by BenHarmSound, CC0 1.0. Edits: source 2.0-46.0 s; highpass=f=70:poles=2; small creek over a sand bank (gathered water); 36 s seamless loop, -24 LUFS; 48k/16-bit
- amb_desert_wind_gentle — Looping Gentle Wind Ambience on an Open Desert Plain.wav (Freesound) by dhallcomposer, CC0 1.0. Edits: source 2.0-38.0 s; highpass=f=50:poles=2; gentle dry wind on an open desert plain (Hijaz wadi, dusk); 30 s seamless loop, -24 LUFS; 48k/16-bit
- amb_dune_atmosphere — Desert sand - Dune atmosphere (Freesound) by Vrymaa, CC0 1.0. Edits: source 20.0-70.0 s; highpass=f=50:poles=2; desert dune atmosphere, light sand wind; 40 s seamless loop, -26 LUFS; 48k/16-bit
- sfx_cloth_swish_1 — #391448 "Shirt Whoosh 1.wav" by saturdaysoundguy, CC0 1.0. Edits: cut 6.70-7.40 s; HPF 80 Hz,FFT denoise 10 dB (floor -72); trim, fades, peak -1 dBFS
- sfx_cloth_swish_2 — #391448 "Shirt Whoosh 1.wav" by saturdaysoundguy, CC0 1.0. Edits: cut 9.60-10.30 s; HPF 80 Hz,FFT denoise 10 dB (floor -72); trim, fades, peak -1 dBFS
- sfx_cloth_swish_3 — #320144 "Blanket Movement 6" by OwlStorm, CC0 1.0. Edits: cut 0.00-1.16 s; HPF 80 Hz; trim, fades, peak -1 dBFS
- sfx_dream_shimmer_short — synthesized for this series: Same engine, 1.6 s dense sparkle sting.
- sfx_page_turn_1 — #136778 "Page Turn" by davidbain, CC0 1.0. Edits: cut 0.00-1.98 s; HPF 80 Hz; trim, fades, peak -1 dBFS
- sfx_paper_rustle_1 — #181774 "rustling paper.wav" by keweldog, CC0 1.0. Edits: cut 0.30-2.55 s; HPF 80 Hz; trim, fades, peak -1 dBFS
- sfx_paper_rustle_2 — #181774 "rustling paper.wav" by keweldog, CC0 1.0. Edits: cut 2.50-4.45 s; HPF 80 Hz; trim, fades, peak -1 dBFS
- sfx_paper_rustle_3 — #449127 "Rustling Paper" by HarpyHarpHarp, CC0 1.0. Edits: cut 1.45-2.15 s; HPF 80 Hz,FFT denoise 10 dB (floor -60); trim, fades, peak -1 dBFS
- sfx_paper_rustle_4 — #449127 "Rustling Paper" by HarpyHarpHarp, CC0 1.0. Edits: cut 5.70-6.41 s; HPF 80 Hz,FFT denoise 10 dB (floor -60); trim, fades, peak -1 dBFS
- sfx_paper_rustle_5 — #211246 "PageRustle" by Tomoyo Ichijouji, CC0 1.0. Edits: cut 0.10-1.90 s; HPF 80 Hz; trim, fades, peak -1 dBFS
- sfx_paper_slide_1 — #464302 "PaperSlide.wav" by eyesonlegs, CC0 1.0. Edits: cut 0.00-1.64 s; HPF 60 Hz,FFT denoise 10 dB (floor -55); trim, fades, peak -1 dBFS
- sfx_paper_slide_2 — #444431 "Sliding Envelope.wav" by MTJohnson, CC0 1.0. Edits: cut 0.20-1.10 s; HPF 80 Hz; trim, fades, peak -3 dBFS
- sfx_paper_tear_1 — #272028 "Ripping Paper" by aldenroth2, CC0 1.0. Edits: cut 0.00-1.96 s; HPF 60 Hz,FFT denoise 8 dB (floor -60); trim, fades, peak -1 dBFS
- sfx_paper_tear_2 — #342541 "Fast Paper Rip" by sgrowe, CC0 1.0. Edits: cut 0.00-0.89 s; HPF 60 Hz; trim, fades, peak -1 dBFS
- sfx_paper_tear_3 — #170311 "Tearing paper" by ludde44, CC0 1.0. Edits: cut 0.20-1.52 s; HPF 60 Hz; trim, fades, peak -1 dBFS
- sfx_pencil_scribble_1 — #257518 "Scribble_short.wav" by waldram, CC0 1.0. Edits: cut 0.00-1.27 s; HPF 150 Hz,FFT denoise 12 dB (floor -50); trim, fades, peak -1 dBFS
- sfx_pencil_scribble_2 — #85703 "Pencil_scibble.aif" by tmkappelt, CC0 1.0. Edits: cut 0.00-3.20 s; HPF 150 Hz,FFT denoise 12 dB (floor -62); trim, fades, peak -1 dBFS
- sfx_stamp_thump_1 — #448474 "es-stamp.wav" by eddies2000, CC0 1.0. Edits: cut 0.95-1.65 s; HPF 40 Hz; trim, fades, peak -1 dBFS
- sfx_stamp_thump_2 — #470710 "traditional stamp.wav" by I.fekry, CC0 1.0. Edits: cut 0.40-1.20 s; HPF 40 Hz; trim, fades, peak -1 dBFS
- sfx_tick — synthesized for this series: A short synthesized key click for typing in the Qaf app screen (made for this series). Non-instrumental.
- sfx_water_drip — Water Drip Free (Freesound) by AardsReal, CC0 1.0. Edits: source 0.0-0.72 s; highpass=f=120:poles=2; single water drip; 48k/16-bit
- sfx_water_trickle_start — Small Creek Runs over Sand Bank (Freesound) by BenHarmSound, CC0 1.0. Edits: source 6.0-10.0 s; highpass=f=90:poles=2; a small creek running over a sand bank, 4 s, used as a trickle starting; 48k/16-bit
- sfx_whoosh_1 — #701104 "Whoosh stereo light (transition)" by xkeril, CC0 1.0. Edits: cut 0.10-2.32 s; no EQ; trim, fades, peak -1 dBFS
- sfx_whoosh_2 — #683101 "quick woosh" by florianreichelt, CC0 1.0. Edits: cut 0.05-2.05 s; no EQ; trim, fades, peak -1 dBFS
- sfx_whoosh_3 — #369698 "Whoosh.wav" by crackles04, CC0 1.0. Edits: cut 2.40-6.20 s; no EQ; trim, fades, peak -1 dBFS
- sfx_whoosh_soft_synth — synthesized for this series: White noise through a time-varying log-Gaussian band-pass sweeping 300 Hz -> 2.2 kHz, swell envelope, slow L->R pan.