Your Spotify Universe, Commanded by NVDA.
Go beyond simple playback. Accessify Play transforms NVDA into a powerful command center for your entire Spotify experience. Control what's playing on any of your devices—your PC, phone, smart speaker, or console—directly from your keyboard, without ever touching the Spotify app.
Search, discover, manage playlists, and control your music with unparalleled freedom. This is how Spotify was meant to be experienced with a screen reader.
⚠️ Important: Spotify Premium Required!
Due to Spotify API limitations, this addon requires an active Spotify Premium subscription for playback control features. Free accounts have restricted API access and will not work correctly with this addon.
Accessify Play now includes lyrics support powered by lrclib.net — a free, open, and community-driven lyrics database. All lyrics served by lrclib.net are released under the Creative Commons Zero (CC0) license, meaning they are in the public domain and can be used freely without any copyright concern. This is the key distinction that makes this feature legal, distributable, and fully compliant — unlike scraping from unlicensed sources.
Two lyrics modes are available inside the Command Layer (NVDA+Alt+g):
W — Lyrics Window: Opens a popup showing the full, plain-text lyrics for the current song. Navigate line by line with arrow keys — NVDA reads each line as you go.Y — Auto Lyric Reading: NVDA automatically speaks each lyric line in real time, perfectly synchronized with the music as it plays. Press Y again to stop.This addon is licensed under the GNU General Public License v2.0.
Accessify Play is packed with features, organized for your convenience:
W): Open a popup showing the full plain-text lyrics for the current track, navigable line by line with arrow keys.Y): Toggle NVDA automatically speaking each lyric line in real time, synchronized to the music.| Command | Shortcut |
| :--------------------------- | :----------------------------------- |
| Play/Pause | NVDA+Shift+Alt+Space |
| Next Track | NVDA+Shift+Alt+RightArrow |
| Previous Track | NVDA+Shift+Alt+LeftArrow |
| Volume Up | NVDA+Shift+Alt+UpArrow |
| Volume Down | NVDA+Shift+Alt+DownArrow |
| Set Specific Volume | NVDA+Shift+Alt+V |
| Seek Forward (configurable) | Control+Alt+NVDA+RightArrow |
| Seek Backward (configurable) | Control+Alt+NVDA+LeftArrow |
| Announce Current Track | NVDA+Shift+Alt+I |
| Announce Playback Time | NVDA+Alt+Shift+T |
| Copy Track URL | NVDA+Shift+Alt+C |
| Open Search Dialog | NVDA+Shift+Alt+S |
| Play from Link Dialog | NVDA+Shift+Alt+P |
| Open Queue List | NVDA+Shift+Alt+Q |
| Announce Next in Queue | NVDA+Shift+Alt+N |
| Save Track to Library | NVDA+Alt+Shift+L |
| Add Track to Playlist | NVDA+Alt+Shift+A |
| Open Management Dialog | NVDA+Alt+Shift+M |
NVDA+Alt+g) Quick ReferencePress
NVDA+Alt+gfirst to enter the command layer, then press the single key listed below.
| Key | Action |
| :-- | :----- |
| P | Play / Pause |
| N | Next Track |
| B | Previous Track |
| S | Search |
| V | Set Volume |
| I | Announce current track |
| T | Announce playback time |
| L | Like / Unlike track |
| H | Toggle Shuffle |
| R | Cycle Repeat |
| Q | Queue list |
| A | Add to playlist |
| M | Management dialog |
| D | Switch device |
| U | Play from link |
| J | Seek dialog |
| X | Copy Universal (Song.link) URL |
| Z | Sleep timer |
| W | Lyrics Window |
| Y | Toggle Auto Lyric Reading |
| F1 | Show command help |
| F2 | Open Command Layer Editor |
| F4 | Open settings |
| Escape | Close command layer |
You may have noticed that the queue list in Accessify Play (NVDA+Shift+Alt+Q) can be both incredibly accurate and, at other times, seem completely out of sync with what's playing next. This behavior is not a bug but a direct consequence of the data provided by the Spotify API.
Here is the precise breakdown of when the addon's queue list is reliable and when it is not:
The queue list displayed by the addon is a correct representation of what Spotify will play next in two key scenarios:
The predictability breaks down completely in two very common situations, causing a mismatch between the addon and the Spotify app:
To provide a consistent experience, Accessify Play is designed to show exactly what the Spotify API provides. The addon uses the official /me/player/queue endpoint. According to the Spotify Developer documentation, this endpoint is designed to:
Get the list of objects that make up the user's queue.
This means the API's definition of a "queue" is primarily the list of manually added tracks. While the API response also includes the next track from the current context (album/playlist), it cannot provide the full, upcoming sequence for shuffled or algorithmically generated content.
Therefore, the Accessify Play queue feature is your reliable tool for two main purposes:
It should not be used as a reference when Shuffle Mode is ON or when Autoplay has started, as the API does not provide the necessary data for those scenarios.
To use this addon, you need to get a Client ID and Client Secret from the Spotify Developer Dashboard. Follow these steps carefully.
http://127.0.0.1:8888/callback
> Note on Port 8888: Based on private reports, some users experience validation failures. This can happen if another application on your computer (often a local development server) is already using port 8888.
>
> Future Update: To prevent this conflict, the default port for the addon will be changed to 8539 in a future version.NVDA+N), go to Preferences, then Settings.main branch on GitHub.dev branch on GitHub.Accessify Play includes a built-in update system to keep your add-on up-to-date with the latest features and bug fixes. Updates are sourced directly from GitHub Releases.
If "Check for updates automatically" is enabled in the settings, Accessify Play will perform a silent check for new versions every time NVDA starts. If an update is available for your selected channel (Stable or Beta), a pop-up window will appear, showing the new version and its changelog. You can then choose to download and install the update or postpone it.
If no update is available, or if an error occurs during the background check (e.g., no internet connection), the add-on will remain silent and not display any messages.
You can manually check for updates at any time by navigating to the Accessify Play settings panel (NVDA menu -> Preferences -> Settings -> Accessify Play) and clicking the "Check for Updates" button. The process is similar to automatic updates: if a new version is found, a pop-up will appear; otherwise, a message will confirm that you are running the latest version.
You can choose between two update channels in the settings:
main branch on GitHub.dev branch on GitHub. While they offer early access, they might be less stable than official releases.With version 1.3.0, Accessify Play has undergone a significant update to its authentication system to enhance security and improve user experience, especially for portable NVDA installations.
Client Secret, making your Spotify integration safer.%userprofile%/.spotify_client_id.json. This ensures your Client ID remains intact even if you move or reinstall NVDA, and it's easier to manage.%userprofile%/.spotify_client_id.json file.You might be wondering why Accessify Play requires you to create your own Spotify application and input a Client ID, instead of offering a simple "Login to Spotify" button like many other apps (e.g., Alexa, Google Home, etc.). The answer lies in Spotify's API policies and the challenges faced by independent developers.
To provide a seamless "Login to Spotify" experience without requiring users to become "mini-developers," an application needs to apply for and be granted an Extended Quota from Spotify. The requirements for obtaining such an extended quota are quite extraordinary and often include:
For a small, independent, and open-source accessibility addon like Accessify Play, meeting these stringent requirements is almost impossible. The resources, legal overhead, and user base needed are far beyond what this project can realistically achieve.
Therefore, the current method, while requiring a few extra steps from the user, is a necessary workaround. It allows Accessify Play to function and provide its valuable accessibility features by leveraging Spotify's standard developer access, without needing to meet the prohibitive criteria for extended quotas. This approach empowers you, the user, to directly control your Spotify API access, ensuring the addon remains functional and accessible.
This project wouldn't be where it is today without the incredible support and dedication of our community. A heartfelt thank you to all the testers who provided invaluable ideas, helped tirelessly with debugging, and offered supportive encouragement throughout the development process. Your contributions have been instrumental in shaping Accessify Play into what it is. Thank you for making this project a success!
If you find this addon useful, please consider supporting its development. Every little bit helps!