1. Ayah Editor
  2. Features

Every part of the editor, explained.

What each part of Ayah Editor does and, more usefully, why it behaves that way. Most of those decisions protect the accuracy of the Quranic text while leaving you in control of everything else.

The project model

Nothing in Ayah Editor happens outside a project. A project is a document, like a Photoshop file, that holds the audio reference, the verse range, the translation and every edit you have made, together with where all of it came from. Reopening a project restores the exact state you left.

Creating one is a four-step wizard, and each step records not just a choice but its source and version:

  1. Recitation. Import an MP3, M4A or WAV, or start on a 40-second silent demo track so you can lay out a project before you have the audio.
  2. Verses. Choose a surah and an ayah range from the bundled mushaf.
  3. Translation. Pick a translation provider; its identifier and version are stored with the project.
  4. Theme and name. Pick one of the built-in visual themes and name the project.
The new project wizard: recitation source, surah and ayah range, translation provider, and theme with project name.
Every choice in the wizard writes its source and version into the project.

Because a project is a single document and not a folder of loose files, it can be copied, backed up and reopened years later with the same result. And you can still answer "where did this translation come from?" long after you have forgotten.

Editing: one gesture, one undo

Every change in the editor is an event. Dragging a verse boundary across the timeline is one event, not one per pixel, so ⌘Z reverts the whole gesture. Retiming, switching a theme, changing the aspect ratio, editing a translation line: all the same mechanism, which is also where undo, redo and autosave come from.

  • Undo and redo: ⌘Z and ⇧⌘Z, unlimited within a session.
  • Autosave: continuous; the status bar shows the current state.
  • Refusal over corruption: an edit that would make the timeline invalid (a segment below the minimum length, or an overlap) is rejected rather than silently clamped into nonsense.

The timeline

Two tracks share one ruler and one playhead.

The verse track holds one clip per ayah and has no gaps by construction, because a gap would mean an ayah with no time. Each boundary between neighbouring verses can be dragged, and so can the outer edges. Drags show a live preview and stop at the neighbour, so you cannot push a verse into the one after it.

The background media track sits underneath and may have gaps; where it does, the theme background shows through. Clips are moved by their body and trimmed by either edge. Trimming moves the timeline edge and the source edge together, so the frame under your cursor doesn't slide while you trim.

The inspector mirrors the same values as numbers, with 100 ms nudge buttons labelled by what they actually move, so you always know which neighbour a nudge is pushing.

Placing timings by ear

Automatic verse timings exist only for recitations someone has already aligned. Your own recording has none, and if you do not read Arabic, matching a waveform to a verse is guesswork. This is the workflow that solves it.

⇧⌘S opens the sync bar above the timeline. It shows:

  • the current verse in Latin transliteration, in the largest type on screen: the line you can follow against a reciting voice without reading Arabic;
  • its translation, directly beneath;
  • the next verse's opening words, so you know what you are listening for.

Play the audio and press T the moment the reciter moves on. Each tap moves that boundary, the same edit as dragging it, so it undoes with ⌘Z, autosaves as you go, and is refused if it would break the timeline. Tapped too early? Step back a verse and tap again.

The sync bar: current verse transliteration in large type, translation below, a large Tap button, and the next verse preview.
The sync bar puts the transliteration first. Tap T at each boundary.

Tapping gets every boundary close; dragging afterwards makes it exact. The transliteration exists only to help you edit and is never rendered into the video.

Quranic text and translations

The Arabic ships with the application as a verified, versioned dataset (the Uthmani mushaf from the Tanzil Project), checked at build time and carrying a content fingerprint. Inside the editor it is read-only and visibly marked as such. No feature, and certainly no AI model, writes, alters or paraphrases it.

Translations are the opposite: fully editable, because wording is a legitimate editorial choice. The moment a line differs from the provider's original it is marked modified, the original stays one click away, and the project remembers both. When a viewer asks "is this the standard translation?", you have an answer.

The application knows only the idea of a translation provider, not any particular language, so new languages can be added as plugins and are picked up automatically. The same is true of themes, fonts, audio sources and exporters.

Inspector detail: locked Arabic with transliteration, translation with a source badge, timing marked unverified.
Source badges on every value that came from somewhere.

The canvas, themes and formats

