Turn WebVTT (.vtt) subtitle files into LRC (.lrc) lyrics format quickly with a simple online converter.
.vtt file or click "Add Files" to browse. The file is parsed entirely in your browser — nothing is uploaded. Multiple WebVTT files can be queued and converted in one batch.WEBVTT header plus any NOTE, STYLE, and REGION blocks, drops cue identifiers and cue settings (line:, position:, align:), and rewrites each cue's start timestamp from hh:mm:ss.fff (millisecond precision) to [mm:ss.xx] (hundredth-of-a-second precision) — the only timestamp format the LRC spec supports.<b>, <i>, <c.classname>, and <v Speaker> is stripped — LRC has no styling grammar, only timestamped plain text. Sound cues such as [Music] or (Applause) pass through unchanged so you can decide whether to keep them..lrc file downloads as UTF-8 plain text, ready to drop next to your .mp3, .flac, or .m4a for foobar2000, MusicBee, AIMP, or Poweramp to pick up automatically.WebVTT was standardised by the W3C for HTML5 video and audio captioning — it carries timing, positioning, CSS styling, and speaker metadata that browsers consume via the <track> element. LRC ("LyRiCs"), introduced in 1998 by Kuo Shiang-shiang as a Winamp plug-in companion format, is the universal sidecar format for desktop and mobile music players. The two formats overlap in concept (timestamped text aligned to media) but diverge in everything else: LRC has no header, no styling, no positioning, only [mm:ss.xx] tags and lyric lines. Converting flattens a video-captioning file into something a music player will actually display.
track.lrc next to track.mp3 and scroll the lyrics in sync. Drop a .vtt in the same folder and these players ignore it..lrc with audio for line-by-line follow-along reading. VTT support is rare; LRC is the default expectation..lrc alongside their masters.SYLT (Synchronized Lyrics) frame and Vorbis comments have a LYRICS field. The contents of an LRC paste cleanly into these tags via kid3 or the dedicated SYLT Editor, embedding the synced lyrics directly into the audio file.M: / F: / D:) for cue authoring. Web captioners who recorded a session as VTT can hand off an LRC for the karaoke pipeline.Need the opposite direction? Use LRC to VTT. For broader subtitle workflows see VTT to SRT or strip timings entirely with VTT to TXT.
| Property | VTT (WebVTT) | LRC |
|---|---|---|
| Year introduced | 2010 (W3C draft); Candidate Recommendation Draft (latest May 2026) | 1998 (Kuo Shiang-shiang / Winamp) |
| Standardised by | W3C webvtt1 Candidate Recommendation Draft |
De-facto, originally a Winamp plug-in format |
| Primary purpose | Captions for HTML5 <video> / <audio> |
Synced lyrics for music players |
| File header | Required: WEBVTT on line 1 |
None |
| Timestamp format | hh:mm:ss.fff (millisecond) |
[mm:ss.xx] (hundredth-of-a-second) |
| Cue duration | Start --> end timestamps per cue |
Only start time; line ends at next timestamp |
| Inline styling | <b> <i> <u> <c.class> <ruby> <v Speaker> plus CSS |
None — plain text only |
| Positioning | line: position: align: vertical: size: |
None |
| Metadata tags | STYLE and REGION blocks (embedded CSS) |
ID tags [ar:] [ti:] [al:] [length:] [by:] [offset:] |
| Word-level karaoke timing | Cue settings only (no per-word stamps) | Enhanced LRC (A2 extension) supports <mm:ss.xx> per word |
| Multi-line cues | Yes, joined with \n |
One line per timestamp — multi-line cues are split |
| MIME type | text/vtt |
No registered MIME type; usually served as text/plain |
| Typical use | Browser captions, accessibility tracks | Music players (foobar2000, MusicBee, AIMP, Poweramp), Apple Music / Spotify pipelines |
| Element | VTT input | LRC output |
|---|---|---|
WEBVTT header line |
Required first line | Removed |
NOTE comments |
Supported (ignored by players) | Removed |
STYLE blocks (embedded CSS) |
Supported in spec | Removed |
REGION blocks |
Supported in spec | Removed |
| Cue identifiers (numeric or named) | Optional | Removed |
End timestamps (hh:mm:ss.fff after -->) |
Required | Removed — LRC only stores start times |
Cue settings (line: position: etc.) |
Optional | Stripped |
| Millisecond precision | .fff (1 ms) |
.xx (10 ms) — rounded to nearest hundredth |
<b>, <i>, <u> styling |
Supported | Tag removed; inner text kept |
<c.classname> class spans |
Supported | Tag removed; inner text kept |
<v Speaker> voice tags |
Supported | Tag removed; speaker name may be kept as prefix |
<ruby> annotations |
Supported | Removed (LRC has no ruby) |
| Multi-line cue body | Joined with \n inside one cue |
Split into separate [mm:ss.xx] lines, or joined to one — depends on author preference |
ID tags ([ar:], [ti:], [al:]) |
Not applicable | Optional — added blank by default; fill in your music metadata |
| UTF-8 encoding | Required by spec | Preserved |
Both platforms display synced lyrics in their players, but neither accepts uploads from end users — synced lyrics arrive through partner deliveries from MusixMatch, LyricFind, AMP, and the labels. The LRC files you create here will play fine in any local music app (foobar2000, MusicBee, AIMP, Poweramp, KMPlayer, Plex) and can be submitted to MusixMatch or distributors like TuneCore/DistroKid for inclusion in streaming-platform lyrics. For your own listening, drop song.lrc next to song.mp3 and most players auto-detect it.
The LRC format was designed in 1998 for MP3 player lyric scrolling, when hundredth-of-a-second timing was already finer than a human eye could track. WebVTT, designed twenty years later for browser-rendered video captions, uses millisecond precision. During conversion, 00:01:23.456 rounds to [01:23.46] — a worst-case rounding error of 5 ms, which is inaudible and invisible in any music player.
Enhanced LRC (the "A2 extension") supports per-word timestamps in the form <mm:ss.xx>word, and VTT supports per-word stamps inside a cue with <00:00:01.500> syntax. If your source VTT has these inline timestamps (common in YouTube auto-captions from yt-dlp --write-auto-sub), the converter preserves them as enhanced LRC. If the VTT only has cue-level timing, the LRC output is standard simple LRC with one tag per line.
A WebVTT cue can carry multiple lines of text between its timestamp line and the next blank line — useful for two-line captions like a speaker name plus their words. LRC players display one line at a time, so the converter offers two modes: split each line onto its own [mm:ss.xx] tag using the cue start time (the same line will appear once with that timestamp), or join with a space into a single line. Most music workflows pick "join" because a chorus normally fits on one line.
The convention is the same filename as the audio, swapped extension: song.mp3 pairs with song.lrc in the same folder. Some players (foobar2000 with Lyric Show 3, MusicBee) also accept LRC inside a lyrics/ subfolder or embedded in an ID3v2 SYLT frame. Embedded mode is portable — the lyrics travel with the file — but sidecar .lrc is easier to edit. kid3 imports and exports LRC against the SYLT frame directly; the SYLT Editor is a dedicated tool for the same job. Mp3tag handles unsynced USLT lyrics natively but does not write SYLT without a custom action.
Yes — LRC ID tags [ar:Artist Name], [ti:Song Title], [al:Album], [length:mm:ss], [by:LRC author], and [offset:±N] (a global ms shift) live at the top of the file before the first timestamp. The converter emits empty placeholder tags so you can paste your metadata before sharing. The [offset:] tag is especially useful — if a player consistently shows lyrics 200 ms late, add [offset:-200] instead of re-timing every line.
YouTube's auto-captions download as VTT with rolling word-by-word cues that repeat the same line many times (each new word produces a new cue containing the prior phrase plus the next word). LRC inherits this duplication, which looks terrible in a lyrics scroller. The converter deduplicates consecutive identical lines automatically; for fully manual cleanup, edit the file in any text editor before saving. If your video is from yt-dlp --write-auto-sub --sub-format vtt, expect inline <00:00:01.500> word timestamps too — those convert to enhanced LRC.
Yes. LRC is UTF-8 plain text — Arabic, Hebrew, Chinese, Japanese, Korean, and emoji all pass through unchanged. Most modern players (foobar2000 ≥1.6, MusicBee ≥3.4, AIMP ≥5, Poweramp v3+) render UTF-8 correctly. A handful of legacy Windows MP3 players from the early 2010s expected ANSI / Windows-1252 LRC; if you need that for an older device, re-encode the downloaded file in a text editor — but in 2026 this is rare.
No. The conversion runs as JavaScript in your browser, so the only limit is your device's available memory. Typical 3-to-5-minute song VTTs are 5–20 KB and convert in milliseconds; full-album batches of 20+ files queue and process locally without uploading anything. No account, no watermark, no Pro tier.