How to make synced lyrics

Add your own timing to a song you love.

We'll walk through making an ALRC (synced lyrics file), uploading it, and publishing.

1) Make it in the app→2) Upload on the web→3) Check while private→4) Publish

First: the recommended setup

🖥️ For input, the Windows / macOS app is by far the best

The keyboard's space bar is fast and precise for timing. We recommend creating with the Windows / macOS app.

You can also create on mobile, but then we recommend connecting a physical keyboard for key input. You can enter timing by tapping the screen too, but in the author's own experience, tap input was very hard going.

🎧 Use wired earphones to avoid audio lag

Bluetooth earphones and TV connections (HDMI, etc.) tend to cause audio lag, where sound is heard late — a common cause of off timing. When adding timing, we recommend wired earphones or speakers.

* Timing input (adding Time tags by space/tap, slow playback, shifting everything, exporting the file) is an app feature. The 'Edit' on the web is for metadata such as the title — it can't create timing.

STEP 1Prepare the lyrics

⚠️ You can't copy from lyrics websites

Typical lyrics websites prohibit copying and downloading in their terms, so you can't obtain lyrics from them.

If you own the physical album CD or similar, prepare the lyrics text yourself — for example by typing it out while looking at the lyrics card (booklet).

Before you start: add timing against a file on your device

When you add timing, use a music file stored on your device. Songs you listen to through services like Apple Music are DRM-protected (“protected songs” from here on), and they are not suited to timing work.

With a file on your device, the app itself is what plays the audio. It counts the samples it sends to the speaker, so the time written into each Time tag comes straight from that count.

There is a further delay between sending the sound out and it reaching your ears, but it stays essentially constant as long as you use the same output. Measure it once with the app's sync calibration and it is subtracted from then on (with wireless earphones or car audio it can differ on every connection).

🔒 With a protected song, the app cannot tell exactly where playback is

A protected song has no file the app can open in the first place. That is by design, to protect rights holders — not a bug. Playback is therefore handed to the OS player, and that audio never passes through the app.

All the app can do is ask “how many seconds in are we?” It asks about 20 times a second, but the answer itself only updates in coarse steps, so asking more often does not buy a finer answer.

On top of that, there is no way to tell which instant of the sound leaving your speaker that answer corresponds to. The delay of the audio output itself can be measured, but how far ahead the program doing the playback has read and buffered is not visible from outside.

To keep the display from stuttering, the app fills the gaps by advancing from the last position it was given. What you see is always an approximate position.

This error is not constant; it keeps changing during playback. So every Time tag you stamp on a protected song absorbs whatever error happened to exist at that moment.

Play the result back against your own audio file later and those errors do not cancel out — they stay, scattered line by line. Shifting everything by a few milliseconds moves the average, not the scatter.

💿 If you want to time a song you listen to on Apple Music

Load a music file of the same recording into the app — ripped from a CD you own, or any audio you obtained legitimately — and add the Time tags there. As long as it is the same recording, the synced lyrics you end up with work for that song as they are.

The streamed version and your own file may start at slightly different points, but that is a constant offset across the whole song, so the sync offset control lines it up.

Even without a file of your own, you can still play a protected song and watch the lyrics as usual. And if the timing of already-published synced lyrics bothers you, you can send the author a fix request.

* The test is simply whether the file physically exists on your device. A song that sits in your cloud library but has not been downloaded is subject to the same limits, DRM or not.

* The same applies on Mac when you drive an external music app: the playback position is only what that app reports. And for the same reason, features that alter the sound itself (tone adjustment and so on) are unavailable for protected songs.