The preview is the brightest part of the interface, and it is the actual frame, not an approximation of it. The frame is laid out at a fixed resolution and scaled to your screen with a single transform, so type size, spacing, margins and line breaks are always the same share of the frame at any zoom or window size.

Three formats ship: Reel 9:16 (1080x1920), Square 1:1 (1080x1080) and YouTube 16:9 (1920x1080). Changing format is an undoable edit like any other.

Four themes ship: Mihrab (Emerald Night), Sahar (Dawn), Layl (Noir) and Rawda (Garden). A theme restyles the frame your viewer sees: background, Arabic colour, translation colour and accent. The editor's own light or dark appearance is a separate switch, so you can work in a light interface and still see the dark frame exactly as it will render.

The project in YouTube 16:9 format with the warm Sahar (Dawn) theme applied to the preview canvas.
The same project in YouTube 16:9 with the Sahar theme.

Background media

Video and stills go on the media track: drop them from Finder or Explorer, or add them with the Media button. Media is referenced, not copied. The project stores a path and a fingerprint, not the file itself, so a project stays small no matter how much 4K footage it points at.

That trade-off is handled in the open. If a file moves, its clip is flagged with a warning, the theme background shows in its place, and a Relink action puts it back; the fingerprint is how the app knows which file it was looking for. Background video is muted and follows playback; the recitation always sets the time.

For each clip you control fit (cover or contain), opacity, looping, and the in and out points inside the source file.

Transitions

Text transitions control how the words move from one ayah to the next: cut, fade, slide, rise or scale, with a duration, an easing curve and, for directional effects, a direction. A scope switch decides whether an edit sets the project-wide default or applies to the selected verse only, with the same "modified" marker and one-click reset as translations. The default is a hard cut, so a project has no animation until you ask for one.

Media transitions control how a background clip enters over what is beneath it. The animation runs on the frames before the clip starts, so a clip fading over the previous one is a true crossfade, not a dip to black.

Both preview live using the same maths the exporter uses, so the animation you approve is the one you get.

Keyboard and the command palette

⌘K opens a palette listing every command the editor has, filterable by name and navigable with the arrow keys. It only runs commands the editor already offers, which is exactly why plugins will register theirs there.

Command palette listing grouped commands: edit, playback, timings, translation, format, background, export, project, theme.
Every action, one keystroke away.

Baseline shortcuts

Shown with ⌘ for macOS; use Ctrl on Windows.

Undo, redo
⌘Z ⇧⌘Z
Play, pause
Space
Previous, next verse
← →
Nudge one frame
⌥← ⌥→
Zoom timeline
⌘= ⌘-
Toggle panels
⌘1 ⌘2
Sync by ear
⇧⌘S, then T
Export
⇧⌘E
Command palette
⌘K

Export and the render pipeline

Export is a pipeline, not a button hiding a black box:

project state ──▶ validate ──▶ compose ──▶ RenderSpec ──▶ encode ──▶ project.mp4

Validate and compose turn the project into a fully resolved frame description: size and frame rate, one scene per verse with its frames and text, the background clips, the theme colours, and the source of everything. This stage runs offline with no side effects, so an invalid project never reaches the encoder.

Encode hands that description to a render engine, which draws the frames and adds the audio into an H.264 MP4, reporting progress frame by frame and stopping cleanly if you cancel. Two engines sit behind the same interface: one that writes the plan as readable JSON, and the real encoder built on Remotion and FFmpeg.

The consequence you can see: the preview and the export are drawn by the same frame component. The editor scales it on screen; the exporter scales the identical geometry to real pixels. Automated golden tests compare the two, so "the export matches the preview" is enforced by the build, not promised by a website.

Offline, local, and yours

The mushaf text and translations are bundled. Projects are files on your disk. Rendering runs on your own hardware. There is no account and no sign-in, and your recitation and footage are never uploaded. The app sends only anonymous usage stats and error reports, which you can switch off.

One planned exception is opt-in and explicit: sending a finished export to your own TikTok or YouTube account as a draft, so you finish and publish it there. It will run only when you ask, per export, and upload exactly the file you chose.

Status

Ayah Editor is in Early Access on Windows (Microsoft Store) and macOS (Apple Silicon and Intel). The full editor is free during Early Access, with a small watermark on exported video. A signed Mac build is next. Premium, a one-time payment from 15 €, removes the watermark and supports the project.

Download Ayah Editor