Tighten the time codes of a subtitle that is already roughly in sync, by letting a forced aligner listen for every line in the audio. Nothing is transcribed and no text is changed - only the in- and out-cues move.

The aligner looks for each line round its current position only, so on its own it needs a subtitle that is close to begin with. With Check with speech-to-text on, a subtitle that is further out - seconds or minutes, drifting, or with jumps where scenes were cut - is synced first (see Syncing first). Without it, use Adjust all times, Point sync or Visual sync first.
A model that is not installed yet says how much will be downloaded; the download starts when you press Align.
Two stacked waveforms show the same stretch of audio:
Show speech only (on the Aligned row) redraws the Aligned waveform from the audio with music and sound effects removed - the same audio the aligner listened to when Isolate speech first was on, which makes it much easier to judge whether a cue starts and stops with the words. The Original waveform always shows the audio as it is, so the two can be compared. It becomes available as soon as the speech has been isolated once for this video, and is switched on automatically after such a run. The speech-only waveform is shared with Show speech only in the main window’s waveform: whichever of the two generates it first, the other reuses it.
The line being looked at is amber in both. Scrolling or zooming either waveform moves the other, and clicking a line in a waveform selects it in the list. A small video player sits beside the line list, so you can watch as well as listen.
Under the waveforms:
One row per subtitle line, with the shift of its start and end in milliseconds and a status:
| Status | Meaning |
|---|---|
| Re-timed | The aligner moved the line. |
| Moved with its neighbours | The lines round it all moved by about the same amount, but the aligner wanted this one somewhere else - or further than Max shift. It was given the neighbours’ offset instead. |
| Large move - listen, tick to apply | The line wants to move more than half a second while its neighbours stay put. The new time codes are the aligner’s, but the row is not ticked: play ▶ Original and ▶ Aligned and tick it if the move is right. |
| Confirmed by speech | A large move that speech-to-text heard starting where the aligner put it - ticked. Also used when the neighbours overruled the aligner but the speech sided with the aligner. |
| Heard where it was | Speech-to-text heard the line where it already was, not where the aligner moved it. The aligner’s time codes are offered unticked. |
| Moved with the sync | The subtitle was synced first, and the aligner left this line where the sync put it - a line with no speech, one already in place after the sync, or one the aligner could not place. |
| Already in place | The aligner agrees with the current time codes. |
| No speech | Nothing to listen for - blank lines, [sound descriptions], (sighs), ♪. These lines are never moved. |
| Kept - shift too large | The start would have moved more than Max shift, so the line was left alone. |
| Kept - aligner failed | The aligner could not process this group of lines. |
With Check with speech-to-text on, the Heard column shows how much of each line speech-to-text heard. A low share means the text differs from what is said - a condensed or reworded line, a name it misheard - which is exactly where the aligner is most likely to be wrong, so those are the lines worth a listen.
Untick Apply on a row to keep that line’s original time codes; the green waveform updates at once.
Press OK to write the ticked changes to the subtitle (one undo step), or Cancel to discard.
A forced aligner places exactly the words it is given. Subtitles are often not exactly what is said: a condensed line may drop the “Okay, and, uh,” the speaker opens with, or the line before may trail off in a “you know” that was never subtitled. The aligner then puts the line confidently in the wrong place - starting late, after the dropped words, or early, on the stray ones - and does so identically every time, so it cannot be caught by running it twice.
With a small Max shift such a line is simply refused. With a larger one it would be moved wrong, so every move of more than half a second is checked against the lines round it:
Isolating the speech first does not help with this: the extra words are speech too. Speech-to-text can, though - see below.
The aligner is told the text and finds it; it cannot say when the text is not what is said. Speech-to-text is not told anything: it reports the words it hears, and when. With Check with speech-to-text on, the subtitle’s words are matched to the heard words (in order, and only near where the line is), which gives every line a Heard share and - when one of its first words was heard - the time the line really starts. That settles moves the neighbourhood check could not:
Speech-to-text word times are coarser than the aligner’s, so they only ever choose between two positions - the new time codes are always the aligner’s. A steady difference between the two (Parakeet marks words about 0.2 s earlier than the aligners do) is measured on the file and allowed for, and a line with less than half its words heard is not judged at all.
A subtitle can be out of sync in three ways, and often in all of them at once:
The aligner cannot fix these on its own, as it only looks near each line. So when Check with speech-to-text is on, the transcription is used first: distinctive words and word pairs that occur in both the subtitle and the transcription are paired up and kept only where they agree on the order. Every line with such pairs gives an offset, offsets that disagree with the lines round them are dropped as mismatches, and the rest are smoothed - following a drift, keeping a jump sharp. Lines in between get an offset from the lines round them. When that shows the subtitle is further out than Max shift somewhere, every line is moved by its offset and the aligner then fine-tunes from there; the summary starts with how far the subtitle was out at the start and at the end. A subtitle already within Max shift is not touched by this.
Because it matches words rather than speech and silence, a large offset cannot pile the lines up at the start of the film, as purely acoustic sync tools sometimes do. It needs the subtitle to be in the spoken language; if too few of its words are found, nothing is synced.
If speech-to-text hears less than 30% of the subtitle’s words, the status line asks whether the subtitle is in the spoken language: a translation cannot be aligned - neither the aligner nor speech-to-text can find its words in the audio.
Run Beautify time codes afterwards to snap the result to frames and shot changes.