An LRC maker turns plain lyric lines into a synchronized text file with bracketed centisecond timestamps, optional song tags, and a local download you can drop next to your MP3. The output is a UTF-8 .lrc file where each display event gets exactly one [mm:ss.xx] timestamp placed directly before its lyric text, and optional title, artist, and album metadata appear as separate [ti:], [ar:], and [al:] header tags. The LRC File Generator follows the widely used simple LRC subset: minutes contribute sixty thousand milliseconds, seconds contribute one thousand, and two fractional digits represent centiseconds, which means a line timed to [01:23.45] appears at exactly one minute, twenty-three seconds, and forty-five hundredths of a second in any player that respects the format. Because the tool runs entirely in your browser tab, the lyric text you type never leaves your computer, and the produced file is the exact preview shown on screen. The same deterministic string is used for the download, so editing any input clears the previous preview and a fresh file replaces the older blob URL.

What an LRC Maker Outputs
A finished simple LRC file is plain text with three predictable regions: optional metadata at the top, a blank separator line, and a series of timestamped lyric lines. The metadata region only ever contains three tag forms, which keeps the format conservative and predictable across players. The blank line is purely cosmetic; players parse timestamps from any line that begins with a bracketed time value, so its presence helps humans skim the file without changing parser behavior. The lyric region is one timestamp per display event, with the bracketed time immediately followed by the lyric text on the same line and no blank rows between timed lines. The filename is derived from the title when present, with unsafe punctuation replaced by hyphens; a missing title produces synced-lyrics.lrc. The file is written as UTF-8 without a byte-order mark so that players expecting an unprefixed text file do not skip the first tag.
| Tag | Purpose | Example form |
|---|---|---|
| [ti:value] | Song title metadata | [ti:Example Song] |
| [ar:value] | Performing artist | [ar:Band Name] |
| [al:value] | Album or release name | [al:Debut Album] |
Empty metadata fields are omitted entirely rather than emitted as blank tags, and a metadata value cannot contain square brackets or control characters because those would either inject an extra tag or produce inconsistent parsing in players that reject control bytes. Each metadata value is trimmed, capped at 120 characters, and only the exact [ti:], [ar:], and [al:] keys are produced. The preview pane shows every byte the download will contain, including trailing newline behaviour, so what you inspect is what you ship.
Generate a Simple LRC File Step by Step
The generator runs in three controlled phases: input preparation, timing configuration, and preview-and-download. Each phase has fixed bounds so the produced file is always the same deterministic string for the same inputs.
- Paste your lyric lines into the input area, one line per display event, with up to 500 non-empty rows and 50,000 input characters overall. Blank rows are removed automatically, and any single line longer than 500 characters is rejected so the resulting file stays readable.
- Set the first timestamp in MM:SS.xx form using two or three minute digits, two second digits from 00 through 59, a period, and two centisecond digits. Valid opening values include 00:00.00, 09:59.99, 10:00.00, and 123:45.67.
- Choose an interval from 0.01 to 600.00 seconds with at most two decimal places, such as 2.50 or 4. The generator converts this to an integer number of centiseconds before producing any row, so repeated addition does not drift through binary floating-point error.
- Fill optional title, artist, and album fields if you want [ti:], [ar:], and [al:] header tags at the top of the file. Leave any field blank to omit its tag entirely.
- Generate the file, inspect the preview for the first and last timestamps, and download it. The downloaded file matches the preview byte for byte, and any further input edit clears that preview until the next generation.
Windows, old Mac, and Unix line endings inside the lyric text are normalized before counting rows, so the line count you see matches the row count the generator actually processes. Disallowed control characters inside lyric text are rejected rather than silently inserted, which prevents a player that filters control bytes from dropping the line without warning.
How a Fixed Interval Becomes Timestamps
Because the interval is converted to integer centiseconds before any line is produced, each successive timestamp is the previous time plus that exact integer count, written back to MM:SS.xx form. There is no cumulative multiplication and no float accumulation, so a 2.50-second interval keeps producing clean hundredths of a second even across hundreds of lines. Consider an opening time of 00:12.34, which is 1234 centiseconds, and an interval of 2.50 seconds, which is 250 centiseconds. Line 1 receives 00:12.34. Line 2 receives 1234 plus 250 equals 1484 centiseconds, written as 00:14.84. Line 3 receives 1484 plus 250 equals 1734 centiseconds, written as 00:17.34. The arithmetic stays exact regardless of how many lines follow.
The upper bound matters too: if the final calculated timestamp would exceed 999:59.99, generation fails and nothing is silently truncated, which protects you from a player that reads only the rows it can parse and quietly drops the rest. The generator also rejects hour fields, colon-separated frame counts, three-digit milliseconds, word-level angle-bracket timestamps, karaoke duet markers, and player-specific extensions, so the produced file is a strict simple LRC subset rather than a mixed-format hybrid. The independent Subforge LRC parser and formatter source confirms that minutes contribute sixty thousand milliseconds, seconds contribute one thousand, and two fractional digits represent centiseconds, and QuickLRC documents this same de-facto form, which is why the conservative subset travels well between players.
Input Limits That Shape the Output
The format constraints on the first timestamp and the interval are the two most common sources of rejected generation, so knowing the exact rule helps you fix input before pressing the download button. Lyric text itself is preserved as you typed it: spelling, punctuation, capitalization, language, and copyright notices inside ordinary lines pass through unchanged, so the file inherits your wording without modification. The limits below describe the bounded contract the generator enforces on every input field.
| Field | Accepted form | Rejected example |
|---|---|---|
| First timestamp | 00:00.00, 09:59.99, 10:00.00, 123:45.67 | 1:23.45, 01:23, 01:23.456, 01:60.00 |
| Interval | 0.01 to 600.00 seconds, two decimal places max | A third decimal digit, the value 0 or 601 |
| Metadata value | Plain text, trimmed, up to 120 characters | Bracketed text, control bytes, 121+ characters |
| Lyric rows | 1 to 500 non-empty lines, 50,000 characters total, 500 per line | Empty input, a single line over 500 chars, the 501st row |
For deeper validation tips and how to recover from a rejected generation, the LRC generator tips and common-mistakes guide walks through specific failed examples and the corrected inputs that make them pass.
Test the File in Your Target Music Player
A fixed-interval LRC is a starting draft, not a finished timing track, because real vocals rarely begin at perfectly equal spacing. Open the downloaded .lrc beside the exact recording in a dedicated timestamp editor and nudge individual [mm:ss.xx] values until the highlighted line matches the sung syllable. Different players support different combinations of metadata tags, timestamp precision, encoding, long minute values, and enhanced LRC extensions, so the only reliable check is to load the file into the same player your listeners will use. If a player ignores ti or al, the lyric scroll still works, but you may need to retitle or reorder the metadata by hand.
Temporary download object URLs are revoked after direct use and when the component unmounts, so an older file cannot remain presented as the result of newer text. Because all content and arithmetic stay in the current browser tab, no lyric text is uploaded to a server, stored in an account, or sent to an AI service, which means you can draft and regenerate freely. The same contract means the utility formats user-provided text only: it does not supply copyrighted lyrics, search a catalog, identify a song, confirm ownership, or grant a synchronization license, so make sure you have permission to reproduce and distribute the words you paste. Compatibility beyond the simple LRC subset remains the responsibility of the player and the editor you choose later.