FastTool

Practical guide · SRT and WebVTT

Check subtitle overlaps and convert SRT or VTT.

Find overlapping captions, move every caption earlier or later by a chosen amount, and choose the right subtitle download. Follow these fictional examples in the same checker used for your own files—without uploading your subtitles.

Keep your video nearbyThe checker reads subtitle text and timestamps. It cannot hear speech, inspect the picture, judge translation or certify accessibility. A file can pass these checks and still be out of sync with your video.

Workflow updated October 18, 2026. Original editorial sources were reviewed August 9; the new shift section lists its own format reference. No advertising.

Try the overlap example before choosing a file

  1. Open the Subtitle Timing Checker, choose Find an overlap, then Analyze subtitles. The example is fictional.
  2. Inspect cue 2: it starts at 2.5 seconds while cue 1 is still visible until 3 seconds. Cue 3 also ends at 10.8 seconds, beyond the example's declared 10-second clip.
  3. Under Review and edit every caption, select cue 2. For this fictional example, set its start to 00:00:03.080, then choose Apply caption and recheck. The 500 ms overlap becomes an 80 ms gap. Cue 3 still needs review: fixing one caption does not silently fix the rest. With real subtitles, use your video—not this example—as the timing reference.

For a different boundary, Review styled WebVTT includes styling and dense text that require player review. A missing or unsupported check stays uncertain; it is not silently treated as a pass.

1. Start with the file and its video duration

Keep your original

Paste text or choose one UTF-8 SRT or VTT file, up to 5 MiB and 10,000 cues. Keep an unchanged copy. The checker never needs your video or an account.

Enter the clip length

Enter its exact duration in seconds when you know it. This lets the checker find a caption ending after the video. Leaving it blank does not make a zero-length clip; the boundary check remains unverified.

Choose a review profile

Start with Balanced review. Concise, Relaxed and Custom change the reading-speed, duration, gap and line-length thresholds. These are FastTool review heuristics, not universal rules or broadcaster approval.

Analyze, then inspect

Select Analyze subtitles. Read the first findings and the affected cues, not just the overall status. Use your actual video to decide how timestamps or line breaks should change.

2. Read timing and reading-speed warnings

  1. Overlap: two cues share time on screen.
    In the example, cue 1 ends at 3.000 seconds and cue 2 starts at 2.500 seconds: they overlap for 0.500 seconds. Check the speech and neighboring cues before editing. A format conversion does not remove this overlap.
  2. Out of media: a cue ends after the clip.
    The example's final cue ends at 10.800 seconds but the declared video lasts 10.000 seconds. Check whether the duration is wrong or the caption needs editing. Do not simply shorten it without reviewing the video.
  3. Reading speed: too much text for the available time.
    A caption with 40 counted characters in 2 seconds has a reading speed of 20 characters per second. This is an estimate, not a reading-comprehension guarantee. Review wording, line breaks and duration together; do not delete meaningful dialogue to silence a warning.
  4. Unsupported styling: review the player.
    WebVTT positioning, regions or styling can affect how captions appear. Text checks do not render them. Keep the original and test it in your intended player.

3. Treat the verdict as a control, not a quality score

PASS

The supported syntax, declared boundary and selected FastTool profile produced no blocking or review finding. It does not prove word accuracy, audio sync, speaker attribution, visual placement or target-player rendering.

BLOCK

Do not deliver the normalized preview. Select the affected caption, correct the timestamps against your video and choose Apply caption and recheck. Review neighboring cues and any remaining findings.

INDETERMINATE

Do not relabel uncertainty as PASS. Inspect the unsupported surface or heuristic flag against the media and the actual delivery specification; record the reviewer decision outside the engine result.

Precedence

BLOCK > INDETERMINATE > PASS. A style or reading-speed review cannot hide an overlap or out-of-media blocker.

Edit one caption without rewriting the rest

  1. Use Find caption text or number to reach a cue in a long file, or enable Only captions with findings. Search covers the whole file, not just the visible page.
  2. Choose a caption. Edit its start, end or text. While a draft is open, downloads are locked so you cannot mistake an older result for the edit.
  3. Choose Apply caption and recheck. The tool changes only the selected cue in the source, then reruns checks for the entire file—including neighboring overlaps. It does not invent dialogue or shift other captions.
  4. Use Discard draft before applying, or Undo last applied edit to restore the preceding source and recheck it. Undo is one step, not a saved project history.

Invalid timestamps, an end before the start, blank lines that would split the cue, and edits beyond the declared video length are rejected. WebVTT IDs, layout settings, NOTE, STYLE and REGION blocks are kept; unsupported styling still requires player review. Inline WebVTT timestamps must remain compatible with the edited cue interval.

All captions are early or late: move the whole file

A constant offset means the first, middle and last captions are all wrong by approximately the same amount. If captions become progressively further out of sync, one offset will not fix the drift. Check that your subtitle and video are the same edit, and use a dedicated subtitle editor when timing needs to be stretched or aligned to speech.

  1. Analyze your SRT or WebVTT file, then open Shift all captions.
  2. If captions appear before the matching speech, choose Later. If they appear after it, choose Earlier. Enter the positive number of seconds, with up to three decimal places.
  3. Select Preview shift. Check the affected caption count and the before/after times before applying. The preview does not change your source.
  4. Choose Apply shift and recheck. Each start and end moves by the same amount; caption durations, spacing and existing overlaps are not silently changed.
  5. Use Undo last applied edit to restore the previous working copy. Download the current result and test it with your video.

Example: captions arrive 1.250 seconds late

