SyncLRC is a simple, minimalist lyrics finder designed to help you discover and export lyrics in multiple formats. Whether you need word-by-word (Karaoke) lyrics, time-synced (Synced) LRC files, or simple text (Plain), SyncLRC has you covered.
- Triple Format Support: Fetch lyrics in Karaoke (Enhanced LRC), Synced (Standard LRC), and Plain Text formats.
- Clean Sanitization: Automatically filters out metadata and credit clutter (lyricists, composers, etc.) for a distraction-free experience.
- Developer API: Built-in
/searchand/lyricsendpoints for programmatic access. - Web Access: Try it at synclrc.dev
GET /search?q={query}&limit={limit}&offset={offset}
Parameters & Response
Parameters:
q: (Required) Search term (track or artist name).limit: (Optional) Max results (default10).offset: (Optional) Pagination offset (default0).
Response:
{
"results": [
{
"id": "a1b2c3d4e5f6g7h8...",
"track": "Song Name",
"artist": "Artist Name",
"lyrics": {
"plain": "Lyrics text...",
"synced": "[00:00.00]...",
"karaoke": "[00:00.00]<00:00.05>..."
}
}
]
}Fetch by ID (path)
GET /lyrics/{id}?type={type}
Fetch by Track & Artist (query params)
GET /lyrics?track={track}&artist={artist}&type={type}&album={album}&duration={duration}
Parameters & Response
type: (Optional)karaoke,synced, orplain.track: (Required) Song name.artist: (Required) Artist name.type: (Optional)karaoke,synced, orplain.album: (Optional) Album name for more accurate matching.duration: (Optional) Track duration in seconds for more accurate matching.
Response:
{
"id": "abc123...",
"track": "Song Name",
"artist": "Artist Name",
"album": "Album Name",
"duration": 215,
"instrumental": false,
"karaoke": "[00:00.00]<00:00.05>...",
"synced": "[00:00.00]...",
"plain": "Lyrics text..."
}Contributions are welcome!
- Improvements: Feel free to open an issue or pull request.
- Sanitization: We maintain a list of strings to filter out (like "Synced by", "Translated by"). If you find more clutter in lyrics, please add them to the sanitization list in
src/sanitize.js.
SyncLRC acts as an easy gateway for developers, as there is no open and free word-by-word (karaoke-style) synced lyrics provider available. SyncLRC does not permanently store or host copyrighted lyrics. All lyric content is fetched on-demand from third-party sources and returned directly to the requesting client. A short-lived transient cache exists solely to reduce redundant outbound API calls and is automatically evicted.
This project uses the iTunes Search API to fetch track metadata, LRCLIB as the primary lyrics source, and LDDC + syncedlyrics for fetching lyrics from Netease, QQ Music, Kugou, and Musixmatch.