How to Create a Karaoke Song with Synced Lyrics (Enhanced LRC)
You can turn a plain lyrics file and an audio track into a playable karaoke song using LRC maker, a free online tool for creating and editing Enhanced LRC files. This works if you already have the song audio and the lyrics as text, and you want line-by-line or word-by-word timing that highlights as the music plays. The tool runs in the browser, so you need JavaScript enabled.
What an Enhanced LRC karaoke file actually is
A standard LRC file stores one timestamp per lyric line. The player jumps to each line at the right moment, but nothing inside the line is highlighted.
An Enhanced LRC file adds word-level (or syllable-level) timestamps inside each line. That extra timing is what makes the lyrics fill in or highlight as the singer performs, which is the effect people expect from karaoke.
| Format | Timing detail | Typical karaoke effect |
|---|---|---|
| Plain lyrics (.txt) | None | Static text, no sync |
| Standard LRC | One timestamp per line | Line jumps in on cue |
| Enhanced LRC | Timestamps per line and per word | Words highlight as they are sung |
If you only need lines appearing on cue, standard LRC is enough. Choose Enhanced LRC when you want the word-by-word highlight.
Before you start: prepare two things
- The audio track. Use a file the tool can load in the browser. A clean vocal or instrumental version both work; the timing you set is against whatever audio you load.
- The lyrics as plain text. One line per lyric line, no timestamps yet. Fix typos and line breaks first, because re-timing after editing text is wasted work.
Keep the lyric lines matching how the song is actually sung. If a line is split across two musical phrases, split it in the text too — it is easier to time short lines accurately than long ones.
Step-by-step: timing the lyrics
- Load the audio into LRC maker so you can play and scrub through the song.
- Paste the lyrics into the editor. Each line should appear as its own row.
- Play the track and tap the timestamp at the start of each line. The tool records the moment, producing a standard LRC line like
[00:12.34]. - Go back and add word-level timing inside each line. This is the Enhanced LRC step: you mark where each word or phrase begins so the highlight follows the vocal.
- Work in short sections. Time a verse, check it, then move on. Timing a whole song in one pass makes errors harder to trace.
- Preview the result by playing the file back in the tool. Watch whether the highlight lands on the right word.
The expected result after this stage is a file where every line and every word starts at the correct moment relative to the audio.
Previewing, editing, and fixing drift
Sync problems usually show up in one of three ways:
- The whole file is early or late. A single offset shift fixes this — move all timestamps by the same amount.
- One line is off. Re-tap that line's start time; the error is local.
- Words inside a line drift. The line start is right but the word timings are wrong. Re-mark the word boundaries in that line only.
Play the section just before and just after each fix. A line that looks correct in isolation can still feel wrong in context, especially around instrumental breaks and held notes.
Exporting and playing the finished file
Export the Enhanced LRC file from the tool, then load it in a player that supports Enhanced LRC. Standard LRC players will often still show the lines but ignore the word-level highlighting, so the karaoke effect depends on player support. Test in your target player before sharing the file.
If the highlight does not appear, the usual cause is a player that only reads line timestamps. Try a player that explicitly supports Enhanced LRC before assuming the file is broken.
Common questions
Do I need the instrumental version? No. You can time against any audio you can load, including the original track.
Can I edit the lyrics after timing? Yes, but changing line breaks or word counts usually invalidates the timing for the affected lines, so re-check them.
Is word-level timing required? No. If line-level sync is enough for your use, stop after step 3 and export a standard LRC.