How to Convert LRC to VTT Online | AllSubConverter
If you want lyrics to display inside a web video player — on a blog, a course site, YouTube, or any HTML5 <video> element — VTT (WebVTT) is the format browsers actually understand. But most synced lyrics live in LRC files, built for audio players, not the web. Converting LRC to VTT is the practical bridge, and this guide covers how the timestamp translation works, how the missing end times are handled, and how to wire the result into a web video.
Turn LRC lyrics into web-ready VTT subtitles — runs entirely in your browser, no signup.
Convert LRC to VTT →Why LRC does not work in a browser
Browsers only render one subtitle format natively: WebVTT. There is no built-in support for LRC inside an HTML5 video element, and trying to feed one in just produces silence on screen. LRC also lacks end times, while web video players need an explicit time range for every cue so they know when to show and hide text. VTT additionally expects a WEBVTT header at the top of the file and blank lines between cues.
So the conversion is really three jobs bundled together: translate the timestamp format, synthesize the missing end times, and wrap everything in the structure VTT requires.
LRC vs VTT timestamps
The most visible change is the timestamp. LRC uses a compact bracket notation with centisecond precision; VTT uses a full timecode with millisecond precision and an arrow separating start and end.
| Aspect | LRC | VTT |
|---|---|---|
| Notation | [mm:ss.xx] |
hh:mm:ss.mmm --> hh:mm:ss.mmm |
| End time | Implicit (next line) | Explicit, required |
| Header | Optional metadata tags | WEBVTT on first line |
| Precision | Centiseconds | Milliseconds |
| Browser support | None | Native HTML5 |
How the missing end times are filled in
LRC gives each line a start time but no end time, so the converter has to infer one. The approach is the same one used for LRC to SRT conversion: each line ends when the next line begins, and the final line gets a sensible default duration (usually a few seconds). A minimum display time also keeps tightly packed lines from flashing by too quickly.
The result feels natural because it mirrors how music players already treat LRC — a line stays visible until the next one pushes it out — so the jump to video is visually seamless.
Step-by-step: a worked example
1. Your LRC source
[00:32.15]Music video production
[00:35.80]Sharing content online
[00:39.25]Reaching global audience
2. Converted VTT output
WEBVTT
00:00:32.150 --> 00:00:35.800
Music video production
00:00:35.800 --> 00:00:39.250
Sharing content online
00:00:39.250 --> 00:00:42.000
Reaching global audience
The converter added the WEBVTT header, expanded timestamps into full timecodes with millisecond precision, calculated end times from each following line, and inserted the blank-line separators VTT requires between cues.
Wiring the VTT into a web video
Once you have a VTT file, attaching it to an HTML5 video is a single track element. Host the VTT alongside your video and reference it with a <track> tag:
<video controls>
<source src="song.mp4" type="video/mp4">
<track kind="subtitles" src="lyrics.vtt" srclang="en" label="English">
</video>
The browser handles the rest: it reads the cues, shows each line at its start time, and hides it at the end time. No JavaScript timing logic required.
Use cases
- Embedded web players. Show scrolling lyrics on a music or course site without any plugins.
- YouTube uploads. VTT is accepted by YouTube and most streaming platforms as a caption track.
- Online karaoke. Build a browser-based karaoke experience timed to a backing track.
- Repurposing lyric libraries. Move an existing LRC collection onto the web without re-timing everything by hand.
Can I add styling afterward?
Yes. VTT supports styling and positioning cues, so you can edit the converted file to add color classes or placement hints. The converter produces clean, valid VTT that is ready for that kind of customization.
What happens to LRC metadata tags?
Tags like [ar:Artist] or [ti:Title] are preserved as VTT NOTE comments at the top of the file, keeping your attribution intact without interfering with playback.
What about overlapping timestamps?
If two lines share nearly the same start time, the converter adjusts the end times to avoid overlap, so cues never pile on top of each other on screen.
Do cue identifiers matter?
They are optional in VTT. The converter skips them to keep output lean, which avoids edge cases where a stray cue identifier confuses stricter players. If you ever need them — for example, to reference a specific line from JavaScript — they are easy to add by hand since each cue is already separated by a blank line.
Tip: name your VTT file to match the locale you intend to serve, and set the
srclangattribute on the<track>tag so players offer the right caption menu.
Tip: name your VTT file to match the locale you intend to serve, and set the
srclangattribute on the<track>tag so players offer the right caption menu.
Convert LRC to VTT now
The conversion is instant, free, and entirely client-side — your lyrics never leave your device. Paste your LRC, grab the VTT, and drop it straight into your video player.
Last updated: March 20, 2026