# Spicy Lyrics swaps Spotify's lyrics pane for an animated one, on desktop only

> Spikerko/spicy-lyrics is an AGPL-3.0 TypeScript extension for the Spotify desktop client, built on Spicetify, that replaces the stock lyrics view with animated lyrics, dynamic backgrounds, romanization and customization, and it takes its lyrics from community uploaded TTML first. It cannot run on mobile or against a Snap install of Spotify on Linux, and it does not need Spotify Premium.

**Spikerko/spicy-lyrics** — Spicy Lyrics is an Extension made for Spicetify - A Spotify Client modifier

- Repository: https://github.com/Spikerko/spicy-lyrics
- Website: https://spicylyrics.org
- Stars: 680 · Forks: 89
- Language: TypeScript
- License: AGPL-3.0
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/spikerko-spicy-lyrics

## It replaces one view in the Spotify desktop client

Spicy Lyrics is an extension for Spicetify, a modifier for the Spotify client, and what it does is replace Spotify's lyrics view with animated lyrics, dynamic backgrounds, romanization and customization options. The scope is narrower than the name suggests, and the README is precise about the boundary. It is an open source extension for the Spotify desktop client, it runs only in that desktop client, and it does not need Spotify Premium. That last point matters more than it sounds, because the premium gating on the stock lyrics feature is one of the reasons people reach for a modifier in the first place. The desktop-only limit is the other side of the coin, since the extension injects itself into the running Spotify application, and the project FAQ answers the mobile question with a flat no.

## Installation is Spicetify, the Marketplace, and one click

The install path has three steps, and the first is Spicetify itself, which is what makes the injection possible. On Windows in PowerShell:

```powershell
iwr -useb https://raw.githubusercontent.com/spicetify/cli/main/install.ps1 | iex
```

and on macOS or Linux in a terminal:

```bash
curl -fsSL https://raw.githubusercontent.com/spicetify/cli/main/install.sh | sh
```

The second step is the Marketplace, which the README checks for by looking for a Marketplace button in the top left corner of Spotify, and which is installed the same way, with a PowerShell one-liner or a curl to shell script. The third step is the extension itself: open the Marketplace, go to Extensions, search for Spicy Lyrics and select Install. Marketplace installs update automatically, and if a new version has not appeared you restart Spotify. The manual route is marked as not recommended, and it exists for people who cannot use the Marketplace. You download spicy-lyrics.mjs, put it in your Spicetify Extensions folder, and run:

```bash
spicetify config extensions spicy-lyrics.mjs
spicetify apply
```

The trade is stated plainly in the README: manual installs do not update automatically.

## A Snap install of Spotify on Linux is a hard stop

One warning in the install section deserves more attention than it gets. Spicetify cannot modify a Snap-based Spotify installation on Linux, and the README points at the official Spicetify guide for other setups. The reason is structural rather than a bug. An extension works by patching files inside the Spotify installation, and a Snap package is mounted read only and managed outside the user account, so there is nothing for the patcher to write to. If your Linux Spotify came from the Snap store, the README is telling you that this project is not going to work for you, and the fix is a different installation of Spotify rather than a different version of the extension. It is also the single most common reason a Linux user ends up here, reads the warning and stops.

## The sync type is decided by the data, not by a setting

The FAQ on lyric types is short and answers the question that matters most. There are three kinds. Word-synced highlights individual words, or timed parts of words, as they are sung. Line-synced advances one timed line at a time. Static shows lyrics without timing. The sync type depends on the lyric data available for that exact track, and the README is explicit that there is no setting to turn line-synced lyrics into word-synced ones. In other words, the experience you get is a property of the file that exists for that song, not a preference you can set. Where the lyrics come from is also documented: community uploaded TTML lyrics first, then other supported sources, including Apple Music and Spotify, and what you see depends on availability, matching and source priority. The same priority rule explains the timing problems, since a lyric file timed against a different release will be out of sync with the version you are playing.

## Your own TTML can be imported without being uploaded

There is a local path into the same data model. Open the Lyrics Manager and import the TTML as a temporary upload, which is described as quick testing, or as a persistent one, which is kept in your local library. The README states that there is no setting for adding other online lyric providers, so the extension of the online catalogue is a community process rather than a configuration. The distinction between temporary and persistent also explains the offline answer in the FAQ: online lyric lookup needs an internet connection, while lyrics you import into the Lyrics Manager's persistent local library stay on your device until you remove them. For a self hosted lyric project, that local library is the part that keeps working when the network does not.

## The dependency list shows what the extension is made of

