The website is separate from the app and counts its visitors, which is described at the end. The person responsible for the app and the website is the maintainer of this project, William Veldhuizen; questions can go in an issue. The same text lives in PRIVACY.md in the repository, where every change to it can be read back.
What stays on your PC
Everything the app remembers is stored in %LOCALAPPDATA%\ZapperRadio and never leaves your PC:
settings.json: your settings, favorite stations, favorite songs, window positions and the loudness measured per station;play-history.json: the songs your favorites played in the last 12 hours;break-clocks.json: at which minutes of the hour each favorite usually has its breaks, as the zapper learned it;cache\: the station list and the logos, the popularity lookups and the list of stations that are down (see below).
Deleting that folder removes all of it. Uninstalling the app does not, on purpose, so that your favorites survive a reinstall. When you switch on Start with Windows, the app adds one entry to your user's Run registry key, and it removes that entry again when the app is uninstalled; the Store version asks Windows to start it instead, through the startup task in its package, and writes nothing to the registry. The taskbar jump list, which lists your favorites and the song each is playing, is kept by Windows itself, under %APPDATA%\Microsoft\Windows\Recent\CustomDestinations; it holds nothing beyond the station names and song titles the window already shows.
The version from the Microsoft Store works the same way, with one difference: Windows keeps what it stores in %LOCALAPPDATA%\ZapperRadio in a private folder of the app's package instead, under %LOCALAPPDATA%\Packages\60526williamve.ZapperRadio_<id>, and deletes that folder when you uninstall the Store version. Only files that the version from GitHub had already made on the same PC stay where they are, and are not deleted.
The music/speech recognition and the loudness measurement run on your PC, on audio that is streamed anyway. No audio is recorded or sent anywhere. To be able to start a song from its beginning after a zap, the app keeps the last few minutes of every favorite in its own memory while it runs; that buffer is never written to disk, it is gone when the app closes, and it can be switched off entirely with Zap to the start of the song in the settings. The app plays every favorite through a small relay that listens on 127.0.0.1 only, so no other device on your network can reach it.
What the app sends over the internet
Every request carries your IP address, as any request on the internet does, and most also a user agent that names the app, ZapperRadio/<version>. Nothing else identifies you or your PC.
| What | Who receives it | What is sent | When |
|---|---|---|---|
| Radio streams | The station's own streaming server | Just a request for the stream. All your favorites (up to 20) stay connected while the app runs, muted ones too, so each of those stations sees you as a listener. | While the app runs |
| Station list | zapperradio.com, the website of this project, which GitHub Pages serves (privacy statement) | A request for the index of the list, and then for the newest list. Nothing about you. The list is built every day from radio-browser.info's stations, on GitHub, not on your PC. | When the app starts; a new list is downloaded once a day |
| Popularity of stations | radio-browser.info | The country you are looking at, or nothing for all countries | When you look at the stations of a country, or of all countries; kept for a day |
| Stations that are down | radio-browser.info | A request for the list of stations that failed their last check. Nothing about you. | When the app starts; kept for a day |
| Station logos | radio-browser.info, then the server the station gave for its logo | The name and country of the station, then a request for the logo image | The first time a station is shown as a favorite or as the one playing; kept until you clear it in the settings |
| Song lengths | Apple's iTunes Search API | The title of the song a favorite is playing, as the station sent it, for example Queen - Bohemian Rhapsody, to tell when an ad break must have started. This is done for the songs of all favorites, muted ones too, at most one lookup every 4 seconds. |
Whenever a favorite starts a new song |
| Updates | GitHub, from the releases of this project | A request for the list of releases, and then the update itself | Half a minute after the start and every 6 hours, for the version installed from GitHub only. The Store version is updated by the Microsoft Store and never checks GitHub. |
The table scrolls sideways.
The app does not use Spotify or YouTube by itself. Only when you click the find button next to a song, your browser or the Spotify app opens with a search for that artist and title, and from then on you are dealing with them.
Each of these services has its own privacy policy, and the stations decide for themselves what they do with the requests they get. Only the streams are needed to play the radio: the station list is kept on your PC, so the other requests can be blocked in a firewall without stopping the app from playing.
The website
This section is about zapperradio.com only, not about the app.
- Visitor statistics. The website counts its visitors with GoatCounter, to see how many people come by, from where they were sent, and with which kind of browser and screen. GoatCounter is run by Martin Tournoij in Ireland. It sets no cookies and stores nothing in your browser. According to its privacy policy it does not store your IP address, your full user agent or any tracker ID: it keeps only totals per hour, such as the page, the referring site, the browser, the operating system, the language, the screen width and the country, and shares nothing with third parties. To tell repeat views from new visitors it makes a random ID from your IP address and user agent, which lives in memory for at most 8 hours and is not stored. Your request does reach GoatCounter's server, so your IP address is briefly there like with every request. Because of this, and because the statistics cannot be traced back to a person, the website has no cookie banner. The counting is done by a script from
gc.zgo.atthat the page loads, and you can block it in your browser or with an ad blocker without anything else on the page changing. - Hosting. The website is served by GitHub Pages, so GitHub receives your request, with your IP address and user agent, as with any page it hosts. See GitHub's privacy statement.
- Latest version. The home page asks GitHub's API (
api.github.com) for the version number of the newest release, to show it next to the download buttons. That request comes from your browser and carries your IP address. - Downloads. The download buttons and the links to the releases go to GitHub, which then handles your request.
- Your language. The language you pick in the corner of the home page is remembered in your browser's own storage, on your device only. It is not a cookie, it is not sent anywhere, and clearing your browser data removes it.
Changes
If this page changes, the change is in the history of PRIVACY.md on GitHub. Questions can go in an issue.