STEP 2Add timing in the app (make the synced lyrics)

  1. 1

    Paste the lyrics while the music plays

    Play the song you want to time from a music file on your device (the section above explains why protected songs don't work well).

    In the app, open the song's lyrics view and choose 'Edit Time tags'. Then click 'Edit lyrics text' to open a screen where you can edit the lyrics directly, and paste your prepared lyrics text here.

  2. 2

    Enter the metadata

    Enter the title and artist, the members to tag (singing parts), and, if needed, the display style (font, colors, etc.).

  3. 3

    Add Time tags with space / tap

    In time with each phrase, press the space bar (or tap) to add Time tags line by line, character by character.

  4. 4

    Play from the start at 1× to check

    Once all Time tags are in, play from the start of the song at 1× and check that the lyrics and audio line up perfectly.

  5. 5

    When it's done, export the .alrc file

    Once the timing is set, export the file (.alrc) from the app. This is your 'synced lyrics file'.

🐢 Tip: chase a perfect fit at 0.5× / 0.25×!

At 1×, human reaction time inevitably leaves things noticeably off. We recommend adding tags with slow playback at 0.5× or 0.25×. Please do obsess over getting it spot-on here!

🎚️ Watch for audio lag: correct it 'all at once, at the end'

With Bluetooth or a TV connection, audio lag is likely. First play another song's lyrics to see how much it's off, then correct it all at once at the end with 'shift everything'.

To prevent audio lag in the first place, we recommend using wired earphones.

⏱️ Timing rule: never go backwards within a line

Within a line, each character must start at the same time as, or later than, the character to its left. Timing where a character on the right starts before one on the left (time going backwards) makes the display too complex, so it is treated as an error and cannot be uploaded.

On the other hand, separate lines may start at the same time. Use this for harmonies and similar cases, where you split the parts onto their own lines and have them sung together.

STEP 3Upload on the web

Once you've exported the file, log in to think-songs.com, open 'Upload', and fill it in this order.

[Screenshot] Upload screen: file selection and the 'Copyright check' section
  1. 1

    Choose the file (.alrc / .lrc / .txt, up to 10 MB)

    Drag and drop, or click to choose, the lyrics file you made. If the character encoding isn't UTF-8, choose 'Convert to UTF-8 and upload (recommended)'.

  2. 2

    Answer the 'Copyright check'

    Tick 'This song is not a foreign work', then choose 'Rights holder of this song' (JASRAC / NexTone / I hold the rights / Royalty-free / Other = coming soon).

    🌐 Foreign works (overseas songs) involve a different rights-clearance process, so they aren't supported on this service yet (support is under consideration). Royalty-free songs, however, are an exception.

  3. 3

    Enter the title, artist, album, etc.

    The title is required (it may be auto-filled from the file). Enter the artist and album, and 'Additional info (lyricist / composer / arranger)' if needed. For the album cover, don't use copyrighted images (CD jackets, artist photos, etc.).

  4. 4

    Leaving visibility on 'Private' is the safe choice

    We recommend leaving visibility at its default 'Private' (you can publish after checking it post-upload). Set 'Show creator' and 'Uploader comment' as needed.

  5. 5

    'Review content →' → look it over on the confirmation screen → 'Upload →'

    On the confirmation screen, look over your entries carefully before uploading. If something's wrong, fix it with '← Back to edit'.

📋 For JASRAC / NexTone-managed songs, always check the 'works database'!

For commercial and other songs managed by JASRAC / NexTone, always search the official works database and enter the work code, title, and artist exactly as shown. This is a very important request.

JASRAC works database searchNexTone work search

[Screenshot] The 'work code' field that appears when the rights holder is set to JASRAC / NexTone

🎙️ For your own songs, you can upload the audio file too!

If you set the rights holder to 'I hold the rights' or 'Royalty-free', you can also attach an audio file (MP3 / FLAC / AAC, up to 100 MB; an agreement checkbox is required). FLAC is recommended for seek accuracy. Let everyone hear it!

Turn on 'Allow download' to let listeners download your song (off by default).

[Screenshot] Upload confirmation screen (final check of title, rights holder, visibility, etc.)

STEP 4Check, then publish

  1. 1

    Open the uploaded song from My Page

    Open the song you just uploaded from 'My Page' → 'My Lyrics' (private songs show a 'Private' badge).

  2. 2

    Do a final timing check in the player

    Play it in the song page's player and do a final check of the synced display. Tap a line to jump to that point. Fix small offsets with 'Audio-lag correction (±50 ms, ↺ Reset)', or, with no audio, shift everything using '−0.5s / −0.2s / +0.2s / +0.5s'.

  3. 3

    Publish at last, in 'Visibility'!

    Once you're happy with the timing, change it in the song page's 'Visibility' to 'Public' or 'Unlisted (only people with the link)'. That's it — you're live!

[Screenshot] The song page's 'Visibility' (switch between Public / Unlisted / Private)

About the “Auto-generated” mark

In song lists and on song pages you may see a yellow “Auto-generated” mark. It means the timing was set automatically by software or AI. Click it (or tap it on a phone) to see the explanation.

⚠️ Auto-generated, so the timing may not be exact

Timing set automatically is not as precise as timing matched by hand. Breaths, held notes and the start of harmonies can all feel slightly off.

If something bothers you, you can propose a correction with a timing fix request (next chapter). Auto-generated lyrics are exactly where those proposals help most.

🔎 Only the “timing” is automatic

This mark does not mean the lyrics text was generated. The lyrics come from the uploader; the mark refers only to which character lights up when.

When you upload, turn on “The timing is auto-generated” at the bottom of the upload page. You can also change it later from the song’s edit page. If your .alrc file contains autogenerated: true, it will already be on when the upload page opens.

STEP 5After publishing: getting to “perfect” together

Anyone who notices that something is slightly off in your published lyrics can propose a fix (a timing fix request). Nothing is ever applied on its own — you see exactly what would change, and you decide whether to merge it.

Proposals you receive appear under My page → Timing fix requests. This chapter is about how to read the diff you'll see there.

How to read the diff

A diff lists only the lines that changed — showing the whole song would bury what actually moved. One line looks like this.

12行目0:12.400

ひとりのよる

and+60msり−40ms
  • “12行目” and “0:12.400” at the top left tell you where you are: which line of the lyrics, and when that line starts.
  • Below that is the line itself, so you don't mistake which phrase is being discussed.
  • In each chip, the left side is the character to move and the right side is how far. Plus (amber) means later, minus (blue) means earlier. The example above proposes moving “と” 60ms later and “り” 40ms earlier.
  • You (the uploader) and the operators also see the actual before/after times, like “0:12.680 → 0:12.740”.

Changes to the text itself (typos, readings) appear in green. The struck-through text on the left is what you have now; the right is what's proposed.

13行目0:18.900

光がさす

光 (ひかり)→光 (ひかる)が−120ms

🔎 Always check text changes yourself

With timing, right and wrong are obvious. With text, what you typed from the booklet is often already correct — spelling variants, deliberate kana, an artist's own styling. When you see a green chip, compare it against the booklet before deciding.

What can and can't be proposed

A fix request can only carry timing changes and text changes. Anything that changes the structure of the lyrics — the number of lines or how words are split — is refused at submission time. The reason is explained at the end.

✅ 1. Move a single character slightly later or earlier

The most common case: off by the length of an opening consonant, or the break in a held vowel sitting in the wrong place.

- [00:12.400]<0.00>ひ<0.28>と<0.55>り<0.90>の
+ [00:12.400]<0.00>ひ<0.34>と<0.55>り<0.90>の

→ Only “と” moves, by +60ms. The diff shows a single chip.

✅ 2. A whole line comes in slightly off

Every character in that line moves the same way — typical when only the entry after an interlude is late.

- [00:18.900]<0.00>光<0.62>が<1.05>さ<1.44>す
+ [00:18.900]<0.08>光<0.70>が<1.13>さ<1.52>す

→ All four chips read +80ms. The trick is to leave the line's [00:18.900] alone and move only the relative tags inside it.

✅ 3. Fixing a typo or a reading

Replacing text is fine — one character for one character, one reading for another.

- <0.00>{光|ひかり}<0.62>が
+ <0.00>{光|ひかる}<0.62>が

→ A green chip reads “光 (ひかり) → 光 (ひかる)”.

✅ 4. Fixing timing and text at once

“I fixed the typo and the timing while I was there” is common. Both fit in one proposal, and the diff shows green alongside amber and blue.

🚫 5. Adding or removing lines

Adding a missing line, adding a repeated chorus, tidying blank lines — none of these can be accepted.

  [00:18.900]<0.00>光<0.62>が<1.05>さ<1.44>す
+ [00:22.000]<0.00>あ<0.50>さ<1.00>が<1.50>くる

→ Ask people to report missing or extra lyrics as a comment (“Report a problem” on the song page). Fixing it yourself in the app and replacing the file is the surest route.

🚫 6. Changing how words are split or joined

Even when the text is identical, the proposal is refused if the number of tag positions changes.

- [02:14.350]<0.00>きみと<0.62>あるき<1.35>だす
+ [02:14.350]<0.00>き<0.30>み<0.62>と<1.00>あるき<1.35>だす

→ Splitting “きみと” into single characters is a good idea for finer highlighting, but it can't be sent this way. Ask for it as a comment instead.

🚫 7. The whole song is off by the same amount

“Everything feels about 0.2s late” is not a reason to rewrite the lyrics file — it differs per listener (Bluetooth, device, audio source).

→ The player's sync offset lets each listener match their own setup. A whole-song shift is turned away at submission with exactly that advice.

🚫 8. The change is too large (over half the song)

That's a rebuild, not a fix — the diff gets too long for you to review properly. In that case it's better for that person to upload their own version.

🚫 9. Wrong title, artist, credits, or work code

None of these live in the lyrics file, so a fix request can't touch them. Have people report them as a comment, and fix them yourself from Edit on the web.

🧩 Why only line and word count changes are refused

The diff matches your lyrics against the proposal by position — which line, which character. If the counts change, that correspondence shifts wholesale and the diff stops meaning anything.

More importantly, a shifted correspondence leaves room for changes you never saw. What you read on screen must be exactly what gets applied — so this one case is refused outright.

What you can do when merging

  1. 1

    Listen and compare

    Opening “🎧 Listen and compare” on the review screen splits every line into two rows: the current lyrics on top, the proposal below. Both fill at the same playback position, so you can see at a glance which one lights up first — that is, which one matches the music.

    It isn't a toggle because you can't compare fills from memory. A 50ms difference only becomes visible when both run side by side.

  2. 2

    Merge line by line

    When line 1 is genuinely a fix but line 3 was intentional, just uncheck it. Only the checked lines are applied; the rest stay as they are.

  3. 3

    Decline

    Declining is a perfectly good answer. These are your lyrics — if it was intentional, don't hesitate to pass.

  4. 4

    Undo it later

    If you merge and then prefer what you had, History on the song page restores it any time. History is never deleted, so you can even undo the undo. Merge without worrying.

🤝 Merging credits the person who helped

People whose proposals you merge are credited on the song page. Getting everything perfect alone is hard — close the gap together with the people who noticed.

🔁 When a proposal says it needs redoing

When you replace the lyrics file, restore an older version, or merge a different proposal, any proposal that arrived earlier no longer lines up. Those are marked as needing a redo automatically, and their authors are told.

This is not a rejection. Nothing was wrong with the proposal — the lyrics underneath simply moved — so its author can send it again against the latest version.

* Creating and sending a proposal is done in the app; the web is where you review and merge what arrives. People who send proposals only see how far each character moves (±ms), never the actual tag times — so the timing you spent hours on stays yours.

Ready to go?

Licensed by JASRAC and NexTone. We operate with respect for rights holders (lyrics are protected and distribution is limited).