How to burn captions into a video for x / twitter
- Step 1Load your X clip — Drop or browse to the video. Accepted containers: MP4, MOV, MKV, WebM, AVI, M4V, TS. X favours 16:9 or 1:1; the burner accepts any aspect ratio and measures caption position from the bottom edge.
- Step 2Pick the caption file — In the Subtitle file panel, click Pick and choose your
.srtor.vtt. Format is read from the extension. The file stays local in the in-browser FFmpeg filesystem — nothing is uploaded. - Step 3Choose a style preset — Set Style preset. For the timeline, youtube gives a boxed caption strip that reads over bright footage; bold maximises contrast. Each preset applies a fixed ASS
force_style(font, size, colour, outline, box, bottom margin) to every cue. - Step 4Run the burn — Click Run Burn Subs. FFmpeg paints the cues into each frame, re-encodes the video with libx264 (
-preset medium -crf 20), and copies the audio. The render dashboard tracks progress. - Step 5Download the MP4 — The output is always an MP4 (H.264 + copied audio) — exactly what X ingests. Download it from the result card.
- Step 6Post and check muted autoplay — Upload to X and scroll your own timeline to confirm the captions read on muted autoplay and clear the play/duration controls. If a preset's text sits awkwardly, switch presets — their bottom margins differ (subtle 30px up to tiktok 80px).
Which preset reads best on the X timeline
The X feed mixes bright and dark footage, so a backing box or thick outline matters more than on a controlled vertical canvas. All presets are bottom-centre (Alignment=2).
| Preset | Style | Legibility over busy footage | Notes |
|---|---|---|---|
| youtube | Roboto 22 on semi-transparent black box | Best — box guarantees contrast | Recommended default for the timeline |
| bold | Impact 36, 4px outline + shadow | High — heavy outline | Punchy hook captions |
| tiktok | Arial 28 bold, 3px outline | Good | Higher margin (80px) if cross-posting vertical |
| subtle | Arial 18 grey, 1px outline | Lower — can wash out on bright shots | Clean footage only |
| default | FFmpeg default white, thin outline | Lowest | Use only if SRT is pre-styled |
Encode and limits
Verified against the processor and tier-limits config.
| Property | Value |
|---|---|
| Input video | MP4, MOV, MKV, WebM, AVI, M4V, TS |
| Caption input | .srt or .vtt (by extension) |
| Output | MP4 · H.264 (libx264, CRF 20, preset medium) |
| Audio | Copied (-c:a copy) |
| Styling | 5 presets — no custom font/colour/position |
| Free / Pro / Pro + Media | 1 GB / 10 GB / 100 GB per file; no duration cap |
Cookbook
Captioning recipes for the muted-autoplay X timeline. The controls are a file picker and the preset dropdown — these show what each produces and where the limits are.
Boxed captions for the timeline (youtube preset)
The most reliable timeline look: a semi-transparent black box keeps text readable over whatever footage scrolls behind it.
Options:
Subtitle file = clip.srt
Style preset = YOUTUBE
FFmpeg force_style:
FontName=Roboto,FontSize=22,PrimaryColour=&H00FFFFFF,
BackColour=&H80000000,BorderStyle=4,Outline=0,Shadow=0,
Alignment=2,MarginV=40
Result: white captions on a translucent box,
audio copied untouched.High-contrast hook with the bold preset
When you need the first caption to stop the scroll on a bright clip, the bold preset's Impact + thick outline cuts through.
Options: Style preset = BOLD FFmpeg force_style: FontName=Impact,FontSize=36,Outline=4,Shadow=2,Bold=1, Alignment=2,MarginV=60 Result: large white captions with a heavy black outline.
Pre-encode to a clean master before X re-compresses
X re-encodes every upload. Burning at CRF 20 hands it clean source pixels, so its compression starts from quality rather than from an already-soft file.
1. Load clip.mp4 (your best-quality export) 2. Pick clip.srt, preset YOUTUBE 3. Run -> clip-out.mp4 (libx264 CRF 20) 4. Upload clip-out.mp4 to X Why: X's own transcode looks better starting from CRF 20.
Captions overlap the X player controls
Symptom: text sits behind the play button / duration. The lever in this tool is the preset margin.
Problem: SUBTLE -> MarginV=30 -> behind controls. Fix: switch preset to BOLD (60px) or TIKTOK (80px). No free-form vertical offset exists in this tool.
Caption a square clip for the feed
Many X videos perform well as 1:1. Format to square first, then burn so captions sit correctly in the square frame.
Pipeline:
1. /video-tools/twitter-x-formatter (X spec)
or /video-tools/auto-reframe -> 1:1
2. Verify SRT timing on the formatted clip
3. Subtitle Burner -> preset YOUTUBE -> RunEdge cases and what actually happens
Soft subtitle track dropped by X
Stripped on uploadA subtitle stream muxed into the MP4 is unreliable on X — the platform's transcode commonly drops it, leaving timeline viewers with no captions. Burning into the frame, as this tool does, is what survives.
Captions invisible on bright footage
Pick a boxed/outlined presetThe subtle and default presets can wash out over bright shots. Use youtube (backing box) or bold (thick outline) so text stays legible regardless of the scene behind it.
No subtitle file selected
Error · blockedAn empty subtitle slot throws Pick an .srt or .vtt file. Both a video and a caption file are required; there's no auto-transcription.
Captions clash with the X player UI
Pick a higher presetLower-margin presets can collide with X's play/duration controls. The margins run subtle 30px, youtube 40px, bold 60px, tiktok 80px. Choose one that clears the controls; there's no manual position slider.
SRT out of sync with speech
By design — rendered as-isCues burn at their SRT timestamps; the tool does not re-time. Fix the SRT timing and re-burn for correct sync.
Clip has no audio
Preserved-c:a copy has nothing to copy on a silent clip; the burn still succeeds and outputs a video-only MP4.
File over the Free 1 GB cap
1 GB capFree tier allows 1 GB per file; Pro 10 GB; Pro + Media 100 GB (streamed). There's no duration limit — only file size and batch count.
Output is MP4 regardless of source container
By designThe burn always muxes to MP4 with H.264 video and copied audio — which is precisely what X expects. No post-step is needed for X; for another container use video-transcoder.
Frequently asked questions
Why do captions matter so much on X?
Timeline videos autoplay muted, so the opening seconds have to communicate without sound. Burned captions read on muted autoplay and survive X's upload transcode, where soft subtitle tracks are routinely dropped.
Will burned captions survive X's re-encode?
Yes. They're painted into the frame, so X re-compresses them along with the rest of the video but cannot remove them. Soft subtitle tracks, by contrast, are frequently stripped on upload.
Which preset reads best in the timeline?
The youtube preset — white Roboto on a semi-transparent black box — stays legible over the bright, mixed footage typical of the feed. Bold is a strong alternative when you want maximum punch.
Can I set a custom font, colour, or position?
No. You choose from five presets (default, tiktok, youtube, subtle, bold), each with fixed font, size, colour, outline, and bottom margin. There's no free-form styling UI; the preset's margin is the only position control.
Is my audio re-encoded?
No. Audio is stream-copied with -c:a copy, so the soundtrack is bit-for-bit identical for viewers who unmute. Only the video is re-encoded to paint in the captions.
Is anything uploaded during processing?
No. The burn runs entirely in your browser via FFmpeg.wasm. Your video and caption file stay on your machine and the finished MP4 is handed straight back to you.
What's the output format?
Always an MP4 with H.264 video (libx264, CRF 20) and copied audio — exactly what X ingests, so no further conversion is needed before upload.
Does it accept VTT as well as SRT?
Yes. Files ending in .vtt are read as WebVTT; everything else is parsed as SRT. Keep the correct extension on your caption file.
What if captions overlap X's player controls?
Switch to a preset with a higher bottom margin — bold (60px) or tiktok (80px) clear the controls better than subtle (30px) or youtube (40px). There's no manual vertical offset, but the preset margins cover the common cases.
How large a video can I caption?
Free tier handles up to 1 GB per file, one at a time; Pro up to 10 GB; Pro + Media up to 100 GB with streaming. There's no length cap — only file size and batch count.
Should I format to X's spec before burning?
You can. Use twitter-x-formatter or auto-reframe to hit a 16:9 or 1:1 frame first, then burn so the caption margin is measured against the final aspect ratio.
How do I get an SRT to start from?
Extract an existing track to SRT with subtitle-extractor, edit it, then burn it here. For a GIF version of a captioned clip, use video-to-gif.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.