# Subtitle Converter

> Convert subtitles between SRT, WebVTT and plain text in your browser. Shift timings to fix drift, strip formatting tags, renumber cues. Nothing is uploaded.

Canonical: https://faceless.so/tools/subtitle-converter

Free Tool

Convert between SRT, WebVTT and plain text, shift drifting timings to the millisecond and strip formatting tags. Everything runs in your browser — no file is ever uploaded.

## Your subtitles

Detected: Nothing yet

Cues

0

Duration

—

Words

0

## Convert to

 

### 1 note

-   There is nothing to convert yet.

## Where subtitle converters quietly corrupt files

The format swap is the easy part. What breaks files is everything around it: a blank line inside a cue's text, a cue identifier that is a word rather than a number, a BOM at the start of a Windows export, a final cue with no trailing newline. Naive converters split on blank lines, so any of those silently merges two cues or drops the last one, and you find out in QC. This parser works from the timing lines outwards instead, which is the only structure those files reliably share.

The second trap is drift. A constant offset — a caption pass done against a version with a different head slate — is fixable with the shift field here, and to the millisecond, because subtitle timing is absolute rather than frame-quantised. Drift that grows through the reel is a different animal: it is almost always 23.976 against 25, and each minute costs you roughly two and a half seconds. No offset will save you. Retime from the correct rate, then shift.

Finally, positioning does not survive the round trip and no honest tool will pretend otherwise. WebVTT cue settings and ASS override blocks have no equivalent in SRT, so converting down discards them. That is usually what you want for a platform upload, since YouTube, TikTok and Instagram ignore positioning anyway, but it means the SRT you get back is not a lossless copy of the VTT you put in. Keep the original.

## Frequently asked questions

Subtitle formats, timing and what survives a conversion

### What is the difference between SRT and WebVTT?

They carry the same information in slightly different syntax. SRT numbers every cue and writes times as HH:MM:SS,mmm with a comma; WebVTT opens with a WEBVTT header, uses a full stop for the milliseconds, allows the hour to be dropped, and adds optional cue settings such as align:start position:10%. WebVTT is what HTML5 video and most web players expect, while SRT is what nearly every NLE and social platform ingests.

### Are my subtitle files uploaded anywhere?

No. The file is read with the browser's FileReader API, parsed in JavaScript on your machine and handed back as a Blob download. Nothing is sent to a server, which matters if you are cutting embargoed or client-confidential material.

### How do I fix subtitles that are out of sync?

If the captions are wrong by a constant amount, use the shift field: a negative value pulls every cue earlier, a positive one pushes it later, to the millisecond. If the offset grows as the video runs, it is not an offset at all but a frame-rate mismatch, usually 23.976 against 24 or 25, and a constant shift cannot fix it. Retime from the correct frame rate instead.

### Can I convert subtitles to a plain transcript?

Yes. Pick plain text to get just the words with the cue numbers and timings removed, or plain text with timestamps to keep a time marker on each line for reference. Turning on the merge option first joins word-level cues into readable sentences, which is what you want when the source came from YouTube's automatic captions.

### What happens to italics and positioning tags?

By default they are preserved exactly as written, because a broadcast deliverable often needs them. Tick the strip option and HTML-style tags, ASS override blocks such as {\\an8} and WebVTT inline karaoke timestamps are removed, leaving clean text. Positioning survives as a cue setting when you output WebVTT, and is dropped when you output SRT, which has nowhere to put it.

### Why does the converter warn about overlapping cues?

Because a cue that starts before the previous one ends will either stack on screen or be silently dropped by the player, and most converters never tell you. Overlaps, cues running backwards in time, zero-length cues and cues with no text are all reported rather than quietly deleted, so you can decide what to do about them before the file goes out.

## More free tools

[YouTube transcript generator Pull the transcript off a video, then convert it into the caption format you need.](https://faceless.so/tools/youtube-transcript-generator)

[Script timer Work out how long a script runs before you record it, at your delivery speed.](https://faceless.so/tools/script-timer)

[Safe zone checker See where captions collide with the UI on TikTok, Reels and Shorts.](https://faceless.so/tools/safe-zone-checker)

[Aspect ratio calculator Get the exact dimensions for a reframe without guessing at the maths.](https://faceless.so/tools/aspect-ratio-calculator)

The full product

## A Clean Caption File is just the start. Automate your whole faceless channel

Faceless writes, voices, edits and captions the whole video: describe a niche and it publishes finished shorts to your channels on a schedule, captions burned in and timed.

Faceless.so is an [AI faceless video generator](https://faceless.so/) that writes, voices and posts a new video in your niche every day.

-   Captions generated and styled automatically
-   Any format, any aspect ratio
-   Posted to YouTube, TikTok and Instagram

Time-to-first-render

47s

Starting price

$29/mo

AI voices

180+

Caption styles

19

Auto-publishes to

![YouTube](https://www.google.com/s2/favicons?domain=youtube.com&sz=64)

YouTube

![TikTok](https://www.google.com/s2/favicons?domain=tiktok.com&sz=64)

TikTok

![Instagram](https://www.google.com/s2/favicons?domain=instagram.com&sz=64)

Instagram

![X](https://www.google.com/s2/favicons?domain=x.com&sz=64)

X

![Facebook](https://www.google.com/s2/favicons?domain=facebook.com&sz=64)

Facebook

![LinkedIn](https://www.google.com/s2/favicons?domain=linkedin.com&sz=64)

LinkedIn

![Threads](https://www.google.com/s2/favicons?domain=threads.net&sz=64)

Threads

[Make a video with AI](https://faceless.so/faceless/video)

Because retiming someone else's export is not the job you wanted.

## Ready to Create Your Own Videos?

Start creating amazing AI-powered faceless videos in minutes with Faceless

[Start my channel](https://faceless.so/projects)[View Pricing](https://faceless.so/pricing)

Free to sign upPlans from $29/moCancel anytime
