Subtitle Converter

Seamlessly convert subtitles between SubRip (SRT) and WebVTT (VTT) formats. Preserve timestamps, text formatting, and cue ordering.

100% local conversion: All processing happens in your browser. Your subtitle data never leaves your device.

Why subtitle format matters: SRT vs WebVTT

SRT (SubRip Text) is the most widely used subtitle format, supported by virtually all media players, video editors, and streaming platforms. WebVTT (Web Video Text Tracks) is the modern HTML5 standard designed for web-based video, offering advanced features like styling, positioning, and metadata. Converting between them ensures compatibility: SRT for offline players and legacy software, VTT for web delivery, accessibility compliance, and modern HTML5 video players.

Key differences at a glance
  • Time format: SRT uses comma (00:00:01,000), VTT uses dot (00:00:01.000).
  • Header: VTT requires WEBVTT as first line; SRT has no mandatory header.
  • Styling: VTT supports CSS-like styling (<c>, <v>, <ruby>), SRT only basic formatting.
  • Use case: SRT is universal for downloads; VTT is mandatory for HTML5 <track> elements and major platforms like YouTube, Vimeo, and Netflix web player.

How to use this subtitle converter

  1. Paste your subtitle content (SRT or VTT) into the Input Subtitle box, or upload a .srt/.vtt file.
  2. Click Convert SRT → VTT or Convert VTT → SRT depending on your source format.
  3. The converted subtitle appears instantly in the output area. Use Copy Output to clipboard or Download Result to save the file.
  4. Statistics (number of cues, estimated total duration) help you verify conversion integrity.
Quick conversion example

SRT snippet:

1
00:00:02,500 --> 00:00:05,000
Welcome to the guide

becomes VTT:

WEBVTT

1
00:00:02.500 --> 00:00:05.000
Welcome to the guide

Note the header addition and comma → dot conversion. The converter preserves all text lines and cue ordering.

Advanced conversion logic & reliability

Our conversion engine uses a robust cue-parsing algorithm that respects multiline text, escaped characters, and common edge cases (Windows/Linux line breaks, extra blank lines, optional cue identifiers). For SRT to VTT, it adds the mandatory WEBVTT header, converts timecode commas to periods, and ensures that every cue block retains its text formatting. For VTT to SRT, it strips the header and any optional VTT metadata blocks (like STYLE or REGION), then converts timecode periods back to commas. The tool also handles cues without numbers, reindexes automatically, and preserves blank lines between cues for readability.

All operations are performed client-side with strict validation. If the input format is malformed, the tool provides clear error messages, suggesting corrections. The statistical module calculates total cues and the duration of the last timestamp minus the first start time to give you an approximate timeline length.

Subtitle format internals: a closer look

SRT (SubRip) specification notes: Each cue consists of a numeric identifier (optional), a timecode line with comma as decimal separator, and one or more lines of text. The standard allows for UTF-8 encoding with or without BOM. Timecodes are expected to be in HH:MM:SS,mmm format. Our parser correctly interprets both comma and dot separators during conversion, ensuring compatibility with various subtitle authoring tools.

WebVTT (W3C) details: The specification requires the file to start with WEBVTT (optionally followed by a space and a file description). Cue timestamps use a dot as the decimal separator. WebVTT supports cue settings (e.g., align:middle line:0%) and metadata blocks (STYLE, REGION, NOTE). This converter strips style and region blocks to produce clean SRT output, as SRT has no equivalent. When converting to VTT, only the essential header and cues are generated—cue settings are not preserved from SRT (since SRT has no such settings). This maintains compatibility with most players while keeping output clean.

Known limitations & transparency
  • VTT styling & metadata: Advanced WebVTT features like ::cue selectors, region definitions, and CSS styles are not preserved during conversion to SRT. The tool extracts only the plain text and timestamps. For VTT → SRT, style and region blocks are safely ignored.
  • SRT identifiers: The original numeric IDs in SRT are renumbered sequentially after conversion. If you rely on original cue numbering (e.g., for external references), we recommend keeping a backup.
  • Overlapping cues: Both SRT and VTT technically allow overlapping timestamps, but many players handle them inconsistently. The converter does not modify timing, so overlapping cues remain as-is.
  • File size: Very large subtitle files (over 10,000 cues) may cause slower performance due to browser memory limits. For professional workflows with massive subtitle files, consider splitting into smaller segments.
  • Character encoding: The tool assumes UTF-8 input. Files saved with other encodings (e.g., ANSI, Windows-1252) may display incorrectly; we recommend saving subtitles as UTF-8 for best results.
Troubleshooting & Common Format Issues

Running into problems with conversion? Most issues stem from minor formatting deviations. Use this checklist to diagnose and fix your subtitle files.

Quick Diagnostic Steps
  1. Check File Encoding: Ensure your file is saved as UTF-8 (this solves 99% of issues).
  2. Check Timestamp Format: Verify timestamps strictly follow HH:MM:SS,mmm --> HH:MM:SS,mmm (SRT) or HH:MM:SS.mmm --> HH:MM:SS.mmm (VTT).
  3. Check Basic Structure: SRT should have "number-timestamp-text" blocks; VTT must start with a WEBVTT header line.

