Burn Subtitles into Video

Hardcode SRT or VTT subtitles with ffmpeg, without installing anything.

No uploadNo sign-upNo watermark
Video frame with burned-in subtitles produced by the tool
VideoChoose a file
SubtitlesAdd or type cues
StyleMake it yours
Video

Tested up to a 20-minute 1080p video (1.2 GB) in desktop Chrome. Processing takes about half the video's length for 1080p. Phones: keep to short clips.

Subtitles

Style

Add a video

How to burn Subtitles into Video

  1. Upload your MP4 or MOV video.
  2. Upload the SRT or VTT subtitle file.
  3. Set the font size, colour, outline or box, and top or bottom position.
  4. Enter a time offset in seconds if the subtitles are early or late.
  5. Press Burn subtitles and download the MP4.

Hardcode SRT or VTT subtitles into a video without installing ffmpeg or HandBrake. The same ffmpeg subtitles filter runs here in your browser, with a style editor and a timing offset instead of command-line flags.

Same result as ffmpeg -vf subtitles

On the command line you would run something like ffmpeg -i video.mp4 -vf subtitles=subs.srt -c:a copy out.mp4. This page runs that same filter (libass) in WebAssembly, and turns the style options into a form, so you do not have to write force_style strings.

It also handles details that often trip people up: rotated phone videos, odd frame sizes that x264 rejects, and audio codecs that cannot go into an MP4.

Burn vs. soft subtitles

Burned (hard) subtitles are part of the picture: always visible, work everywhere, cannot be switched off. Soft subtitles are a separate track: switchable, but many players and every social app ignore them. For social media and sharing, burn them.

What this tool does not do

It does not create subtitles. It never listens to your audio, so you need an SRT or VTT file, or you type the lines yourself.

It does not read ASS or SSA files. Korean, Arabic, Hebrew, Thai and Indic scripts are not supported and would show as empty boxes.

It is slower than a desktop app. A 20-minute 1080p video took about 10 minutes in desktop Chrome, and 4K is slower again. On a phone, keep to short clips.

It cannot undo the burn. The subtitles become part of the picture, so keep your original video if you may want to change them later.

Who it is for

People who already have an SRT or VTT file and need it permanently on the video: clips for Instagram, TikTok, Reels or Shorts, lecture and meeting recordings, translated videos, and anything that will be played somewhere that ignores subtitle tracks.

It is also a fit when you cannot or do not want to install ffmpeg or HandBrake, or when the video is private and should not be uploaded to someone else's server.

Getting a better result

Check the timing in the live preview before you burn. If the lines are early or late, enter a time offset in seconds: a positive number delays every line, a negative number shows them earlier.

On busy or bright footage use the Boxed or News preset, which put the text on a dark bar. On plain footage the Classic outline is cleaner.

Keep each line short, ideally under two lines on screen. The page warns you if the subtitle file does not match the video, for example if the first line starts after the video ends.

Tested limits

Measured in desktop Chrome on a recent Mac: a 20-minute 1080p video (1.2 GB) worked and took about 10 minutes; 1080p runs at roughly 2× real time and 720p about 4×. 4K works but is slow (a 30-second 4K clip took under 3 minutes). Phones have much less memory than computers: short clips of a few minutes are fine, long or 4K videos may fail. Files above 2 GB are not accepted.

FAQ

Is this faster than HandBrake or VLC?

No, a desktop app using all your CPU cores and hardware encoders is faster, especially for long videos. This page is for when you do not want to install anything, or are on a computer or phone where you cannot.

Is my video uploaded anywhere?

No. The video is processed by ffmpeg compiled to WebAssembly, running inside your browser tab. The file is never sent to a server, so it stays private and there is no upload wait. The only downloads are the page itself and the video engine (about 9 MB compressed, from the jsDelivr CDN).

Does the site use analytics or cookies?

Yes, basic usage analytics through Google Analytics 4. It records page views and anonymous steps, such as which style preset was chosen, ranges like video resolution, and whether a burn succeeded. It never receives your video, your subtitle text or any file name. The site is set up so that analytics cookies are not set for visitors in the European Economic Area, the United Kingdom and Switzerland. Elsewhere, Google Analytics may set cookies.

Can I change how the subtitles look?

Yes. Pick one of nine presets (Classic, Boxed, Bold yellow, Social, Pop, Minimal, Cinema, News, Karaoke) and adjust size, text colour, outline or box, and top or bottom position. A live preview on top of your video shows the result before you burn anything.

My subtitles are early or late. Can I fix the timing?

Yes. Enter a time offset in seconds under Subtitles: a positive number delays every line, a negative number shows them earlier. The page also warns you when the subtitle file and the video do not match, for example when the first line starts after the video ends.

How big can the video be?

Measured in desktop Chrome on a recent Mac: a 20-minute 1080p video (1.2 GB) worked and took about 10 minutes; 1080p runs at roughly 2× real time and 720p about 4×. 4K works but is slow (a 30-second 4K clip took under 3 minutes). Phones have much less memory than computers: short clips of a few minutes are fine, long or 4K videos may fail. Files above 2 GB are not accepted.

Which subtitle and video formats work?

Subtitles: SRT (.srt) and WebVTT (.vtt). You can also type subtitles directly on the page. Video: MP4 and MOV were tested, including H.264 and HEVC phone recordings; WebM and MKV are accepted too. The result is always an H.264 MP4 with AAC or the original audio, the format iPhone, Android, Instagram, TikTok and YouTube all accept.

Which languages are supported?

Latin, Greek and Cyrillic scripts (English, Spanish, French, German, Portuguese, Italian, Polish, Turkish, Russian, Ukrainian, Greek and more) work out of the box. Simplified Chinese, Traditional Chinese and Japanese also work: the page downloads an extra 8 MB font the first time your subtitles contain those characters. Korean, Arabic, Hebrew, Thai and Indic scripts are not supported yet and would show as empty boxes.