← Back to FoxSDR

Privacy and cookies

This notice covers two separate things: the FoxSDR application you install, and this website. They collect different data, for different reasons, and are described separately below — the application first, because that is the part that runs on your own machine. It is written to be complete rather than short: every field either of them stores is listed, including the ones most notices leave out.

The application: what it sends

There is no licence key and no activation, and FoxSDR never reports anything about what you listen to. It makes exactly three kinds of network request on its own account: an update check, an anonymous usage report, and — only when you press Browse — a request to the plugin catalogue. Each is described below, and each can be switched off.

What stays on your machine

Your recordings, both audio and raw I/Q, the images SSTV and weather-satellite decoders build, everything the decoders decode, your bookmarks, band plans, settings and installed plugins are files on your own disk. Nothing uploads them, and no frequency you tune to leaves your machine.

The update check

Once per launch the application asks this site whether a newer version exists. The entire request is GET /api/update?v= followed by the version you are running — no identifier, no install id, no cookie, and nothing that could be tied to a later request. This server writes no analytics record for it: only page views and file downloads are recorded, and the update endpoint is neither. Turn it off under Settings → Updates, and the application never contacts the service again.

Nothing is downloaded or installed unless you press the button. If you do, the installer is fetched from this website over HTTPS and its SHA-256 is checked against the digest the server published before the file is given a name anything could run — and that fetch is an ordinary download from this site, so it is recorded like any other, with the IP address, approximate location, browser and operating system described in the website half of this notice.

Usage reporting

From version 0.53.0 there is an anonymous usage report, under Settings → Usage reporting. It is on by default, and you can turn it off — untick that box and reporting stops immediately. One report is sent per launch, describing the session that just finished, and this is the whole of it:

SentExampleWhy
Install identifier32 random hex charactersTells 100 users apart from one user launching 100 times. Generated at random on your machine on first run, deleted when you turn reporting off, and never derived from your hardware, network or name.
Application version0.56.0Whether people update.
Operating system and architectureWindows 10.0.22631, x64Which platforms are actually used.
Launch count and crash count12, 1Whether it gets used more than once, and how often it fails.
Session length3600 secondsWhether sessions are minutes or hours.
SDR modeluhd b200Which radios to prioritise. Serial numbers are stripped before sending.
Demodulators used, and for how longWFM: 3000sWhich modes justify further work.
Panels openedmap, decodedWhich features are used.
Installed pluginsADS-B 1.0.0Which decoders justify further work.

That is the complete list. It ships with the application as PRIVACY.md, and an automated test asserts the payload field by field, so a new field cannot be added without that test failing and both documents being updated. Turning reporting off deletes the install identifier, so if you ever switch it back on you get a new one that cannot be linked to the old.

Where the usage reports go

To a Cloudflare Worker operated by this project, which writes the counters above to a Cloudflare Workers Analytics Engine dataset. Cloudflare processes it on our behalf and stores it for three months, after which it is gone. Nobody else receives it, it is not sold, rented or shared, and the only thing read back out of it is aggregate counts, through the same password-protected dashboard described further down. The Worker's source is published with the application, so you can read what the receiving end does.

What the application never sends

The plugin catalogue

The catalogue is contacted only when you press Browse in the plugin panel, and again if you install something. Those requests reach the server hosting the catalogue, which — like any web request — sees the address they came from. No identifier of yours is sent with them. Every download is HTTPS, size-capped, refused on a cross-host redirect, and verified against the sha256 published in the catalogue before it is allowed to become a file.

The browser interface

FoxSDR can serve its interface over HTTP to other machines on your own network. It is off by default and bound to your own machine until you change it; a password is required for any binding beyond that, and without one the wider bind is refused rather than opened. Passwords are stored hashed (PBKDF2-HMAC-SHA256) and sessions are revoked whenever the settings change. There is deliberately no TLS, because the application links no crypto library and will not claim transport security it cannot provide — put a reverse proxy or a private tunnel in front of it, and never port-forward it directly. Anyone you give access to can see and control what the receiver is doing.

