Try the LRC File Generator to do this in your browser.

What an LRC file actually does alongside your MP3
An LRC file is a plain UTF-8 text file containing one lyric line per row, each preceded by a bracketed [mm:ss.xx] timestamp, and it lives in the same folder as your MP3 so compatible music players can display lyrics in sync with playback.
Most players look for a file that shares the base name of your track — for example song.mp3 paired with song.lrc in the same directory. When the player starts the audio, it reads the matching LRC, scrolls each line at the matching timestamp, and highlights the active row. The format itself is not an official international standard; it is a de-facto convention documented across reference sites, including the QuickLRC LRC file format reference.
If you have the lyrics in plain text and want to skip the manual timestamp typing, the LRC File Generator turns those rows into a synchronized file in your browser tab, with no upload and no account. You can preview the exact output before saving it beside your MP3.
The simple LRC format at a glance
A simple LRC file is a short text document. Metadata tags appear at the top inside square brackets, a blank line separates them from the timed lyrics, and every timed row starts with [mm:ss.xx] — two or three minute digits, two second digits, a period, and exactly two centisecond digits — followed immediately by the lyric text.
Only three metadata tags are emitted by this generator: [ti:title], [ar:artist], and [al:album]. Each tag value is trimmed, capped at 120 characters, and rejects square brackets or control characters, which prevents a stray tag from accidentally appearing in the file. Players that recognize additional tags such as [by:], [length:], or [offset:] simply ignore what they do not understand.
| Element | Meaning | Example |
|---|---|---|
| [ti:...] | Title metadata tag | [ti:Morning Light] |
| [ar:...] | Artist metadata tag | [ar:River and Stone] |
| [al:...] | Album metadata tag | [al:Northern Routes] |
| [mm:ss.xx] | Centisecond timestamp preceding a lyric line | [01:23.45]Lyric text |
The format stays intentionally narrow: no hour field, no three-digit milliseconds, no word-level angle-bracket timestamps, no karaoke duet markers, no player-specific extensions. Anything beyond that subset is the responsibility of the player and your workflow downstream.
How to create an LRC file for your MP3
To pair your MP3 with synced lyrics, the simplest path is to format the lyrics once and let the generator stamp each row with a regular time interval. You can retime anything that drifts later.
- Open the LRC File Generator in your browser.
- Enter one lyric line per row, up to 500 non-empty lines and 500 characters per line. Blank rows are removed automatically, and Windows, old Mac, and Unix line endings are normalized so a copied block of lyrics behaves the same way.
- Set the first timestamp in [mm:ss.xx] form (for example, 00:12.34). The minutes field accepts two or three digits, the seconds field must be 00 through 59, and the two fractional digits represent centiseconds.
- Set the interval in seconds, from 0.01 to 600.00, with no more than two decimal places. The value is converted to an integer number of centiseconds before any rows are produced, so repeated addition does not accumulate binary floating-point drift.
- Optionally fill in the title, artist, and album fields if you want [ti:], [ar:], and [al:] tags at the top of the file. Empty fields are omitted.
- Read the preview, which shows the complete file exactly as it will be saved — untruncated, with the first and last timestamps visible.
- Click Download to save a UTF-8 .lrc file locally. The filename is derived from the title when available; unsafe punctuation becomes hyphens, and a blank title uses synced-lyrics.lrc.
- Place the downloaded file next to your MP3 in the same folder, sharing the base name (song.mp3 + song.lrc), and open both in your target player.
For a walkthrough that focuses on the broader format basics, see how to create an LRC file. The current article is built around pairing the file with a specific MP3 and adjusting the timing to match the actual recording.
Reading the timestamps and the fixed interval
The generator stamps every row by adding the same number of centiseconds to the previous row, starting from the first timestamp you supply. Because the interval is converted to integer centiseconds before the loop begins, drift never sneaks in from binary rounding. For a 00:12.34 start and a 2.50-second interval, the first three rows receive 00:12.34, 00:14.84, and 00:17.34 — the arithmetic is 1234 + 250 = 1484 centiseconds for the second row, and 1484 + 250 = 1734 for the third.
If the final calculated timestamp would exceed 999:59.99, generation fails and nothing is silently truncated, which protects you from saving a file whose closing line points past the player limit. The same MM:SS.xx shape is preserved on every row, which is the de-facto simple LRC subset confirmed by the QuickLRC LRC file format reference.
| Start timestamp | Interval (s) | Row 1 | Row 2 | Row 3 |
|---|---|---|---|---|
| 00:12.34 | 2.50 | 00:12.34 | 00:14.84 | 00:17.34 |
| 00:00.00 | 4.00 | 00:00.00 | 00:04.00 | 00:08.00 |
| 01:30.00 | 3.75 | 01:30.00 | 01:33.75 | 01:37.50 |
Reading those rows in a player should produce three evenly spaced lyric updates, one every interval-second beat. That regularity is exactly the assumption you can break later with a manual editor.
Fine-tuning the file for the actual recording
A fixed interval is only a starting draft. Real vocals rarely begin at perfectly equal spacing, and the generator does not listen to the audio, detect speech, transcribe lyrics, align phonemes, identify beats, or estimate performance timing. Its contract is to stamp rows deterministically; the second half of the job belongs to you and a dedicated LRC editor.
Open the file next to the exact recording and nudge any line whose [mm:ss.xx] value is more than a beat away from the moment the corresponding lyric begins. Some editors accept a click-to-set workflow, others allow dragging a timestamp in a timeline. The preview you saw in the browser is the same string that was downloaded, and any edit you make afterward is just text in a file — there is no lock-in.
Two simple checks catch most timing problems. First, listen for the first sung syllable of each line and compare it against the timestamp. Second, watch the active-line highlight in your player; a row that scrolls two seconds before the voice usually means the timestamp is too early, and a row that scrolls after the line ends usually means it is too late.
Testing and pairing the LRC with your MP3
Different players support different metadata tags, timestamp precision, encodings, long minute values, and enhanced-LRC extensions. Always test the file in the target player before assuming the workflow is finished. Open your MP3 from the same folder where you saved the LRC, with matching filenames, and confirm three things: the file is detected, the tags appear (or are gracefully ignored), and the line scroll feels right.
If a player ignores the file, the most common cause is a filename mismatch. The second most common cause is encoding: this tool writes UTF-8 without a byte-order mark, which is what most modern players expect, but a few older builds prefer a specific regional codepage. Switching tools or resaving through a transcoder is the usual fix.
Remember the legal side of the workflow. The generator only formats user-provided text — it does not supply copyrighted lyrics, search a catalog, identify a song, confirm ownership, or grant a synchronization license. Make sure you have permission to reproduce and distribute the lyric text you enter before you ship the file alongside your MP3.