GameSound

Plain language, no fine print

Privacy: what GameSound keeps, and where

GameSound collects as little as possible. Here is exactly what happens to your data, in plain language: what stays in this browser, what your browser fetches, what it sends, and how to clear all of it. Last updated 10-04-2026.

No accounts

There is nothing to sign up for and nothing to log in to. GameSound never asks for your name, email address, phone number or payment details, and it has no user database.

What stays in this browser

The teams, games and players you follow and your settings (sound, volume, team colors, language, what rings on each channel and the rest) live in this browser's localStorage. So do the last scoreboard it saw (kept six hours so an offline open still shows real cards), today's alert log (the last 50 alerts), your season tally, the lights connection (a random token and the lights you ticked - never your Govee key), the chat or webhook connection (a token and your choices - never the target address), and the app shell the service worker caches for offline use. The sound files you chose are copied into this browser's IndexedDB. None of it is sent anywhere except as the cards below describe, and clearing this site's data removes all of it.

What your browser fetches from ESPN

Scores come from ESPN's public API, fetched directly by your device: the scoreboard (every few seconds while a game you follow is live, every 15 minutes in the hour before it, and not at all in between - the app sleeps until the next kickoff), one game's summary while its details sheet is open, a team's season schedule (for the form block, the team pages and the calendar file), the standings on the Standings page, and a team's roster when you browse for players to follow. The odds line, the matchup predictor and the weather shown on cards and in the sheet come from those same answers - GameSound adds nothing and asks ESPN for nothing more. While a game you follow is live your browser may also hold one connection to ESPN's live score stream - the same one espn.com's own scoreboard uses - so a score or quarter change is checked a few seconds sooner; it carries scores and game status, nothing about you, and when it is unavailable the ordinary checks continue (the Status page opens one for a moment to report whether it answers). When ESPN's main scoreboard address is not answering, the same request may automatically go to ESPN's second address instead - the same scoreboard, nothing else sent, and nothing about you added by the switch. Each request carries no referrer, so ESPN sees an ordinary web request from your device and nothing about which page you were on; ESPN's own privacy policy governs it. Nothing is proxied through GameSound.

What your browser fetches from Polymarket

Only while a game's details sheet is open, your browser asks Polymarket - a prediction-market site - for that one game's market and its current price, and shows the result as the market win chance. This goes straight from your browser: no referrer, no cookies or credentials, nothing proxied through GameSound, and nothing stored anywhere. It carries nothing about you beyond what any web request carries - the address your browser connects from. Close the sheet and it stops.

What your browser sends to the alert service

GameSound's alert service (a small Cloudflare Worker with a database) reads ESPN's public feed on its own, once a minute at most. When every ESPN address it tries is failing, the alert service instead reads the scores from Kalshi's public live-score data - a sports data provider's feed; nothing about you is sent to it. Your browser talks to it only when you use a feature that needs it: turning Alerts on or off and sending a test push, connecting lights or a chat target (the automation routes), and making or entering a sync code. Two reads go the other way: when ESPN blocks this browser the page fetches the service's last copy of the scoreboard (up to a minute old) instead of showing nothing, and the Status page asks the service for its health; while every ESPN address is failing that same read may hand back the alert service's own Kalshi-sourced numbers instead, so your alerts keep going. Every one of these is a plain HTTPS request with no cookies, and the service keeps no record of who asked. One more thing goes to it: every page except the embed strip and the streamer overlay keeps one open connection to the alert service while the page is open, so the Status page can show how many browsers have GameSound open right now (Fans Online). That connection carries no identifier and no cookie. It does carry the teams and single games you follow (as abbreviations and game ids - the same thing the analytics event carries), your cheers (an emoji name and a game id), your Saw it on TV taps and the time your browser noticed a score (a game id and a time) - nothing that identifies you. The service counts the open connections and the cheers, pairs a TV tap with the feed's own detection of that score to work out how far behind the feed runs, keeps today's totals only, and keeps nothing about you when you leave. Beyond that, your browser contacts the alert service only for the features above.

Alerts on a locked phone

When you turn on Alerts and your browser supports push, the alert service stores: the push address your browser's push service issued for this device, that address's two encryption keys, the teams, games and players you follow, your alert profile (which scores, kickoffs and finals ring on this phone, and the kickoff reminder if you tick it), and the dates it was created and last used. Nothing else - no name, no location, no account. It uses them to send score alerts, kickoff reminders and the final score with the recap headline. During games the alert service also listens to ESPN's live score stream so a score can reach your phone within seconds; that stream carries scores and game status only, never anything about you. Turn Alerts off and that record is deleted right away; a device the push service no longer accepts is deleted automatically. Without Alerts on, nothing is stored there at all.

Discord, Slack, Telegram and webhooks

If you connect a chat or a webhook on the Connect page, the alert service stores the target address you pasted (encrypted; decrypted only for the moment it takes to post, never written to a log), which kind it is, the events you ticked, your quiet hours, and the teams and games you follow. Each message it posts carries the alert and nothing about you: the play, the team, the score line, the play text, a piece of play art and a link back to GameSound. A webhook message is also signed so your hub can check it came from GameSound. Tap Disconnect on the Connect page and the row is deleted at once; deleting the webhook on the chat side makes the stored address useless. The chat service's own privacy policy governs what it sees.

Sync codes

