How did Indonesia become the biggest Muslim country? — credits
How a chain of islands that Muslim traders sailed past for centuries became home to the most Muslims of any country, told through gravestones, travellers' accounts, the road to Mecca and Java's growth. A hand-made-style paper-collage animation, rendered live in your browser with plain JavaScript and canvas.
Sources for the story
- Akhbar al-Sin wa'l-Hind (237 AH / 851), with Abu Zayd al-Sirafi's supplement (Rihlat al-Sirafi 1:22–28, 1:66–68): the sea road from the Persian Gulf to China by 851; the ships' route through the waters of Srivijaya (al-Mas'udi, al-Tanbih 1:54; Song History via Groeneveldt 1876).
- al-Hasan b. Ahmad al-Muhallabi, al-'Azizi (written 975–990), 1:137–138: Muslims living at Kalah on the Malay Peninsula by the late 900s.
- Kalus & Guillot, Archipel 67 (2004); M. C. Ricklefs, A History of Modern Indonesia since c.1200, 4th ed. (2008), pp. 3–4: the Leran gravestone of Fatimah (475 AH / 1082, as most scholars read it) and its arrival as ballast; Qur'an 55:26–27 on the stone.
- C. Kersten, A History of Islam in Indonesia (2017), ch. 1: "a vacuum of nearly half a millennium" between the first Muslim merchants and the first local Muslims.
- Ricklefs 2008, p. 4; Lambourn, JESHO 51 (2008); Laffan, The Makings of Indonesian Islam (2011): the Lamreh gravestone (1211); al-Malik al-Salih's gravestone (Ramadan 696 / 1297) and the debate over whether the stone is a later replacement.
- Hikayat Raja Pasai (composed perhaps c.1390; Jones 1987), via Ricklefs 2008 pp. 10–11 and Laffan 2011 p. 5: the conversion dream told as a later chronicle's legend.
- Ibn Battuta, Tuhfat al-nuzzar (Rihla), ed. 'Abd al-Hadi al-Tazi, vol. 4 pp. 106–115: the voyage from Bengal, "green and fresh", tin and Chinese gold, the judge from Shiraz, the Friday debate, "the clothes of the jurists", "one of the most excellent and generous of kings", "he fights and raids a great deal", the walk to Friday prayer on foot.
- Kersten 2017 pp. 12–16; Lambourn 2003: the origin theories (Arabia, Gujarat, southern India, Bengal, Persia, China) and the 15th-century date of the imported Gujarati marble gravestones.
- Tomé Pires, Suma Oriental, trans. A. Cortesão (1944), vol. I pp. 174–198, as read by Ricklefs 2006 and 2008: the merchants on Java's coast, the coast Muslim as far east as Surabaya in 1513, sons "already Javanese", lords who converted and lords who were killed, marriages, coastal esteem for Hindu ascetics, Minangkabau's king and a hundred men.
- Ricklefs 2008 pp. 21–25, 34; Laffan 2011 pp. 10–13: Malacca founded around 1400, its rulers Muslim in the early 1400s (which king is debated), the Portuguese capture of August 1511, Aceh's rise, "the forecourt of Mecca".
- L.-C. Damais, BEFEO 48 (1957); Ricklefs 2008 p. 5 and Mystic Synthesis in Java (2006) pp. 11–17: the Trowulan Muslim gravestones from Saka 1290 (1368–9), "almost certainly" Javanese, perhaps royal; the misspelt Shahada on three stones; "their Javaneseness".
- Ma Huan, Ying-yai Sheng-lan, trans. J. V. G. Mills (1970), p. 93: the three peoples of Java's coast in 1413–15; Ricklefs 2008 p. 5: the mystical-teachers hypothesis.
- Ricklefs 2008 pp. 5, 11–12, 41; Kalus & Guillot, Archipel 63 (2002): the Wali Songo in later chronicles; Malik Ibrahim's gravestone at Gresik (822 AH / 1419); the Kudus mosque text (Rajab 956 / 1549).
- Ricklefs 2008 p. 38; de Graaf & Pigeaud, Islamic States in Java 1500–1700 (1976) p. 8: the 1478 chronicle date, the 1486 inscription, the Hindu-Buddhist state at Kediri to about 1527; Banten and Pajajaran around 1580 (Ricklefs pp. 39–40).
- J. Noorduyn (1987); Ricklefs 2008 p. 54: Gowa and Tallo's conversion (22 September 1605) and the campaigns of 1608–11 against the Bugis; the zeal-or-empire debate.
- Ricklefs 2008 pp. 6–7: "probably symbolises more the beginning than the end"; "Islamisation is a process which has continued down to the present day".
- Ricklefs 2008 pp. 50–51, 60: Sultan Agung's calendar of 1633 ("literally changing the times in Java"); by around 1800, to be Javanese was to be a Muslim.
- Ricklefs 2008 p. 158: pilgrims from Java's Javanese-speaking regions (1850 to 1914); nearly 11,000 pesantren in 1893; the abangan from the 1850s (pp. 158–159). Nagazumi (1979): about two in five pilgrims from the Indies in 1926–27. Qur'an 3:97 (Saheeh International).
- LPMQ Kemenag (Ahmad Khatib al-Minangkabawi, 1860–1916); Muhammadiyah and NU Online: Ahmad Khatib as one of the Shafi'i imams of the Grand Mosque and teacher of both Ahmad Dahlan and Hasyim Asy'ari; Muhammadiyah (18 November 1912) and Nahdlatul Ulama (31 January 1926).
- Britannica (Diponegoro); Vickers, A History of Modern Indonesia (2005): the Java War and the Aceh War as wars of resistance with a religious dimension.
- R. E. Elson, Indonesia 88 (2009): the seven words of the Jakarta Charter and their removal on 18 August 1945; PNPS 1/1965: six recognised religions.
- Dukcapil civil registry, end of 2025 (251,257,898 Muslims, 87.15%; Christians about one in ten); BPS 2010 census (87.18%); Pew Research Center (2015, 2025): one in eight of the world's Muslims, India projected to pass Indonesia by 2050; Pakistan's 2023 census (Pakistan Bureau of Statistics): about 230 million Muslims; BPS SUPAS 2025: Java about 158 million; Peper (1970) and BPS: Java's growth from perhaps 5 to 10 million around 1800.
Out of respect, the Prophet ﷺ and the other prophets, peace be upon them, are never depicted, and people are shown only from behind. No sacred text is torn, stamped or placed on the ground.
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.
- Mushaf face for the Qur'an verses and the Shahada: Amiri Quran (The Amiri Project Authors, SIL Open Font License 1.1).
Sound
No music is used. All sound effects are CC0 unless noted.
- amb_coast_town_day — #855886 "Rural atmosphere, birds, distant waves and neighbors' voices / Ambiente rural con aves, mar lejano y algunas voces de vecinos" (Freesound) by Chris.sonido.peru, CC0 1.0. Edits: #855886 cut 30.00-125.00 s; HPF 80 Hz, FFT denoise, gain + limiter; layered, looped to 80 s, fades, loudness-normalised
- 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_frogs_sawah — #447540 "Toads and frogs during night in Thailand" (Freesound) by felix.blume, CC0 1.0. Edits: #447540 cut 300.00-352.00 s; HPF 90 Hz, LPF 8000 Hz; layered, looped to 50 s, fades, loudness-normalised
- amb_highland_breeze — #796150 "Forest, Woods, Few birds and insects, Soft breeze, Tiny drops" (Freesound) by fran_marenco, CC0 1.0. Edits: #796150 cut 20.00-92.00 s; HPF 90 Hz; layered, looped to 70 s, fades, loudness-normalised
- amb_hull_creak_close — #195193 "LargeWoodenShip.mp3" (Freesound) by PimFeijen, CC0 1.0; #871472 "Amazon River Cargo Boat- Water against Hull" (Freesound) by edfrederick, CC0 1.0. Edits: #195193 cut 50.00-112.00 s; HPF 50 Hz; #871472 cut 0.00-35.90 s; HPF 60 Hz, LPF 7000 Hz; -10 dB layer; layered, looped to 30 s, fades, loudness-normalised
- amb_jm_hollow_wind — #843069 "A light breeze, the rustle of reeds. The rustle of dry grass" by ReflektWave, CC0 1.0. Edits: cut 12.0-36.0 s; HPF 120 Hz x2, spike limiter; 22 s seamless loop (2 s crossfade), -24 LUFS
- amb_night_harbour — #177682 "Thailand jungle night crickets +water knocks boat hull1.flac" (Freesound) by kyles, CC0 1.0. Edits: #177682 cut 2.00-64.00 s; HPF 60 Hz; layered, looped to 55 s, fades, loudness-normalised
- amb_palm_wind — #423800 "Wind through Palm Trees.wav" by klangfabrik, CC0 1.0. Edits: source 35-83 s; HPF 120 Hz (removes mic buffeting); 45 s seamless loop (2 s crossfade), -24 LUFS
- amb_predawn_room — #210091 "room small night" by Yuval, CC0 1.0. Edits: source 270-323 s (clean stretch, no footsteps); HPF 50 Hz, LPF 9 kHz; 50 s seamless loop (2 s crossfade), -26 LUFS
- amb_rain_roof — #669487 "Rain on roofs" (Freesound) by xkeril, CC0 1.0; #826025 "RAIN_Summer Rain.City Yard.Entrance Canopy.Eaves Leaking.Drops On Plants And Asphalt 3_EM" (Freesound) by newlocknew, CC0 1.0. Edits: #669487 cut 2.00-54.00 s; HPF 60 Hz; #826025 cut 40.00-92.00 s; HPF 80 Hz; -5 dB layer; layered, looped to 50 s, fades, loudness-normalised
- amb_rice_evening — #770270 "ambience ricefield at night" (Freesound) by rakun_id123, CC0 1.0. Edits: #770270 cut 0.00-49.50 s; HPF 80 Hz; layered, looped to 47 s, fades, loudness-normalised
- amb_room_still — #637807 "room tone small space dead quiet air tone.flac" (Freesound) by kyles, CC0 1.0. Edits: #637807 cut 5.00-112.00 s; HPF 150 Hz, hum notches, LPF 7000 Hz; layered, looped to 100 s, fades, loudness-normalised
- amb_sea_dusk_open — #460061 "sailboat underway.wav" (Freesound) by canoeCG, CC0 1.0; #195193 "LargeWoodenShip.mp3" (Freesound) by PimFeijen, CC0 1.0; #855794 "Distant waves, rough seas, and gentle winds. North coast of Peru. OLAS DISTANTES. COSTA NORTE PERU" (Freesound) by Chris.sonido.peru, CC0 1.0. Edits: #460061 cut 48.00-112.00 s; HPF 60 Hz, LPF 9000 Hz; #195193 cut 200.00-264.00 s; HPF 60 Hz; -9 dB layer; #855794 cut 150.00-214.00 s; HPF 50 Hz; -4 dB layer; layered, looped to 60 s, fades, loudness-normalised
- amb_shore_dawn — #482291 "Weston Shore Calm Early Morning" (Freesound) by richwise, CC0 1.0. Edits: #482291 cut 20.00-112.00 s; HPF 60 Hz; layered, looped to 90 s, fades, loudness-normalised
- amb_steamer_engine — #587171 "Running ship steam engine" (Freesound) by derplayer, CC0 1.0. Edits: #587171 cut 0.20-9.40 s; HPF 40 Hz, LPF 1500 Hz; layered, looped to 8 s, fades, loudness-normalised
- sfx_blind_click — #635786 "window residential slide open close click latch various" by kyles, CC0 1.0. Edits: cut 1.38-1.66 s (one latch click); HPF 120 Hz; trim, fades, peak -1 dBFS
- sfx_bone_tap — #640602 "Small_Wooden_Box_Hits.wav" by gokalp_gonen, CC0 1.0. Edits: cut 26.38-26.75 s; left channel only (dual mono), HPF 100 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_charcoal_scratch — #650358 "charcoal.wav" (Freesound) by Ches_Bar, CC0 1.0. Edits: #650358 cut 0.90-3.60 s; HPF 150 Hz, FFT denoise; trim, fades, peak -1 dBFS
- sfx_chart_unroll — #753282 "Parchment - Unroll" (Freesound) by Vrymaa, CC0 1.0. Edits: #753282 cut 13.25-16.10 s; HPF 70 Hz, LPF 12000 Hz; trim, fades, peak -1 dBFS
- sfx_cloth_drop — #844390 "Cloth flaps" by Maraboop, CC0 1.0. Edits: cut 0.02-0.72 s (soft double flap); HPF 80 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_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_dream_shimmer_short — synthesized for this series: Same engine, 1.6 s dense sparkle sting.
- sfx_gull_far — #166710 "seagull 2 fx.wav" (Freesound) by Snapper4298, CC0 1.0. Edits: #166710 cut 0.55-4.20 s; HPF 300 Hz, LPF 8000 Hz, FFT denoise; trim, fades, peak -1 dBFS
- sfx_jm_sparrow — #543827 "FXSaSc Sparrows Close Chirp Exterior Birds.wav" by Profispiesser, CC0 1.0. Edits: cut 12.95-14.05 s (two chirps); HPF 300 Hz; trim, fades, peak -1 dBFS
- sfx_jm_stone_slide — #558254 "Heavy Stone Push" by msavioti, CC0 1.0. Edits: full 0.00-1.13 s; HPF 40 Hz; trim, fades, peak -1 dBFS
- sfx_jm_wood_thunk — #669467 "SFX_wood_stone_floor_axe_handling_drop.wav" by EricsSoundschmiede, CC0 1.0. Edits: cut 0.05-1.50 s; HPF 40 Hz; trim, fades, peak -1 dBFS
- sfx_leather_slap — #545545 "leather couch sounds impact thud strike.wav" by rsellick, CC0 1.0. Edits: cut 24.47-24.85 s; HPF 60 Hz; trim, fades, peak -1 dBFS
- sfx_needle_punch_1 — #188178 "Sewing/stitching up some fabric" by pfranzen, CC0 1.0. Edits: cut 0.05-0.30 s; HPF 150 Hz; trim, fades, peak -1 dBFS
- sfx_needle_punch_2 — #188178 "Sewing/stitching up some fabric" by pfranzen, CC0 1.0. Edits: cut 1.85-2.12 s; HPF 150 Hz; trim, fades, peak -1 dBFS
- sfx_needle_punch_3 — #188178 "Sewing/stitching up some fabric" by pfranzen, CC0 1.0. Edits: cut 2.20-2.44 s; HPF 150 Hz; trim, fades, peak -1 dBFS
- 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_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_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_pen_tick_2 — #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 1.245-1.505 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_pigeon_wings — #532180 "Pigeons flying" (Freesound) by mcmikai, CC0 1.0. Edits: #532180 cut 1.00-2.75 s; HPF 200 Hz; trim, fades, peak -1 dBFS
- sfx_rope_creak — #231438 "hamp rope creaks" by 6polnic, CC0 1.0. Edits: cut 6.64-7.38 s; HPF 90 Hz; trim, fades, peak -1 dBFS (true peak about +0.3 dBTP)
- sfx_spool_creak — #506665 "Wood Creak Single V10" by Rudmer_Rotteveel, CC0 1.0. Edits: cut 0.03-0.95 s; HPF 80 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_stone_clack — #319226 "Single rock hitting wood.wav" by worthahep88, CC0 1.0. Edits: cut 0.10-0.38 s; HPF 80 Hz; trim, fades, peak -1 dBFS
- sfx_thread_creak — #862995 "26.07.04- Creaky Playground Swing - Rope Friction 1" by Valerie-Vivegnis, CC0 1.0. Edits: cut 24.50-25.05 s (one creak); HPF 300 Hz; trim, fades, peak -1 dBFS
- sfx_thread_pull — #408578 "27.Needle_thread.wav" by miguelab1998, CC0 1.0. Edits: cut 1.24-1.76 s; HPF 150 Hz; trim, fades, peak -1 dBFS
- sfx_thread_pull_1 — #646586 "Sewing cloth.wav" by heifabaisi, CC0 1.0. Edits: cut 92.55-93.30 s; HPF 100 Hz,FFT denoise 10 dB (floor -60); trim, fades, peak -1 dBFS
- sfx_thread_pull_2 — #646586 "Sewing cloth.wav" by heifabaisi, CC0 1.0. Edits: cut 29.15-30.10 s; HPF 100 Hz,FFT denoise 10 dB (floor -60); 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_drop — #174718 "Single Water Drop" by paespedro, CC0 1.0. Edits: cut 0.00-0.46 s; HPF 120 Hz; trim, fades, peak -1 dBFS
- sfx_water_drop_splash — Slow Single Water Drop Splash (Freesound) by qubodup, CC0 1.0. Edits: source 0.0-0.34 s; highpass=f=120:poles=2; single slow water drop splash; 48k/16-bit
- 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.