This privacy policy describes how the Radio Widget browser extension ("the extension") handles your data. It is published by rheysoft, reachable at rheysoft@gmail.com. The extension is distributed via Firefox Add-ons (AMO), the Chrome Web Store and the Microsoft Edge Add-ons store.
chrome.storage.local. Nothing is sent to a server we operate.The extension uses chrome.storage.local to persist the following inside your browser. Nothing is sent off your device.
| Stored data | Purpose |
|---|---|
| List of favorite stations | So your favorites survive browser restarts |
Stations you added yourself (customStations) | The Premium "My stations" list: the name and stream URL you typed in or imported from a playlist, plus an optional country and tags. Never transmitted anywhere - not to Radio Browser, not to Gumroad. The URL is validated on your device (http: or https: only) and is contacted only by the audio player, when you play that station. |
Notes you wrote about stations (stationNotes) | The Premium "Station notes" feature: free text you typed, stored against the station it belongs to. Nothing is derived from it and nothing is stored alongside it. Never transmitted anywhere - not to Radio Browser, not to Gumroad. Deleting a station you added deletes its note with it; un-starring a favorite does not. |
| Last 10 played stations | "Recently played" list - cleared automatically when you close and restart the browser |
Back/forward navigation stack (playHistory, playHistoryIdx) | Lets you step back and forward through the stations you moved between. Capped at 50 entries, and cleared when you close and restart the browser - deliberately, so that no durable record of your listening habits exists. |
| Play counts per station | Sorting favorites by "most played" |
Current player state (last station, volume, list context, toolbar icon state iconPlaying) | Resume playback after restart, and show the correct play/pause state on the toolbar icon |
UI preferences (theme, marquee toggle, logo toggle, pulse toggle, player mode playerMode - side panel or popup) | Remember your settings |
Custom theme colors (customTheme) | The background color and accent color you picked for the "Custom" theme. Stored separately from the theme selection above, so your two colors are still there if you switch to a preset theme and back. |
Station-logo loading (remoteLogos) | Remember whether you switched on Settings → Display options → "Load station logos from the web". Off by default; while it is off no logo request is made at all (see 3.3). |
Side panel tab last open (activeTab) | Reopen the side panel on the tab you were last using - Player, Browse, Favorites or Settings - instead of always returning to Player |
Tab bar position (tabBarPosition) | Remember whether you placed the tab bar at the top or the bottom |
Sort order of Favorites (favSortMode) | Remember which of the three sort buttons you last chose for the Favorites list - by date added, A-Z, or most played |
Sort order of "My stations" (customSortMode) | The same for the stations you added yourself, which sorts independently of Favorites - by date added, A-Z, or most played |
| License key + verification cache (only if Premium activated) | Verify Premium without re-prompting on every launch |
Random per-install identifier (machineId) | Bind license cache to this browser install - never transmitted |
Cached list of Radio Browser API hostnames (apiHosts) | So a later session can reach a working mirror if the default one is unavailable. Written after a successful Radio Browser request. Contains no data about you. |
Saved station list (browseCache) | Show the station list you last loaded, instead of an empty page, when the station directory cannot be reached. This is the directory's own public station data, not a record of what you did. It is replaced by the next successful load, removed by "Clear all local data", and not included in a backup export. |
You can read this data yourself. The parts that are yours - favorites, the stations you added, your notes - come out in readable form via Favorites → "Export backup" (see section 6). For the raw contents of every key, open your browser's developer tools on the extension's side panel and run chrome.storage.local.get(null, console.log) in the console. We deliberately do not name a menu path here: where the developer tools sit, and whether extension storage gets its own panel in them, differs between Chrome, Edge and Firefox and changes between browser versions.
machineId (never transmitted)chrome.storage.sync - nothing syncs across devicesThe extension makes outbound connections to the destinations below.
The extension's Content Security Policy limits directory and license requests (3.1 and 3.2) to the hosts named there; no other destination can be contacted for those. It does not limit which host an audio stream or a station logo is fetched from (3.3): those connect to whatever address the station publishes in the Radio Browser directory. Station logos are off by default and are fetched only if you turn them on. The safeguards that do apply to 3.3 are described in that section.
*.radio-browser.info)A community-operated, open directory of internet radio stations. The extension connects to fetch:
/json/url/{uuid}): When you start a station. Sent: only the station's UUID. Used by Radio Browser to maintain popularity rankings. No personal data attached./json/servers): At most once per session, and only after another request has already succeeded. Sends no data about you. Returns the list of Radio Browser mirror hostnames, which is stored locally so a later session can reach a working mirror.Radio Browser logs IP addresses and request data on their side, as any web server does. See Radio Browser's website for details.
api.gumroad.com)Only contacted when you activate Premium, and every 7 days afterwards to re-verify your license. Sent: your license key and the product ID. Received: a boolean validity flag and purchase metadata.
If Gumroad is unreachable, the extension grants a 14-day offline grace period using its locally cached verification status, then disables Premium until you reconnect.
Gumroad acts as our payment processor and license vendor. See Gumroad's privacy policy for how they handle the data you provide when buying.
Each station you play involves a direct connection between your browser and the station's stream server. The extension does not act as a proxy.
Referrer-Policy: no-referrer, so the extension's identifier is not sent in the Referer header. The extension accepts a stream URL only if it uses http: or https:; it does not restrict which host that URL points to.referrerpolicy="no-referrer" on the <img> element, and the URL is accepted only if it uses http: or https: - anything else is discarded and no request is made. That check rejects malformed directory entries; it does not restrict which host a valid logo URL points to. With the setting on, opening a station list connects your browser to every logo host in that list, and each of those hosts can see your IP address.Station operators see your IP address (unavoidable for any HTTP connection) and the fact that you connected to their stream. They cannot see that the connection came from this extension.
A station you add by hand, and a playlist you import (Favorites → "Import playlist"), involve no network connection of their own. The .m3u or .pls file you choose, or the text you paste, is read and parsed on your device; nothing is uploaded, and no address in it is contacted until you play that station - at which point it is an ordinary stream connection as described in 3.3. The extension makes no reachability check against a URL you typed, so no request goes out to it before you press play. Because these hosts come from you rather than from the directory, nobody has vetted them.
Radio Widget declares the permissions below. Which ones apply depends on the browser: on Chrome and Edge the extension runs as a service worker with a side panel, on Firefox as an event page with a sidebar, so the two builds do not declare the same set. Nothing here grants access to your tabs, browsing history, bookmarks, cookies, clipboard or any website - the extension declares no host permissions at all.
storage (Chrome, Edge and Firefox): keep the data listed in section 1 inside your browser. Local only - chrome.storage.sync is not used, so nothing travels to another device.alarms (Chrome, Edge and Firefox): run the sleep timer and the wake timer, and on Firefox additionally keep the background page awake while audio is playing. Local scheduling only; no data is sent.commands (Chrome, Edge and Firefox): the keyboard shortcuts - play/pause, next station, previous station, plus one for opening the widget on Chrome and Edge. Like sidebar_action below it is a manifest declaration rather than a permission prompt, and it reads no data of any kind.sidePanel (Chrome and Edge only): show the player in the browser's side panel.sidebar_action (Firefox only): the same thing under Firefox's own name for it - show the player in the sidebar. It is a manifest declaration rather than a permission prompt.offscreen (Chrome and Edge only): keep a hidden audio document alive so playback continues when the side panel is closed. Firefox neither needs nor requests this - its event page holds the audio itself.The Premium upgrade is a one-time purchase processed by Gumroad. The extension never sees your payment details (card number, PayPal account). You receive a license key from Gumroad after purchase; you enter that key in the extension to unlock Premium features.
The same license key unlocks Premium in Firefox, Chrome, and Edge separately - you simply enter it once in each browser.
You have the right to:
chrome.storage.local on your own device. Section 1 lists every key and tells you how to read them.To exercise any right that requires action from us, write to rheysoft@gmail.com. Note that because we store no personal data about you, we generally cannot act on access or erasure requests other than confirming this fact.
Where the extension processes data on your behalf (e.g. fetching station lists from Radio Browser), the legal basis is legitimate interest (Art. 6(1)(f) GDPR) - namely, providing the functionality you installed the extension for. License verification involves a contractual relationship under Art. 6(1)(b) when you purchase Premium.
We do not rely on consent (Art. 6(1)(a)) because we do not process any data beyond what is strictly necessary to deliver the requested functionality.
The extension is not directed at children under 13. We do not knowingly collect data from children. Since we collect nothing from anyone, this is largely a formality.
When you connect to Radio Browser or a station's stream server, your browser may exchange data with servers outside your country of residence. The extension itself does not transfer data across borders; the browser does, the same way it would when visiting any website.
Gumroad operates in the United States. By purchasing Premium, you accept that license-verification requests will reach Gumroad's US-based infrastructure.
We may update this policy when the extension's behavior changes (for example, if new functionality requires a new third-party service). The "Last updated" date at the top reflects the most recent change. We will not retroactively expand data processing for features that previously collected nothing.
The controller responsible for the processing of personal data under the General Data Protection Regulation (GDPR) is:
Nico König
Weinbergstraße 38
01445 Radebeul, Germany
Email: rheysoft@gmail.com
Operating as a sole trader (Einzelunternehmen) under the publisher pseudonym rheysoft. Small business per §19 German VAT Act (Kleinunternehmer); no VAT charged.
Imprint: rheysoft.com/impressum.html