PREVIEW · RECITE. BE FOLLOWED. STAY OFFLINE.
Recite the Quran.
See the verse.
Start anywhere. Tilawa finds your place, follows you word by word, and gently notes words that were missed, added or different.
Runs on your deviceNo audio uploads
Preview: it can miss mistakes and sometimes warns when you recited correctly. Pronunciation and tajweed are not checked yet.
Try Tilawa
On-deviceEXAMPLE · AL-IKHLAS, 112:1
قُلْ هُوَ ٱللَّهُ أَحَدٌ
Start anywhere
in the Quran.
Press start, allow the microphone, and recite. There's nothing to set up.
The first start downloads about 70 MB, once.
Your audio stays on this device.
Getting ready…
Downloading once. Next time Tilawa starts straight away, even offline.
0%
Tilawa couldn't get ready.
Check your connection and try again. Anything already downloaded is kept.
Allow microphone access
Choose Allow in your browser's prompt. If you don't see one, check the icon beside the address bar.
Microphone access is blocked.
Listening
Recite a few words. Tilawa will find your place.
Worth a second look
Microphone on · audio stays on this device
Practise a passage
Tilawa notes wrong, missed and extra words, and skipped passages. It doesn't check pronunciation or tajweed yet.
Details
- Runs on
- Not loaded yet. Tilawa uses WebGPU where it can and falls back to WebAssembly (WASM).
FOR DEVELOPERS
The same engine. In your app.
This page is @tilawa/core with no options. TypeScript for the browser and Node, MIT licensed, with no network calls of its own beyond fetching its model.
// npm i @tilawa/core@next onnxruntime-web
import { createTilawa } from "@tilawa/core/web";
const tilawa = await createTilawa();
const session = tilawa.startFreeRecitation();
session.subscribe((e) => {
if (e.type === "position") show(e.observed[0]?.word);
if (e.type === "checker" && e.state === "confirmed")
mark(e.location, e.errorClass);
});
const mic = await tilawa.listen(session);
// later: await mic.stop(); session.mistakes()