How to convert subtitles for Vimeo
TL;DR — Convert subtitles to WebVTT for Vimeo embeds. Free browser tool handles SRT and ASS formats with no upload required.
Related tool
Vimeo Subtitle Converter
Vimeo embed workflows are browser playback workflows, so WebVTT (VTT) is usually the safest caption delivery format. Vimeo accepts both SRT and VTT uploads, but VTT is the native format for browser-based video players. Converting to VTT ensures captions work reliably across all browsers and Vimeo embed configurations.
Quick answer
Use the Vimeo Subtitle Converter to create VTT output from SRT or ASS subtitle input before using captions in a Vimeo embed workflow. The output is WebVTT, which is easier to test and validate for web playback.
When to use this workflow
Use this workflow when:
- Your source captions are SRT from an editor or collaborator: Transcription tools, translators, or clients often send SRT files
- Your source captions are ASS from a styled editing workflow: Aegisub exports with advanced styling that browsers don’t support
- Captions need to be prepared for a browser embed: Vimeo embeds run in the browser and expect VTT format
- You want a web-ready copy separate from the editing source: Keep SRT/ASS for editing, VTT for browser delivery
Keep the original source file if future caption edits are likely.
Why Vimeo prefers VTT
Vimeo accepts both SRT and VTT uploads, but VTT is the native format. For a format comparison, see best subtitle format for Vimeo embeds.
- Browser-native support: VTT is the W3C standard for HTML5 video captions
- Vimeo’s player uses HTML5 video: Under the hood, Vimeo’s player expects VTT format
- Better for external hosting: If you host captions on your own server (not uploaded to Vimeo), you must use VTT
- Cross-browser compatibility: VTT works consistently across Chrome, Firefox, Safari, and Edge
Step-by-step workflow
1. Start with the subtitle file you already have
Before converting, identify your source format:
- SRT: Most common, exported by transcription tools and subtitle editors
- ASS: Advanced styling, used in anime fansubs and Aegisub
- VTT: Already web-ready, but may need validation or cleanup
2. Convert to VTT
- Open the Vimeo Subtitle Converter
- Upload or paste SRT, VTT, or ASS subtitle content
- Click Convert to VTT
- The tool automatically:
- Adds the
WEBVTTheader (if missing) - Converts timestamp format to VTT style (dots instead of commas)
- Removes SRT cue numbers (optional in VTT)
- Strips ASS styling and override tags
- Preserves subtitle text and timing
- Adds the
3. Review the VTT output
Check the converted VTT file:
- ✅ Header: First line is
WEBVTT(uppercase) - ✅ Timestamps: Use dots (
00:00:01.000), not commas (00:00:01,000) - ✅ Text: Subtitle text is intact and readable
- ✅ Encoding: Non-English characters display correctly
4. Download the VTT file
Click Download VTT to save the converted file. The file is ready to upload to Vimeo or host externally.
5. Upload to Vimeo (recommended)
- Go to your video settings on Vimeo
- Click “Distribution” → “Subtitles”
- Upload the VTT file
- Select the language
- Save changes
6. Test captions in the Vimeo embed
Embed the video on your website and verify:
- Captions appear in the Vimeo player subtitle menu
- Text displays at the correct times
- No timing drift or sync issues
- Captions work across different browsers (Chrome, Firefox, Safari, Edge)
What changes during conversion
From SRT to VTT:
- ✅ Header added:
WEBVTTline added at the top - ✅ Timestamps converted: Commas → dots (
00:00:01,000→00:00:01.000) - ✅ Cue numbers removed: Sequential numbers (
1,2,3) are optional in VTT - ✅ Text preserved: Subtitle text and timing stay the same
From ASS to VTT:
- ✅ Header added:
WEBVTTline added at the top - ✅ Timestamps converted: ASS format → VTT dot-based format
- ✅ Text preserved: Subtitle text stays the same
- ✅ Line breaks preserved: ASS
\N→ actual line breaks - ❌ Styling removed: Colors, fonts, borders, shadows are stripped
- ❌ Positioning lost: All subtitles appear in the default position
- ❌ Override tags removed:
{\an8},{\c&HFF0000&},{\pos(x,y)}, etc. are deleted
The output is ready for VTT validation.
Common mistakes
Treating embed playback like offline review
A subtitle file that is convenient for editing is not always the safest file for browser playback. SRT is great for editing, but VTT is better for browser delivery.
Fix: Keep SRT for editing, convert to VTT for Vimeo embeds.
Debugging the embed first
Check the caption file before changing the embed setup. Missing headers and wrong timestamp punctuation are common file-level causes.
Fix: Validate the VTT file with the WebVTT Validator before debugging the embed. See how to validate WebVTT files for a detailed walkthrough.
Deleting the source file
Keep the SRT or ASS source file until the final captions have been tested in the embed workflow. You may need to make edits later.
Fix: Use a clear naming convention (e.g., video-captions-source.srt and video-captions-vimeo.vtt).
Renaming instead of converting
Changing .srt to .vtt leaves SRT timing and missing WebVTT structure behind. Browsers reject renamed files.
Fix: Use the Vimeo Subtitle Converter to properly convert the file.
Using the wrong MIME type (for external hosting)
If you host captions on your own server (not uploaded to Vimeo), the server must send Content-Type: text/vtt. Otherwise, the browser refuses to parse the file.
Fix: Configure the server to send Content-Type: text/vtt for .vtt files. See How to fix VTT MIME type for HTML5 video for server-specific instructions.
Forgetting CORS headers (for external hosting)
If you host captions on your own server, the server must send Access-Control-Allow-Origin: https://player.vimeo.com headers, or the browser blocks the request.
Fix: Configure CORS on your server to allow requests from https://player.vimeo.com.
Troubleshooting scenarios
Scenario 1: Captions don’t appear in Vimeo embed
Possible causes:
- VTT file is malformed (missing
WEBVTTheader, wrong timestamp format) - Captions not uploaded to Vimeo (or upload failed)
- Captions uploaded but not enabled in video settings
- CORS headers missing (if hosting externally)
- Server sends wrong MIME type (if hosting externally)
Fix:
- Validate the VTT file with the WebVTT Validator
- Check Vimeo video settings → Distribution → Subtitles to verify captions are uploaded and enabled
- If hosting externally, check the browser console for CORS errors
- If hosting externally, verify the server sends
Content-Type: text/vtt
For MIME type issues, see how to fix VTT MIME type for HTML5 video. For a broader troubleshooting walkthrough, see Why Vimeo captions are not showing.
Scenario 2: Captions appear but text is garbled
Cause: Wrong text encoding (e.g., Windows-1252 instead of UTF-8).
Fix: Re-save the source file as UTF-8 before converting, or use the Subtitle Encoding Fixer after conversion.
Scenario 3: Captions work on desktop but not mobile
Cause: Mobile browsers (especially iOS Safari) are stricter about MIME types and CORS than desktop browsers.
Fix:
- Confirm
Content-Type: text/vtt(if hosting externally) - Verify CORS headers (if hosting externally)
- Test on actual devices, not just desktop emulators
Scenario 4: Timestamps are off by a few seconds
Cause: Rounding errors during conversion, or the original file had precision issues.
Fix: Use the Subtitle Time Shifter to adjust timing after conversion.
Scenario 5: Captions uploaded to Vimeo but not showing in embed
Cause: Captions are uploaded but not enabled in video settings, or the embed code doesn’t include captions.
Fix:
- Go to Vimeo video settings → Distribution → Subtitles
- Verify captions are enabled
- Regenerate the embed code if needed
Frequently asked questions
Does Vimeo support SRT natively?
Yes. Vimeo accepts SRT uploads and automatically converts them to VTT for playback. However, if you’re hosting captions externally (not uploaded to Vimeo), you must use VTT.
What’s the difference between VTT and SRT?
| Difference | SRT | VTT |
|---|---|---|
| Header | None | WEBVTT required |
| Timestamps | 00:00:01,000 (comma) | 00:00:01.000 (dot) |
| Browser support | ❌ Not native | ✅ Native |
| Vimeo upload | ✅ Accepted | ✅ Native |
| External hosting | ❌ Not supported | ✅ Supported |
Can I style VTT captions in Vimeo embeds?
Vimeo provides its own caption styling options in the video settings. You can customize font, color, background, size, and position. Custom CSS styling is not supported in Vimeo embeds.
How do I add multiple subtitle languages to Vimeo?
Upload multiple VTT files to Vimeo, one for each language. Vimeo automatically detects all tracks and displays them in the captions menu.
What if my VTT file has a BOM (Byte Order Mark)?
Some text editors (Notepad on Windows) save UTF-8 files with a BOM - 3 invisible bytes at the start. The WebVTT parser sees this as garbage before WEBVTT and rejects the file.
Fix: Re-save the file as “UTF-8 without BOM” in your editor.
Can I use VTT for live streaming on Vimeo?
Yes. Vimeo supports live captions via WebVTT for live streaming events.
Does Vimeo support DFXP/TTML?
Yes, but VTT is more widely supported and easier to work with. DFXP/TTML is XML-based and more complex.
What’s the best way to serve VTT files externally?
- MIME type: Configure your server to send
Content-Type: text/vtt - CORS: Send
Access-Control-Allow-Origin: https://player.vimeo.comheaders - Encoding: Always use UTF-8 encoding
Related guides
- Best subtitle format for Vimeo embeds
- How to convert subtitle files for web players
- How to convert SRT to VTT for HTML5 video
- How to convert ASS to VTT for web players
- How to fix VTT MIME type for HTML5 video
- Why Vimeo captions are not showing
- Why subtitles do not show in HTML5 video
Related tools
Use the Vimeo Subtitle Converter
Convert SRT or ASS subtitles to WebVTT for Vimeo embeds, web playback, and caption delivery. No signup, no upload, and everything runs locally in the browser.
Open Vimeo converter