The package manifest is a good map of the implementation, and it is unusually broad for an extension. The lyric processing side includes fast-xml-parser, which is how TTML is read, cyrillic-romanization and kuroshiro for transliteration, franc-all and langs for language detection, and cubic-spline and d3-ease for the animation curves behind the visual effects. The state and data layer uses nanostores with its React bindings, @tanstack/react-query, @tanstack/virtual-core for long lists, idb for the local database behind the Lyrics Manager, and simplebar and sonner for scrolling and notifications. The build side is spicetify-creator, with sc, dev and build scripts, and the linting and formatting are oxlint and oxfmt. The repository also carries manifest.json, spice.config.ts, bun.lock, previews/ for the screenshots and a project/ directory, and the peer dependency on TypeScript is 5.9.3 or newer.

## Most of the troubleshooting is about Spotify and Spicetify state

The troubleshooting section starts with the case that will actually bite you, an extension that disappears after a Spotify update or fails to load, and it gives four commands to try in order:

```bash
spicetify apply
spicetify backup apply
spicetify update
spicetify restore backup apply
```

For lyrics that are missing, outdated or simply wrong, the README asks you to check that you opened the release you meant, since singles, albums, deluxe, clean and remastered versions can have different lyrics or timing, then to try another release of the same recording, then to clear the lyrics cache in the settings and reopen the song, then to check the status page, and finally to search the Discord channel and report with the exact Spotify link. Performance has its own note. Animated lyrics, dynamic backgrounds, themes, custom CSS and other extensions all add load, so the advice is to restart Spotify, test without other extensions or snippets, and check the Spotify hardware acceleration setting. Bug reports go to a Discord channel with your operating system, the Spotify, Spicetify and Spicy Lyrics versions, exact reproduction steps, what you expected, the song link and any screenshots, video or console errors, and there is a caution never to share account tokens, cookies or authorization headers in a report. Security issues go through SECURITY.md instead of the public channels.

## Spicy Player is the mobile route, and it is a different project

The alternative for anyone without a desktop client is Spicy Player, a separate offline Android music player by TX24 that ports the Spicy Lyrics experience, and the README is careful to say it is not a Spotify mobile extension. That difference in approach is the whole point. The extension works by modifying a running Spotify client, which means it inherits the client's catalogue, its playback and its account, and it inherits the desktop-only constraint. An offline player with its own library carries its own files and its own lyrics, so it can run on Android and can keep working without a network, but it is not your Spotify library and it is a different codebase maintained by a different person. The font customisation question has a similar shape. Installing a CSS snippet to set a font changes Spotify's whole interface, not only the lyrics, and the README says to disable the snippet if characters go missing or layouts break.

## Conclusion

Adopt Spicy Lyrics if you use the Spotify desktop client on Windows, macOS or Linux and want word by word lyrics with dynamic backgrounds, and you are willing to install Spicetify and the Marketplace alongside it. Do not adopt it expecting it to work on the Spotify mobile app, since it runs only in the desktop client, and do not try it against a Snap installed Spotify on Linux, which Spicetify cannot modify. Before you install, check which lyric sources are reachable from your region, and read the troubleshooting order in the README, because a Spotify update that leaves the extension unloaded is the most likely thing to go wrong.

## FAQ

### Does Spicy Lyrics need Spotify Premium?

No. The README states that Spicy Lyrics runs only in the Spotify desktop client, through Spicetify, and that it does not need Spotify Premium.

### Can I use Spicy Lyrics on the Spotify mobile app?

No. The extension runs in the desktop client only, and the README points to Spicy Player, a separate offline Android music player by TX24 that ports the Spicy Lyrics experience but is not a Spotify mobile extension.

### Where do the lyrics in Spicy Lyrics come from?

Community uploaded TTML lyrics first, then other supported sources, including Apple Music and Spotify, and what you see depends on availability, matching and source priority. You can also import your own TTML into the Lyrics Manager as a temporary upload or a persistent one kept in your local library.

### How do I install Spicy Lyrics manually?

The README marks this as not recommended. You download spicy-lyrics.mjs, put it in your Spicetify Extensions folder, then run spicetify config extensions spicy-lyrics.mjs followed by spicetify apply. Manual installs do not update automatically, unlike Marketplace installs.

### What do I do if Spicy Lyrics disappears after a Spotify update?

The README gives four commands to try in order: spicetify apply, spicetify backup apply, spicetify update, and spicetify restore backup apply. If the lyrics are wrong rather than missing, check that you opened the release you meant, try another release of the same recording, clear the lyrics cache in the settings, and check the status page.

## Sources

- [License: AGPL-3.0](https://github.com/Spikerko/spicy-lyrics/blob/main/LICENSE)
- [Project website](https://spicylyrics.org)
- [README](https://github.com/Spikerko/spicy-lyrics/blob/main/README.md)
- [Releases](https://github.com/Spikerko/spicy-lyrics/releases)
- [Spikerko/spicy-lyrics on GitHub](https://github.com/Spikerko/spicy-lyrics)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/spikerko-spicy-lyrics