Likely Causes & Fixes:

  • Wrong character encoding (Most common): Files saved in ANSI, Windows-1252, or other non-UTF-8 encodings cause parsing errors.
    Fix: Open your .srt/.vtt file in a text editor like Notepad++ or VS Code. Go to the "Encoding" menu and select UTF-8 or UTF-8-BOM. Save the file and try again.
  • Malformed timestamp line: Missing spaces around the arrow, wrong separator, or incorrect digit groups.
    Correct Format (SRT): 00:01:23,456 --> 00:01:25,789
    Correct Format (VTT): 00:01:23.456 --> 00:01:25.789
    Ensure there is a space before and after the arrow (-->).
  • File is empty or contains only metadata: Some tools output VTT files with only WEBVTT and style blocks, but no actual cue lines.
    Fix: Verify your source file contains subtitle text with timestamps.

  • For VTT files on a website:
    • Ensure the VTT file is hosted on the same domain or has correct CORS headers if cross-origin.
    • The HTML <track> tag must reference the file correctly: <track kind="subtitles" src="subtitles.vtt" srclang="en" label="English">.
    • Check the browser's developer console (F12) for network or CORS errors related to the .vtt file.
  • For SRT files in media players (VLC, MPC-HC, etc.):
    • Ensure the SRT file has the exact same name as the video file and is in the same folder (e.g., myvideo.mp4 and myvideo.srt).
    • In the player, manually load the subtitle file via the Subtitle menu.
  • File extension mismatch: After downloading, ensure the file has the correct extension (.srt or .vtt). Some browsers may save it as .txt.

This converter does not modify timing. It only changes the format. If sync is off, the issue existed in the original file.

  • Source file is out of sync: The original subtitles might be timed for a different version of the video (e.g., with/without intro).
  • Frame rate mismatch: Subtitles authored for 24fps video will be out of sync on a 25fps or 30fps video.
  • Fix: Use our dedicated Subtitle Time Shifter tool to add a global delay or speed factor to all cues. Upload your converted file and adjust the timing.

This is exclusively a character encoding issue.

  1. Re-save as UTF-8: Open the original file in a proper text editor (Notepad++, Sublime Text, VS Code).
  2. In the editor, find the encoding setting (often in the bottom status bar or under the "Encoding" menu).
  3. Change it to UTF-8 or UTF-8 with BOM.
  4. Save the file. Re-upload it to this converter.

Note: Simple editors like Windows Notepad may not handle encoding well. We highly recommend using Notepad++ for subtitle work.

This is expected behavior and a known limitation.

  • SRT format does not support styling cues, positioning, colors, or regions. It is a plain text format.
  • When converting VTT → SRT, our tool extracts only the core text and timestamps to ensure maximum compatibility with media players.
  • Workflow: If you need styled subtitles for the web, keep the original VTT file. Use SRT only for compatibility with simple players or editing software. For complex styling, you must author directly in VTT or ASS/SSA formats.
Still stuck?

If your issue persists, try this:

  1. Copy a single, problematic cue block (number, timestamp, text) and paste it into the converter to isolate the error.
  2. Compare your file structure with the provided and examples.
  3. For complex files (e.g., with advanced VTT features), consider splitting them and converting in parts.

 Frequently Asked Questions

Currently, we focus on SRT and WebVTT, the most universal formats. For Advanced SubStation Alpha (ASS), please consider specialized tools, but you can often convert ASS to SRT first using external utilities, then use our converter for VTT output.

Yes, basic inline formatting (e.g., <i>, <b>, <u>) is preserved during conversion. VTT supports additional tags like <v> (voice) and <c> (class) – they remain untouched. SRT may strip some VTT-specific tags, but the core text is retained.

No hard limit, but extremely large subtitles (over 5 MB) may cause browser performance lag. For typical movie subtitles (few hundred KB), conversion is instantaneous.

The header is required by the WebVTT specification (W3C). Without it, browsers and video players may fail to recognize the file as a valid text track. Our converter automatically adds it when converting from SRT.

This tool works on one file at a time. For batch processing, we recommend combining files manually or using our upcoming bulk converter (stay tuned).

Absolutely. The tool is fully Unicode‑compliant and preserves characters from all languages, including Chinese, Arabic, Hebrew, Cyrillic, and emojis. Just ensure your input file is saved in UTF‑8 encoding. The output will retain the original text exactly.
Conforms to W3C WebVTT Specification and standard SRT (SubRip) conventions. Regular updates ensure compatibility with Unicode, BOM handling, and industry practices.
Reviewed by digital accessibility experts and video encoding specialists. Last revision: March 2025.

Developed by the GetZenQuery Tech team – with contributions from subtitle engineers and accessibility consultants. This tool is part of our commitment to open, privacy‑first utilities that empower creators and ensure equal access to media.