How did a man who killed 100 people get forgiven? — credits
As the Prophet ﷺ told it: a man who had killed a hundred people set out to repent, died on the road, was found nearer the good land by one span, and was forgiven. A paper-collage retelling from Sahih al-Bukhari 3470 and Sahih Muslim 2766. A hand-made-style paper-collage animation, rendered live in your browser with plain JavaScript and canvas.
Sources for the story
- Sahih al-Bukhari 3470, narrated by Abu Sa'id al-Khudri: the man who killed ninety-nine, the monk, the hundredth; he died on the way and turned his chest towards the land; Allah commanded one land to draw near and the other to draw away; he was found nearer by a span, "so he was forgiven" (فَغُفِرَ لَهُ).
- Sahih Muslim 2766a: he asked for the most learned person; the monk said no and was killed, completing a hundred; the scholar said "Yes, and who can stand between him and repentance?" and sent him to a land where people worship Allah; the angels of mercy and of punishment disputed ("He came repenting, turning with his heart to Allah" / "He never did any good at all").
- Sahih Muslim 2766b: "no repentance for you"; he crawled on his chest; nearer the righteous town by a span.
- Qur'an 5:32: "whoever kills a soul, unless for a soul or for corruption in the land, it is as if he had slain mankind entirely", decreed for the Children of Israel (paraphrased in the hook as "one innocent soul").
- Ibn Hajar, Fath al-Bari (on Bukhari 3470), via Qaf: the meaning of نَاءَ بِصَدْرِهِ (he leaned forward on his chest) and that the story is from the nations before Islam.
- Wording note: the hadiths say "he was forgiven" and "the angels of mercy took him"; entering Paradise is a scholars' inference, so the reel says "forgiven".
Out of respect, the Prophet ﷺ is never depicted, angels are never shown (their part is told only in text), 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_open_road_wind — EXT Blustery quiet 1.wav (Freesound) by deleted_user_2104797, CC0 1.0. Edits: source 4.0-40.0 s; highpass=f=70:poles=2; exposed blustery wind, no birds or people (bare hill road); 24 s seamless loop, -24 LUFS; 48k/16-bit
- amb_quiet_room_day — #837996 "windy roomtone ile callot" by bruno.auzet, CC0 1.0. Edits: cut 190.0-216.0 s; HPF 40 Hz, LPF 14 kHz; 24 s seamless loop (2 s crossfade), -26 LUFS
- amb_room_tone_studio — #744447 "Soft Room Tone" by callmethefoo, CC0 1.0. Edits: cut 10.0-36.2 s (cabin interior room tone); HPF 40 Hz; 24 s seamless loop (2 s crossfade), -26 LUFS
- sfx_blind_unroll — #532775 "roller shade up.mp3" by twinpix, CC0 1.0. Edits: full 0.00-1.05 s; HPF 80 Hz; trim, fades, peak -1 dBFS
- sfx_card_fold — #364740 "open-cardboard-box-compartment.wav" by newagesoup, CC0 1.0. Edits: cut 0.12-0.95 s (quick cardboard flap fold); HPF 80 Hz; trim, fades, peak -1 dBFS
- sfx_card_thud — #824385 "Softcover book hitting table" by nyxlitten, CC0 1.0. Edits: cut 3.80-4.25 s; HPF 60 Hz; trim, fades, peak -1 dBFS
- sfx_cloth_press — #854340 "smoothing apron - rustling fabric - handling canvas" by ponysparkleworld, CC0 1.0. Edits: cut 8.97-9.50 s; HPF 60 Hz, LPF 18 kHz; trim, fades, peak -1 dBFS
- 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_dream_shimmer_short — synthesized for this series: Same engine, 1.6 s dense sparkle sting.
- sfx_flame_catch_soft — #326463 "Lighting A Match OWI.wav" by miekyj, CC0 1.0. Edits: cut 0.42-1.85 s (flame flare only, strike removed); HPF 80 Hz; trim, 0.25 s fade-out, peak -1 dBFS
- sfx_jm_steps_sandals — #637558 "footsteps walking flip flops sandals dirt.flac" by kyles, CC0 1.0. Edits: cut 1.75-5.35 s (6 steps); HPF 60 Hz; trim, fades, peak -1 dBFS
- sfx_page_turn_2 — #397548 "Page Turn 01" by LilMati, CC0 1.0. Edits: cut 0.00-0.50 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_pen_tick_1 — #85703 "Pencil_scibble.aif" (via house `sfx_pencil_scribble_2.wav`) by tmkappelt, CC0 1.0. Edits: one tick cut from sfx_pencil_scribble_2 at 0.545-0.785 s; 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_tick — synthesized for this series: A short synthesized key click for typing in the Qaf app screen (made for this series). Non-instrumental.
- sfx_tissue_slide_1 — #147281 "fh_Paper_Swipe_Surface2_Long_01.wav" by Frank1100, CC0 1.0. Edits: cut 0.10-1.42 s; HPF 120 Hz; trim, fades, peak -1 dBFS
- sfx_tissue_slide_2 — #147286 "fh_Paper_Swipe_Surface2_Mid_01.wav" by Frank1100, CC0 1.0. Edits: cut 0.00-1.24 s; HPF 120 Hz,FFT denoise 8 dB (floor -55); 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_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.
- sfx_wood_creak_short — #130364 "Slow Creaking Stereo.wav" by harveyism, CC0 1.0. Edits: cut 12.15-13.40 s; pitched/slowed to 0.8x (about -4 semitones); HPF 60 Hz; trim, fades, peak -1 dBFS