The website: what is recorded when you visit

A record is written for each page view and each download whether or not you accept cookies. This is first-party analytics: the data stays on the server that serves this site, it is not shared with an advertising network, and there is no third-party script on the page.

RecordedWhere it comes fromNeeds consent
Date and time, page requested, HTTP method and protocolThe requestNo
Your IP address, and a salted hash of itThe connectionNo
Approximate location: country, region, city, postcode area, timezone, and the coordinates of that city — not of youIP address, looked up via ip-api.comNo
Your network: internet provider, organisation, AS number, and whether the address is a known VPN, datacentre or mobile networkThe same lookupNo
Browser and version, operating system and version, device type, and whether the request looks like a botUser-Agent headerNo
Which page sent you here, and any campaign tags on the link (utm_source and friends)Referer header and URLNo
Preferred languagesAccept-Language headerNo
Which file you downloaded, its version, how many bytes were sent and whether the transfer finishedThe download itselfNo
Screen and window size, pixel ratio, colour depthYour browser, reported by this page's scriptYes
CPU core count and approximate device memoryThe same scriptYes
Timezone, language list, dark-mode preference, touch support, platformThe same scriptYes
Connection type, estimated downlink speed and round-trip timeThe same scriptYes
How long the page was visible, how far you scrolled, how many clicks, and which buttons you pressedThe same scriptYes

What is deliberately not done

If you sign up as a beta tester

The beta form is the only place this site asks you for anything. Submitting it stores your email address, and whichever of these you chose to give: a name or callsign, your platform, the radio you plan to use, your notes, and the list of features you volunteered to test. Alongside it we keep the same visit context described above — approximate location, network, browser and operating system — because a bug report reads very differently depending on the setup it came from.

Cookies

CookiePurposeLife
fox_consentRemembers whether you accepted or declined, so you are asked once1 year (accepted) / 6 months (declined)
fox_vidA random identifier so a return visit is recognised as the same browser. Set only if you accept.400 days
fox_sidGroups one sitting into a session. Set only if you accept.30 minutes of inactivity
fox_betaHolds your beta-tester link so you can get back to your own entry. Set only if you sign up as a tester, and only because that is the thing you asked for — it does no measuring, so it is not part of the analytics choice above. Removing yourself clears it.400 days

If you decline, no identifying cookie is set. Visits are then grouped by a daily-rotating hash of your address and browser, which distinguishes visitors for counting purposes and is not usable to follow you between days or between sites. You can change your mind by clearing this site's cookies and reloading.

Why, and on what basis

The purpose is narrow: knowing how many people find this project, roughly where they are, what they run it on, and how many go on to download it. That is what decides whether the work continues and what gets built next.

The server-side records are kept on the basis of legitimate interests in understanding and securing the site. The browser-reported detail and the identifying cookies are kept on the basis of your consent, which is why they are behind the banner and why declining costs you nothing on this site.

How long it is kept, and who sees it

Records are held for 24 months and then deleted. They sit in a file on the server behind a password-protected dashboard that only the project maintainer can open. There are no other recipients and no transfer to a third country beyond the IP lookup already described.

Your rights

If you are in the UK or the EU you can ask for a copy of what is held about you, ask for it to be corrected or erased, or object to it being collected at all — including the server-side records that do not depend on consent. The practical identifier for finding your records is your IP address at the time you visited, so please include it and roughly when you visited.

For the application, the controls are in the software itself: Settings → Usage reporting stops the usage report and deletes the install identifier, and Settings → Updates stops the update check. The reports hold nothing that can be connected to you, so there is nothing to request access to; if you want an install identifier removed from reports already sent, write to the address below and quote it, and it will be deleted.

Write to [email protected]. You can also complain to the Information Commissioner's Office (ico.org.uk) if you think this has been handled badly.

Last updated 20 August 2026. If this notice ever stops matching what the software does, the software is wrong — the website's collection is implemented in store.go and app.js, both readable in the site's own source, and the application's own list ships with it as PRIVACY.md with a test holding the payload to it.