Tap Sync code in Settings and the alert service stores a copy of the teams, games and players you follow and your settings under a six-word code for 30 days, then deletes it. Your sound files, volume and this device's own switches are never part of it. The code is the only key to that copy, so treat it like a password: anyone who has it can read those follows - there is nothing personal in them, but they are yours. Enter the code on another phone and it takes over those follows. Nothing is stored unless you make a code.

Govee lights

If you connect Govee lights on the Lights page, the alert service stores your Govee API key (encrypted; it is decrypted only for the moment it takes to send a command to Govee and is never written to a log), the lights and plugs you ticked, your flash, scene and quiet-hour settings, the teams and games you follow, and when it last flashed. It uses them for one thing: sending commands to those lights when a score you asked for posts. Tap Disconnect on the Lights page and all of it is deleted at once; a new key generated in the Govee app also makes the stored one useless. Govee's own privacy policy governs what Govee sees.

Your own sounds

Any audio file you choose under Settings, Your sounds is copied into this browser's own storage (IndexedDB) on this device and played from there. It is never uploaded - not to GameSound, not to the alert service, not to anyone, and a sync code never carries it. Tap Reset on a sound to delete that copy; clearing this site's data removes them all. A browser in private mode may keep them only until the tab closes.

On this device only

Some features never leave this browser. Speak the score uses the voices built into your browser (a few browsers fetch a voice from their own vendor the first time; GameSound sends nothing). Vibrate uses the phone's motor. The calendar file (.ics) is built on the device and saved straight from the page - no server sees your schedule. A share link puts the team abbreviations you follow in the URL, so whoever opens it sees those teams and nothing else; the QR code is drawn on the page from that link. The embed strip and the streamer overlay can be loaded inside another site or OBS: they show scores only and store nothing there.

Analytics

Google Analytics 4 collects usage data: pages viewed, rough device and browser type, and in-app events. Some of those events carry the team involved - a follow, a score alert or a kickoff includes the team's abbreviation (for example "CHI") so the owner can see which teams people follow and which alerts fire. That is the only piece of what you follow that leaves your device for analytics; it is not tied to a name or an account, and GameSound stores none of it itself. GA4 also reports errors the page hits, without any of your data in them, and counts a page view when the embed strip or the overlay loads inside another site. No advertising features are used.

Cookies and consent

GameSound itself sets no cookies. Google Analytics sets its own cookies to tell returning visitors apart. In the UK, the EU, Iceland, Liechtenstein, Norway and Switzerland analytics storage is off by default (Google Consent Mode), so no analytics cookie is set there. There are no advertising or tracking cookies anywhere.

How to clear your data

Tap Unfollow all on the home page to drop every team, game and player you follow; turn Alerts off in Settings to delete this device from the alert service; tap Reset under Settings, Your sounds to delete a sound file you chose; tap Disconnect on the Lights page to delete your Govee key and light list; tap Disconnect on the Connect page to delete a chat or webhook target. A sync code deletes itself after 30 days. To remove everything, including the cached app shell and any analytics cookies, clear this site's data in your browser settings or uninstall the app from your home screen.

The exact names, for the curious

Everything above, by its technical name. Storage keys are what you would see in your browser's developer tools; routes are the paths on the alert service; endpoints are the ESPN paths your browser fetches.

Storage in this browser

  • gamesound.v1 - the teams, games and players you follow, and every setting
  • gamesound.board.v1 - the last scoreboard, kept six hours
  • gamesound.log.v1 - the alert log, the last 50 entries
  • gamesound.season.v1 - the season tally
  • gamesound.lights.v1 - the lights token and light choices (never the Govee key)
  • gamesound.hooks.v1 - the chat / webhook token and choices (never the target address)
  • IndexedDB gamesound-sounds - the sound files you chose

Alert service routes

  • /subscribe, /unsubscribe, /test - locked-phone alerts on, off, and a test push
  • /automation - lights and chat targets (find, save, status, test, fire, delete)
  • /sync - make or enter a sync code
  • /scoreboard - the service's last copy of the scores, read only while ESPN blocks this browser
  • /health - the service's status line, read by the Status page
  • /presence - the open connection behind the Fans Online count, cheers and feed-lag numbers on the Status page; carries the teams and games you follow, your cheers and TV taps (names and ids only), identifies no one, and the service keeps today's totals only

ESPN endpoints

  • site.api.espn.com - ESPN's main scoreboard address
  • site.web.api.espn.com - ESPN's second address, used only when the main one is not answering
  • scoreboard - every game this week with scores and situation
  • summary?event= - one game's box score, drives, odds, predictor and recap headline
  • teams/<abbr>/schedule - one team's season
  • teams/<abbr>/roster - one team's players, when you browse for one
  • standings - the division tables
  • fastcast.semfs.engsvc.go.com - ESPN's live score stream (one connection while a game you follow is live, one brief check from the Status page, and one held by the alert service during games; scores and status only)

Kalshi (read only by the alert service, only while every ESPN address is failing)

  • api.elections.kalshi.com - the alert service's independent backup for the scores; never called by your browser

Polymarket (only while a game's details are open)

  • gamma-api.polymarket.com/markets?slug= - that game's market
  • clob.polymarket.com/midpoint?token_id= - its current price

Not affiliated with the NFL, any team, ESPN, or Govee. Team names and abbreviations are used only to identify games.