Google Analytics helps us understand which tools you use and which actions work. Your files and entered text stay out of analytics.

How to add subtitles to a video

Choose what your audience needs first: captions they can switch off, or captions that are always visible.

Free toolSubtitle EditorEdit SRT and VTT timings, preview styled captions and burn them into a short video. Your files stay in your browser.Open the caption studio

Choose a subtitle file or permanent captions

Use a separate subtitle file when your player or publishing platform accepts caption tracks. Burn captions into the picture when the destination will not keep that track.

MethodWhat travels with the videoTradeoff
Separate SRT or VTTText and timings, supplied alongside the videoCan be corrected and switched off. The destination controls appearance and must accept the file.
Embedded subtitle trackCaptions inside the video containerPlayer support depends on container and subtitle codec. Embedding does not make captions permanent.
Burned-in captionsWords drawn directly into video framesAppearance stays visible. Re-encoding changes the video, and you cannot switch captions off.

Start with a timed caption file

A transcript needs timestamps before it becomes subtitles. Each cue needs a start, an end and the words shown during that interval.

This SRT example shows a caption from 2.5 to 4 seconds. The timing line uses a comma before milliseconds.

1
00:00:02,500 --> 00:00:04,000
A second caption.

WebVTT begins with WEBVTT and uses a full stop before milliseconds. You can convert a plain-text caption track between these formats without changing its timings.

WEBVTT

00:00:02.500 --> 00:00:04.000
A second caption.

Fix early, late or drifting subtitles

This worked example was checked on 30 September 2026. We pasted two synthetic SRT cues, shifted them by 0.5 seconds, then copied WebVTT to verify the output.

A constant offset needs a time shift. Progressive drift needs different timings across the document.

A worked half-second correction

If speech starts at 3.000 seconds but the caption appears at 2.500, delay the caption by 0.500 seconds. Add the same amount to its end time so its duration stays unchanged.

ValueBeforeAfter +0.500 seconds
Start00:00:02.50000:00:03.000
End00:00:04.00000:00:04.500
Duration1.500 seconds1.500 seconds

In floi, use Fix subtitle sync, enter 0.5, then choose Shift all. Check a cue near the start and another near the end before exporting.

When a global shift is the wrong repair

If the first caption matches but later captions become increasingly late, a fixed shift cannot fix both points. Check whether your video was trimmed, sped up or exported at a different duration.

Match subtitles to the final video. For a long document with drift, use a desktop subtitle editor with retiming controls.

Check readability before styling

Give people enough time to read each caption. Shorter wording or a longer cue can help more than a larger font.

  • Check captions against speech, including the first and final words.
  • Use deliberate line breaks instead of one long line.
  • Review overlaps. Two cues shown together may cover too much of the picture.
  • Check a bright frame and a dark frame for contrast.
  • Keep text away from important faces and platform interface overlays.

The floi warnings use 20 non-space characters per second and 42 characters per line as review thresholds. They are editor heuristics, not a guarantee that every audience can read the result.

Choose a browser or desktop export method

Use the browser studio for short clips when you want local editing and a visible preview. Use a desktop encoder for long videos or formats your browser cannot handle.

MethodUseful forLimits to check
floi subtitle editorSRT/VTT edits, styled preview, short captioned MP4 or WebM exportsFive-minute burn limit; 500 MB input; HDR refused; browser codecs vary.
OpenSubsBroader local caption workflow, including word effects and transcriptionIts processing engine and speech models add downloads. Test your input codec.
Subtitle EditorDetailed cue timing, multiple tracks and waveform editingIts observed Save menu exports subtitle documents, rather than a captioned video.
HandBrakeLonger video encoding with subtitle burn-inInstall the desktop application and check source/output settings.
FFmpegRepeatable command-line burn-in and batch workflowsThe subtitles filter needs a build with libass. Encoder settings and fonts require attention.

Burn an SRT into an MP4 with FFmpeg

The subtitles filter draws captions into frames. This example encodes H.264 video and copies compatible audio.

ffmpeg -i input.mp4 -vf "subtitles=captions.srt" -c:v libx264 -crf 18 -c:a copy captioned.mp4

This is a command for your computer, not something the browser tool runs. If the source audio cannot be copied into MP4, choose a compatible audio encoder instead.

Keep the editable captions

Download SRT or VTT as well as the burned video. A future wording correction is easier with the caption document than with pixels already encoded into a movie.

Keep the source video too. Burning captions creates a new file and should never be your only copy of the original.

Frequently asked questions

Is embedding subtitles the same as burning them in?

No. An embedded subtitle track is still separate from the picture and may be switched off. Burned-in captions are pixels inside each frame. The words “hardcode” and “burn in” usually describe this permanent version.

Why does converting an SRT file not style the captions?

SRT mainly carries text and timings. Some players recognise limited formatting, but appearance is player-dependent. A plain WebVTT conversion does not recreate a styled caption design. Burn the captions into video when the visual design must travel with the picture.

↑↓ move↵ openesc close