Skip to content

How to Convert LRC to VTT Online | AllSubConverter

- 3 min read

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 srclang attribute 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 srclang attribute 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

Related Articles

Related Reading