LRC vs TTML: Which Timed Lyrics Format Do You Need? - Comprehensive guide to Enhanced LRC files with word-level timing

LRC vs TTML: Which Timed Lyrics Format Do You Need?

•
5 min read

Quick Answer

LRC vs TTML comes down to where the lyrics are going. LRC is a tiny plain text file that local music players and media servers read from a sidecar next to the audio. TTML is an XML timed text format. It's what Apple requires from labels and distributors for time-synced lyrics on Apple Music.

Both can hold line timing and word timing. LRC is easier to read and edit by hand. TTML carries more structure, like end times, singer roles, background vocals and styling. Playing your own files? Use LRC. If you're delivering to Apple Music or you need the extra markup then TTML is the one.

LRC vs TTML: What Each Format Is

LRC has been around since 1998. One line of text per lyric and each one starts with a [mm:ss.xx] timestamp. There are optional header tags for title, artist and a global offset. That's about it. The player shows a line when its time arrives and keeps it up until the next one, because there is no end time. The LRC format guide covers every tag.

TTML stands for Timed Text Markup Language. It's a W3C standard built for subtitles and captions in broadcast and streaming. Everything lives inside XML. You get a <tt> root, a <head> for metadata and styles and a <body> with <div> and <p> elements. Each <p> has a begin and an end. Words can be wrapped in <span> elements with their own times.

Lyrics only use a narrow slice of the full spec. ttm:agent and ttm:role come from the TTML spec itself. Apple's files use ttm:agent to say who sings a line and the custom ttm:role="x-bg" value for background vocals, which isn't in Apple's public docs but shows up in every file people have pulled apart.

Ready to try it with your own file?

Upload audio, review the timing, and export the format you need.

The Same Two Lines in LRC, Enhanced LRC and TTML

Standard LRC. Line timing only.

[00:14.20]I left the porch light on for you
[00:18.05]In case you changed your mind

Enhanced LRC. Line timing plus a tag before each word.

[00:14.20]<00:14.20>I <00:14.55>left <00:14.90>the <00:15.30>porch <00:15.80>light <00:16.40>on <00:16.90>for <00:17.30>you
[00:18.05]<00:18.05>In <00:18.40>case <00:18.85>you <00:19.30>changed <00:19.95>your <00:20.50>mind

TTML with word-level spans. Same timing, but now there are end times and XML wrapped around it.

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xml:lang="en">
  <body>
    <div>
      <p begin="00:00:14.200" end="00:00:17.800">
        <span begin="00:00:14.200" end="00:00:14.550">I</span>
        <span begin="00:00:14.550" end="00:00:14.900">left</span>
        <span begin="00:00:14.900" end="00:00:15.300">the</span>
        <span begin="00:00:15.300" end="00:00:15.800">porch</span>
        <span begin="00:00:15.800" end="00:00:16.400">light</span>
        <span begin="00:00:16.400" end="00:00:16.900">on</span>
        <span begin="00:00:16.900" end="00:00:17.300">for</span>
        <span begin="00:00:17.300" end="00:00:17.800">you</span>
      </p>
      <p begin="00:00:18.050" end="00:00:21.000">
        <span begin="00:00:18.050" end="00:00:18.400">In</span>
        <span begin="00:00:18.400" end="00:00:18.850">case</span>
        <span begin="00:00:18.850" end="00:00:19.300">you</span>
        <span begin="00:00:19.300" end="00:00:19.950">changed</span>
        <span begin="00:00:19.950" end="00:00:20.500">your</span>
        <span begin="00:00:20.500" end="00:00:21.000">mind</span>
      </p>
    </div>
  </body>
</tt>

So two lyric lines come out as two short lines in LRC and twenty-five in TTML. The TTML does know when each word ends, which LRC doesn't store at all.

Where Each Format Is Used

LRCTTML
Local players (Poweramp, MusicBee, foobar2000)Yes, as a sidecar fileRare
Media servers (Jellyfin, Plex, Navidrome)YesNavidrome reads .ttml sidecars. Jellyfin and Plex don't list it
Apple Music deliveryNoYes. Apple's partner docs require TTML for time-synced lyrics
Broadcast and streaming captionsNoYes, it's the parent of IMSC and SMPTE-TT
Lyrics databases (LRCLIB)YesNo
Hand editingEasyPainful

LRC is for files on disk that you and your player own. TTML lives in pipelines. Think distributors and Apple and caption workflows, or apps that render word-level karaoke from a server.

One gap people trip on. Apple Music doesn't read TTML files you put in your own library. The TTML goes from the label to Apple through Transporter or iTunes Connect, so a TTML sidecar next to a local file does nothing.

Word-Level Timing in Both

Both formats carry word timing. They just do it differently.

