How Lyrics Work
BBPlayer uses a smart caching system that:- Checks local cache first: Lyrics are stored in
lyrics/directory as JSON files - Auto-fetches from multiple sources: Searches Netease, QQ Music, and Kugou simultaneously
- Returns the fastest match: Uses
Promise.any()to return the first successful result - Caches for offline use: Downloaded lyrics remain available offline
Lyrics are stored in SPL format (Simple Parsed Lyrics) with support for original lyrics (
lrc), translated lyrics (tlyric), and romanization (romalrc).Automatic Lyrics Matching
When you play a track, BBPlayer automatically:Extracts Keywords
Cleans the track title to extract the core song name by:
- Prioritizing text within
《》or「」brackets - Removing decorative text in
【】or""quotes - Trimming whitespace
Searches Multiple Sources
Queries three lyric providers in parallel:
- Netease Cloud Music (网易云音乐)
- QQ Music (QQ 音乐)
- Kugou Music (酷狗音乐)
- Song title similarity
- Duration matching (allows ±3 second tolerance)
- Artist name matching
Special Handling for Bilibili Tracks
For videos with music metadata, BBPlayer:- Calls Bilibili’s
web-interface/player/v2API - Extracts the
bgm_info.music_titlefield - Uses this precise music name for lyrics search instead of the video title
Configuring Lyrics Source
You can control which provider is used for automatic matching:Manual Lyrics Search
If automatic matching fails or provides incorrect lyrics:Enter Search Query
Type the song name or artist. The search queries all three lyric sources and displays results with:
- Song title
- Artist name
- Duration
- Source platform icon
Adjusting Lyrics Timing
If lyrics are out of sync with the audio:Using the Offset Control
- Open the lyrics overlay during playback
- Tap the offset adjustment button (⏱️)
- Use + and - buttons to shift timing:
- Each tap adjusts by 0.5 seconds
- Positive values delay lyrics (use if lyrics are ahead)
- Negative values advance lyrics (use if lyrics are behind)
- The offset is saved to the lyric cache file under
misc.userOffset
How lyrics timing works
How lyrics timing works
Lyrics files contain timestamps in milliseconds for each line. The user offset is added to each timestamp during rendering. This offset is persisted in the cached JSON file, so it applies every time you play the track.
Lyrics Display Styles
BBPlayer offers multiple lyrics visualization options:Enable Verbatim Lyrics
When enabled, lyrics animate word-by-word with spring animations for a karaoke-style effect.
Old School Lyrics Style
To use the classic center-aligned lyrics display:- Go to Settings → Lyrics
- Enable 恢复旧版歌词样式 (Restore old-style lyrics)
Desktop Lyrics (Android Only)
Display synchronized lyrics over other apps:Enable Overlay Permission
Go to Settings → Lyrics → 桌面歌词 (Desktop Lyrics).When prompted, grant the “Display over other apps” permission in Android settings.
Show Desktop Lyrics
Toggle 桌面歌词 to ON. Lyrics will appear as a floating overlay starting with the next track.
Desktop lyrics require the
SYSTEM_ALERT_WINDOW permission. The overlay automatically hides when you close the app or stop playback.Lyrics File Format
Lyrics are cached as JSON files in this structure:id: Track’s unique keylrc: Original lyrics in LRC formattlyric: Translated lyrics (optional)romalrc: Romanized lyrics (optional, for Japanese/Korean songs)misc.userOffset: User-adjusted timing offset in seconds
Clearing Lyrics Cache
To free up storage or force re-download of lyrics:- Go to Settings → General
- Tap 清除歌词缓存 (Clear Lyrics Cache)
- Confirm the action
Lyrics Migration
BBPlayer automatically migrates older lyric formats on first launch:- Old format used
rawandrawOriginalLyricsfields - New format uses
lrc,tlyric,romalrcin SPL format - User offsets are preserved during migration
- A
.migration_v2_donemarker prevents redundant migrations
Troubleshooting
No lyrics found for my track
No lyrics found for my track
Possible solutions:
- Try manual search with different keywords
- Switch lyric source in settings (different providers have different catalogs)
- For Bilibili tracks, ensure the video has proper music metadata
- Check your network connection
- Some rare or independent tracks may not be in any lyric database
Lyrics are significantly out of sync
Lyrics are significantly out of sync
Possible causes:
- Wrong lyrics match (similar song with different duration)
- Audio source has intro/silence that shifts timing
- Use manual search to find the correct version
- Adjust offset - for major mismatches (>5 seconds), the lyrics are likely wrong
- Delete cached lyrics and try a different source
Desktop lyrics not appearing (Android)
Desktop lyrics not appearing (Android)
Checklist:
- Ensure overlay permission is granted
- Check that desktop lyrics toggle is ON in settings
- Restart the track (desktop lyrics activate on track change)
- Some Android ROMs restrict overlays - check manufacturer settings
- Background restrictions may prevent the overlay service - whitelist BBPlayer
Translated lyrics not showing
Translated lyrics not showing
Not all lyrics have translations. Translated lyrics are only available when the source provider includes them (common for Chinese songs with English translations or Japanese songs with Chinese translations).
Best Practices
- Select a primary source: Instead of “Auto” mode, choose the provider that works best for your music taste
- Adjust offset once: Most tracks from the same album will have similar timing issues
- Use manual search for covers: Cover versions often have different durations than originals
- Lock desktop lyrics: Prevent accidental repositioning during use
- Periodically clear cache: If experiencing sync issues across many tracks, clearing and re-downloading can help