Choose Earlier · 1.250 seconds. A caption at 00:00:05.000–00:00:07.000 becomes 00:00:03.750–00:00:05.750. Its two-second reading time stays intact. This example demonstrates the calculation, not the correct offset for your video.

Example: a shift would start before zero

A first caption at 0.800 seconds cannot move 1.250 seconds earlier without a negative start. The entire shift is rejected. No cue is dropped, shortened or clamped to zero. Check the chosen direction and the media edit before trying again.

Known video duration is checked too: a shift ending beyond it is rejected. Valid inline WebVTT timestamps move with their cue; IDs, dialogue, layout settings, comments, styles and regions are retained. Files with X-TIMESTAMP-MAP are not shifted because their external media-clock mapping needs a different workflow. This is manual timing adjustment, not automatic speech synchronization.

Shift and check a subtitle file

Whole-file shift workflow added October 18, 2026. WebVTT timing structure was checked against the W3C specification; this tool's bounded parser does not implement every possible WebVTT feature.

4. Download SRT or VTT without hiding unresolved issues

  1. For SRT to VTT, load an SRT file and analyze it. Choose Download VTT when the conversion is available.
  2. For VTT to SRT, try Try VTT to SRT, then analyze. This plain example has two cues: 0–2 seconds and 2.4–4.8 seconds. Download SRT preserves their text, timing and order.
  3. For the original format, choose its normalized download. Normalizing fixes supported file formatting—not speech timing, dialogue or translation.
  4. Buttons labelled review copy are for inspection, not publication. Resolve the findings and rerun; changing the input or settings locks previous downloads.
  5. Play the downloaded subtitle with the actual video in the intended player. Check early, middle and late cues for drift, and review every flagged location.
Why is VTT to SRT unavailable for my file?

WebVTT can contain information this tool cannot preserve in SRT: cue IDs, NOTE comments, header metadata, STYLE rules, REGION definitions, cue markup and positioning settings. The result tells you what was found. Keep the WebVTT file rather than deleting meaningful information to force conversion. Even plain files must pass a second parsing check that compares cue text, timing and order.

Do I need the CSV, JSON or verification receipt?

Not for ordinary playback. Your subtitle files are the primary downloads. Open Optional reports, file hashes and verification only when you need a cue-by-cue review log or to identify exact file bytes. Hashes do not prove that words are accurate, synchronized or approved by a platform.

Wrong approaches that create false confidence

Using PASS as audio-sync proof

The engine has no waveform or frame context. A syntactically tidy cue can still begin on the wrong word or remain across the wrong shot.

Calling one platform rule universal

Netflix and BBC references help reviewers reason about editorial choices; they are not silently imported as universal policy, and FastTool does not certify conformance to either.

Flattening unsupported WebVTT

Removing cue IDs, regions, settings or style merely to obtain a conversion can erase intended semantics. Keep the original and route the file to a target-player review.

Delivering a screenshot

A screenshot cannot prove the analyzed input, exported bytes or review profile. Deliver the files, hashes and receipt together.

Subtitle handoff checklist

Historical test evidence

The archive below records the August 9 engine, not the current cue editor. Do not use its old hashes as a certificate for a new download. Current downloads carry the engine identity of the version that produced them.

Inspect the August 9, 2026 benchmark archive
shasum -a 256 app/fixtures/subtitle-qa-v1/fixtures.mjs \
  app/js/renderers/subtitle-qa-core-20260809.js \
  app/js/renderers/subtitle-qa-20260809.js
node scripts/subtitle_qa_unit_20260809.mjs
node scripts/subtitle_qa_browser_20260809.mjs
node scripts/subtitle_qa_independent_redteam_20260809.mjs
  • Tool page63b9ba1801c9f719e1ec76e17b3640a149520daa1b5286d004f32855c40413d6
  • Engine core478b13db5ea9551a3d4ea8c16853b9b443477166831ba56f1745b8e815a6e87f
  • Renderera48e2b82e59e6c53cdcc13ebc202738d534354eba6ee58a847fa2a4822ffb8fb
  • Engine manifeste7424750d6c2376baad7472d2074c5a74294458a9717883e44940ede77246604
  • Fixture module8e80ae62e039a57fcd3a5058bd375e73636b46d1c268e2cec582eb6c250ef967
  • Unit report · 26/26 checks, 70 adversarial casesd33b5834801592af1fee57c9ea1627aed6db0547e364e1aab95dd02eb1490774
  • Browser report · 24 cases, 445 assertions2a160766fdcfc53fad0d23874f67e457edcfec4509444a449468c4be59eb375b
  • Independent red-team · 20 attacks, 0 false PASS, 0 blockersb37044634d5b88a50016a05c3e2a30e843f46f7fd2eb22ad722d13775674cc5b

Paths and counts describe the 2026-08-09 checked-in run. Verify the current bytes before relying on them; a changed source invalidates this manifest.

Source hierarchy, reviewed 2026-08-09

Privacy, limits and corrections

Subtitle bytes are parsed in the active browser tab. This workflow page does not accept a file. The linked tool states its own local processing boundary; normal static page assets and consented analytics can still make network requests, but raw subtitle text, filenames and hashes are not analytics fields.

Supported scope is UTF-8 SRT and WebVTT text, up to 5 MiB, 10,000 cues, 120,000 lines, 16,384 code points per line and 65,536 code points per cue. There is no OCR, speech recognition, translation review, audio alignment, video/frame inspection, legal advice, WCAG audit or Netflix/BBC certification.

Verify a produced packet with the Receipt Verifier. Report a material error to corrections@fasttool.app with this URL, the fixture or artifact hash, observed result and a reproducible correction.