In Enhanced LRC every word gets a <mm:ss.xx> tag before it. No end time. The word stays active until the next tag. Players that understand Enhanced LRC highlight word by word. Players that only know standard LRC strip the tags or print them as text in the lyric. Plexamp for example handles simple LRC only. The Enhanced LRC examples post shows how players react.

In TTML every word is a <span> with a begin and an end. That end time lets a renderer fade a word out or leave a gap between words or stretch a sustained note, and Apple's animated lyrics rely on it. A TTML file can also express things Enhanced LRC can't. Overlapping background vocals. Two singers on one line. A word held while the next line has already started.

If your player reads Enhanced LRC that's enough for karaoke-style highlighting. TTML is the one that can hold the richer behavior if you need it.

File Size and Readability

A standard LRC file for a four-minute song is usually 2 to 4 KB. Enhanced LRC lands around 8 to 15 KB. The same song as word-level TTML is more like 20 to 50 KB, and more with metadata and styling, because every word carries a full XML element with two timestamps. Storage doesn't care. You will though, the first time you open the file.

You can read an LRC file top to bottom like a lyric sheet. Fix a typo, nudge a timestamp and save. With TTML you have to find the right <span> among hundreds and keep the XML well-formed. One missing closing tag and the whole file fails to parse. Most people edit TTML with a tool.

TTML timestamps spell out hours, minutes, seconds and milliseconds (00:00:14.200) where LRC uses minutes, seconds and hundredths ([00:14.20]). Converters round, which is fine for lyrics.

Converting Between LRC and TTML

Both directions lose something. Know what before you convert.

LRC to TTML

  1. Each [mm:ss.xx] line becomes a <p> with that begin.
  2. The end has to be invented. Converters usually use the next line's start, plus a fixed duration for the last line.
  3. Enhanced LRC word tags can become <span> elements the same way. The free converter linked below keeps line timing only and drops the word tags. For word-level TTML use the app's own export.
  4. Header tags like [ti:] and [ar:] go into <head> metadata or get dropped.

You can use the free LRC to TTML converter. The LRC to TTML guide has the details.

TTML to LRC

  1. Each <p> becomes a line with its begin as the timestamp.
  2. End times get thrown away. LRC has nowhere to put them.
  3. Singer roles, background vocal markers and styling get thrown away too.
  4. Word spans get flattened to standard LRC lines by the free converter linked below. Keeping them as Enhanced LRC <mm:ss.xx> tags needs a tool that reads the span timing.

The TTML to LRC converter runs in the browser and the TTML to LRC guide covers what to check afterward.

Converting won't help if the source timing is rough. If you have the audio, upload it to EasyLRC and export LRC, Enhanced LRC or TTML fresh. The free plan is 5 minutes a month with no card. Word-level exports are on paid plans from $5 a month.

When to Pick Which

Pick LRC when:

  • The lyrics are going next to audio files in a folder, a NAS or a media server.
  • You want to open and fix the file by hand.
  • You're sharing lyrics with people who use regular players.
  • You aren't sure. It's the default for a reason.

Pick Enhanced LRC when your player supports it and you want word highlighting while staying with LRC.

Pick TTML when:

  • You're submitting lyrics to Apple Music through a distributor.
  • You're building an app that renders animated word-level lyrics and needs end times and roles.
  • The lyrics are part of a captioning or broadcast workflow that already speaks TTML.

And you can keep both. Generate once with word timing, then export TTML for delivery and LRC for your own library.

Frequently Asked Questions

Does Apple Music use LRC or TTML

TTML. Apple's partner documentation says time-synced lyrics must be delivered as TTML files through Transporter or iTunes Connect. Apple Music doesn't read LRC files. It doesn't read TTML sidecars from your local library either.

Can TTML lyrics have word-level timing

Yes. Each word goes in a span element with its own begin and end time, which is the mechanism behind Apple Music's word-by-word lyrics, going by the files people have pulled apart. Apple's own docs only say the updated TTML format. Enhanced LRC supports word timing too but without end times.

Is TTML better than LRC

It holds more. End times, singer roles, background vocals and styling. But almost no local music player reads it and it's hard to edit by hand. For files you play yourself LRC is the better pick. TTML makes sense for Apple Music delivery or apps that need the extra data.

What do I lose converting TTML to LRC

End times, singer and background vocal markers and any styling. Line and word start times carry over. Flatten to standard LRC and you lose the word timing as well.

Which media servers read TTML lyrics

Navidrome lists .ttml among its sidecar lyric formats. Jellyfin and Plex document LRC support but not TTML. So for a server library LRC is still the safe choice.

Ready to Create Your Own Enhanced LRC Files?

Try EasyLRC free—5 minutes of AI-powered word-level synchronization included.

LRCTTMLTimed LyricsComparison