Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SyncLRC

SyncLRC

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.

Release AGPLv3 Cloudflare

Features

  • 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 /search and /lyrics endpoints for programmatic access.
  • Web Access: Try it at synclrc.dev

Developer API

1. Search Tracks & Lyrics

GET /search?q={query}&limit={limit}&offset={offset}

Parameters & Response

Parameters:

  • q: (Required) Search term (track or artist name).
  • limit: (Optional) Max results (default 10).
  • offset: (Optional) Pagination offset (default 0).

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>..."
      }
    }
  ]
}

2. Fetch Specific Lyrics

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, or plain.
  • track: (Required) Song name.
  • artist: (Required) Artist name.
  • type: (Optional) karaoke, synced, or plain.
  • 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..."
}

Contributing

Contributions are welcome!

  1. Improvements: Feel free to open an issue or pull request.
  2. 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.

Legal Disclaimer

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.


Credits

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.

Releases

Contributors

Languages