Skip to content

YouTube JSON3 to LRC Lyrics Converter

Transform YouTube timedtext JSON3 subtitles into synced LRC lyrics for LRC-capable music players.

Drag & drop your JSON file here

or click to browse

Supports .json, .json3, .xml, .html files up to 50 MB

Core Engine Architecture

About JSON to LRC

YouTube's timedtext API serves captions in JSON3 format — a JSON structure with an events array where each event carries a tStartMs timestamp and segs text fragments. This tool parses the JSON3 structure, extracts each event's start time and text, and outputs [MM:SS.xx] LRC lyrics usable in foobar2000, AIMP, Poweramp, and other players that support LRC time tags.

Payload & Syntax Inspector

JSON to LRC Code Syntax & Structure Inspection

Side-by-side code inspection illustrating header definitions, timestamp syntax, and cue payload formatting

Millisecond Sync
input.json
JSON SOURCE
{
"events": [
{ "tStartMs": 1000, "dDurationMs": 3000,
"segs": [{ "utf8": "Hello, world!" }] },
{ "tStartMs": 4500, "dDurationMs": 3500,
"segs": [{ "utf8": "This is a subtitle file." }] }
]
}
output.lrc
LRC RESULT
[00:01.00]Hello, world!
[00:04.50]This is a subtitle file.
[00:08.50]Converted locally!
Specification Sheet

JSON vs LRC Technical Specifications

Standard Compliant
Input Format

JSON

JSON

JSON3 is YouTube's internal subtitle format, exported via the timedtext API. The file is a JSON object with an events array. Each event has tStartMs (start millisecond), dDurationMs (duration in ms), and segs (an array of text fragments, each with a utf8 field). Users typically download this format using youtube-dl, yt-dlp, or similar tools.

Output Format

LRC

LRC

LRC (.lrc) is a synchronized lyrics format that displays text line-by-line in music players. Each line begins with a [MM:SS.xx] time tag and does not store an end time — the player automatically advances to the next line.

Format Differences

JSON3 uses tStartMs integer milliseconds; LRC uses [MM:SS.xx] time tags
JSON3 is structured JSON data; LRC is plain text with time prefixes
JSON3 stores duration and text fragment arrays; LRC only stores start time and single-line text
JSON3 is YouTube-proprietary; LRC is a common lyrics format
JSON3 is designed for YouTube's video system; LRC is designed for music players
JSON3 files are typically larger (JSON overhead); LRC is more compact and efficient

Conversion Troubleshooting & Gotchas

Practical solutions for player compatibility, character encoding, and timing synchronization

4 Common Gotchas
GOTCHA #1

Subtitle timing drifts or appears out of sync on media players

Video files frequently differ in framerate (e.g., 23.976 fps vs 25 fps). If the timing drifts steadily, use our Subtitle Sync tool to adjust the global offset or framerate stretch.

GOTCHA #2

Characters appear as garbled symbols or question marks (Mojibake)

Legacy files saved in Windows-1252, Shift-JIS, or GBK may render incorrectly. Our exporter standardizes output to clean UTF-8. Use our Subtitle Encoding Converter if the source file is corrupted.

GOTCHA #3

Overlapping captions when multiple speakers talk simultaneously

Different formats handle overlapping dialogue differently. If your target player cannot render stacked cues cleanly, open the file in our Subtitle Editor to adjust individual cue timings.

GOTCHA #4

Video editing software (Premiere, DaVinci, Final Cut) rejects the file

Professional NLE software enforces strict syntax rules. Our converter eliminates malformed line breaks and non-standard tags, producing clean, standardized files.

Features

Automatically parses the YouTube JSON3 events array and joins segs text fragments into one line
Converts millisecond start times to centisecond LRC [MM:SS.xx] tags
Designed for common LRC-capable players such as foobar2000, AIMP, Poweramp, and MiniLyrics
Client-side processing — your files never leave your device
Supports UTF-8 encoding for CJK and non-Latin characters
Browser-based processing — no file uploads, files stay on your device
Free to use, no signup, no watermark, files up to 50 MB each

Why Convert?

YouTube auto-captions downloaded via yt-dlp come as JSON3, but music players need LRC to display synced lyrics.
JSON3 is YouTube's proprietary format that only YouTube-related tools can parse; LRC is a common lyrics format supported by many players.
JSON3 contains dDurationMs duration data, but LRC only needs start times — the converted file is simpler and cleaner.
Music players like foobar2000, Poweramp, and Musicolet cannot read JSON3 and require LRC for synchronized lyrics display.
After extracting audio from a YouTube music video, you need to convert the JSON3 subtitles to LRC for synced lyrics in audio players.
Language learning apps that show synced lyrics during audio playback expect LRC format, not YouTube's JSON3.
Discord music bots and streaming overlays use LRC to display lyrics during playback and do not support JSON3.
Scenarios

Common Use Cases

YouTube Music Lyrics Extraction

YouTube auto-captions download as JSON3, but music players need LRC. Convert JSON3 to LRC to turn YouTube subtitles into synced lyrics for foobar2000, AIMP, and Poweramp.

yt-dlp Subtitle to Lyrics

YouTube subtitles downloaded with yt-dlp are typically JSON3 format. Convert JSON3 to LRC to reuse them as synced lyrics in LRC-capable audio players.

Language Learning Materials

JSON3 subtitles from YouTube educational videos can be converted to LRC for language learning apps that show synced text during audio playback.

Discord Bot Lyrics

Discord music bots use LRC format to display synced lyrics during playback. Convert YouTube JSON3 subtitles to LRC to integrate with your bot.

Mobile Music Players

Many mobile music players support LRC synced lyrics. Convert YouTube JSON3 subtitles to LRC for use in apps that accept LRC time tags.

Format Ecosystem

Related Formats

How It Works

  1. 1

    Upload or drag your .json file into the tool area.

  2. 2

    The parser reads the JSON structure and iterates the events array.

  3. 3

    Each event's tStartMs millisecond value is converted to LRC's centisecond [mm:ss.xx] timestamp.

  4. 4

    The utf8 text fragments in the segs array are concatenated into a single LRC lyrics line.

  5. 5

    Timing-only events without segs are automatically skipped.

  6. 6

    The resulting .lrc file pairs each bracketed timestamp with a line of lyrics text.

Frequently Asked Questions

JSON3 is YouTube's internal subtitle format. It is served via the timedtext API as a JSON object with an events array. Each event has tStartMs (start millisecond), dDurationMs (duration in ms), and segs (text fragments array, each with a utf8 field).

The generated file uses common LRC [MM:SS.xx] time tags. With foobar2000 (ESLyric), AIMP, Poweramp, and similar players that support this syntax, name the lyrics file the same as the audio file to enable synchronized display.

Some events in YouTube JSON3 contain only timing information (like aAppend markers) without text fragments. These events are automatically skipped during conversion and do not affect the LRC output.

Use yt-dlp: yt-dlp --write-auto-sub --sub-format json3 <video-URL>. The downloaded .json3 file can be directly imported into this tool. You can also fetch it via the YouTube timedtext API in a browser.

The multiple utf8 text fragments in each event's segs array are automatically concatenated into a single LRC lyrics line, and internal line breaks are converted to spaces. For example, two fragments "Hello " and "world" are merged into "Hello world".

LRC is a lyrics file format that uses time tags to synchronize text with music playback. Each line starts with a [MM:SS.xx] timestamp.

Ready to convert your subtitles?

Drop your JSON file here and convert to LRC instantly.