Last updated: September 2026
What we do not do
- We do not persist chat. Messages are evaluated in memory and dropped. Nothing about them reaches the database.
- We do not log chat text. The server logger emits only method and URL. Bodies are never logged.
- We do not log credentials. Authorization, cookie and signature headers are redacted. OAuth tokens are never logged.
- No third-party tracking. No analytics, no advertising pixels, no fingerprinting.
What we store
Only messages that are relevant to a round leave a trace:
- Twitch user ID — the only stable identity. Used for leaderboard ranking.
- Display name snapshot — so a winner can be shown on stream.
- Guess text — only for guesses that scored, so a streamer can show what won.
- OAuth tokens — encrypted at rest (AES-256-GCM), decrypted only when handed to Twitch.
Ordinary chat leaves no trace whatsoever.
Identity
Twitch user IDs are opaque strings, treated as such. Display names are stored only as snapshots. A user who renames on Twitch keeps their leaderboard position.
Credentials
- OAuth tokens: encrypted with AES-256-GCM, decrypted only at the moment they are handed to Twitch.
- Overlay tokens: stored hashed. The plaintext is shown once and cannot be recovered.
- Session cookie: HttpOnly, SameSite=Lax, Secure in production, signed. Contains only our own user ID.
- No token of any kind is placed in frontend JavaScript, localStorage, URLs, logs or analytics.
Deletion
Every table that holds viewer data cascades from either users or games. Deleting a streamer's account removes their games, rounds, guesses and scores. A per-viewer deletion path is planned.
Cookies
Guesscade uses only the cookies needed for the site to function — a session cookie for the dashboard login, and localStorage for your gameplay preferences (volume, difficulty, era). No tracking cookies. See the Cookies page for details.