LRCLIB API
Free lyrics API with no key: plain and time-synced LRC lyrics for millions of tracks, searchable by title, artist or exact track signature. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the LRCLIB API?
LRCLIB is a free, key-free lyrics API serving both plain text lyrics and time-synced LRC-format lyrics for millions of tracks. It can be searched by free text or queried for an exact match using track title, artist, album and duration together.
Lyrics APIs are a graveyard — most have been shut down by rights-holder pressure or moved behind expensive licensing. LRCLIB survives as a crowdsourced, open database and has become the lyrics backend for a good number of open source music players precisely because it asks for nothing: no key, no account, no attribution requirement.
The feature that sets it apart is `syncedLyrics`, returned in LRC format with a `[mm:ss.xx]` timestamp on each line. That is what makes karaoke-style scrolling possible, and very few free sources provide it. Two endpoints matter: `/api/search` for fuzzy lookup, and `/api/get` for an exact match using title, artist, album and duration together — use the latter in a player, because fuzzy search on a common song title returns many near-identical wrong results.
Quick facts
- Base URL
https://lrclib.net/api- Authentication
- No API key or account for reads. Contributing lyrics uses a lightweight proof-of-work challenge instead of authentication.
- Rate limit
- No hard published limit. LRCLIB asks that clients identify themselves with a descriptive User-Agent naming the app and version.
- Pricing
- Free. The database is crowdsourced and openly available.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the LRCLIB API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Search for lyrics by track name
GET https://lrclib.net/api/search?q=believer
curl 'https://lrclib.net/api/search?q=believer'const res = await fetch("https://lrclib.net/api/search?q=believer");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://lrclib.net/api/search?q=believer", timeout=20)
res.raise_for_status()
print(res.json())[
{
"id": 6557398,
"name": "Believer",
"trackName": "Believer",
"artistName": "Sound Of Believer",
"albumName": "Believer",
"duration": 201.0,
"instrumental": false,
"plainLyrics": "First things first\nI'ma say all the words inside my head\nI'm fired up and tired of the way that things have been, oh (ooh)\nThe way that things have been, oh (ooh)\nSecond thing\nSecond, don't you tell me what you think that I can be\nI'm the one at the sail, I'm the master of my sea, oh (ooh)\nThe master of my sea, oh (ooh)\n\nI was broken from a young age\nTaking my sulking to the masses\nWriting my poems for the few\nThat looked at me took to me, shook to me, feeling me\nSinging from heart ache from the pain\nTake up my message from the veins\nSpeaking my lesson from the brain\nSeeing the beauty through the\n\n(Pain)\nYou made me a, you made me a believer, believer\n(Pain)\nYou break me down, you build me up, believer, believer\n(Pain)\nI let the bullets fly, oh let them rain\nMy life, my love, my drive, it came from\n(Pain)\nYou made me a, you made me a believer, believer\n\nThird things third\nSend a prayer to the ones up above\nAll the hate that you've birthed has\nTurned your spirit to a dove, oh (ooh)\nYour spirit up above, oh (ooh)\n\nI was choking in the crowd\nLiving my brain up in the cloud\nFalling like ashes to the ground\nHoping my feelings, they would drown\nBut they never did, ever lived, ebbing and flowing\nInhibited, limited\n'Til it broke up and it rained down\nIt rained down, like\n\n(Pain)\nYou made me a, you made me a believer, believer\Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q | query | Optional | Free-text search across track and artist names, on the `/search` endpoint. believer |
track_name | query | Optional | Exact track title, for the `/get` endpoint. Believer |
artist_name | query | Optional | Exact artist name, paired with `track_name`. Imagine Dragons |
album_name | query | Optional | Album title, which disambiguates re-recordings and remasters. Evolve |
duration | query | Optional | Track length in seconds. LRCLIB matches within a small tolerance, and this is the strongest disambiguator. 204 |
Response fields
idinteger- LRCLIB record identifier.
trackName / artistName / albumNamestring- Track metadata as stored. Crowdsourced, so spelling varies between records for the same song.
durationfloat- Track length in seconds. Compare it against your own file's duration to confirm you matched the right recording.
instrumentalboolean- True when the track has no lyrics, which is a meaningful answer rather than a missing one.
plainLyricsstring- Lyrics as plain text with newline separators.
syncedLyricsstring- LRC-format lyrics with a `[mm:ss.xx]` timestamp per line. Null when nobody has contributed a synced version.
What you can build with the LRCLIB API
- Add scrolling karaoke-style lyrics to a music player
- Display lyrics alongside a now-playing widget
- Build a lyrics search tool
- Detect instrumental tracks reliably via the instrumental flag
Common errors and how to fix them
404
No lyrics found for the exact query.
Fix: The `/get` endpoint requires a close match on title, artist and duration. Fall back to `/search` and pick from the results rather than treating 404 as final.
Wrong song returned
Fuzzy search matched a different track with a similar name.
Fix: Use `/get` with `duration` in a player. A common title like "Believer" has many unrelated recordings, and duration is the strongest disambiguator.
syncedLyrics is null
Nobody has contributed a synced version for that track.
Fix: Fall back to `plainLyrics`. Synced coverage is much thinner than plain coverage.
LRCLIB API — frequently asked questions
Is the LRCLIB API free?
Yes, free with no API key or account for reading. LRCLIB asks only that your client sends a descriptive User-Agent naming the app and version so they can identify problem traffic.
What are synced lyrics?
Lyrics in LRC format, where each line carries a `[mm:ss.xx]` timestamp marking when it is sung. That is what enables karaoke-style scrolling, and it is rare among free lyrics sources.
How do I get the right song rather than a similar one?
Use the `/get` endpoint with track name, artist name, album and duration together rather than the fuzzy `/search`. Duration is the strongest disambiguator — a common song title matches many unrelated recordings.
Is it legal to use these lyrics?
The database is crowdsourced and LRCLIB imposes no restrictions of its own, but lyrics remain copyrighted works owned by publishers. Personal and open source player use is the normal context; commercial display generally requires a licence from the rights-holders.
Tools that pair with this API
Word Counter
Count words, characters, sentences, paragraphs and estimated reading time instantly. Free online word counter for essays, blogs and social media.
Strip HTML Tags
Remove all HTML tags and convert markup to clean plain text. Decode HTML entities and keep line breaks for block elements like paragraphs and headings.
Time Duration Calculator
Add or subtract hours, minutes and seconds, or sum a list of durations into a total shown in h:m:s and in total seconds. Free and 100% in-browser.
LRCLIB is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.