This site is a school project. It only works because contributors run a
companion Chrome extension that captures their casino.org game traffic
and either uploads it (Flush now) or exports it as a .casinodump
file you can drop on the Contribute page. Before you do
either, here's a plain-English description of what's actually inside
those payloads and what isn't.
TL;DR
- Collected: poker game traffic from
*.casino.orgonly, while the extension is loaded — gameplay messages, the casino-side display names of you and the players at your tables, table chat that occurs during a hand, your hole cards (only your own — opponents' face-down cards stay face-down), and timestamps. - Not collected: your casino.org password, your session cookies,
your IP address, your email, your real name, anything outside
*.casino.org, anything from sites you visit while the extension is off, and any data while you're not on a casino.org page. - Uploaded only when you click
Flush nowor upload a.casinodump. The extension does not auto-upload. There is no "telemetry" or background sync.
What the extension captures locally
The extension's content scripts only run on https://*.casino.org/*
(see manifest.json#host_permissions). On every other site —
including this one — it does nothing.
Within casino.org, it observes:
- The Phoenix WebSocket frames that carry gameplay (bets, cards, chat-during-hand, dealer messages, etc.).
- HTTP responses from a small allow-list of in-game APIs that contain
user-display data (so it can resolve
userId→ casino-side screen name).
Captured data lives in chrome.storage.local, on your machine, in your
Chrome profile. It never leaves automatically. You can wipe it any
time by clicking the trash icons in the extension's history page or by
removing the extension.
What ends up in a .casinodump / Flush now payload
When you choose to upload (either manually or by exporting a file), the extension assembles a list of hand envelopes, one per completed hand. Each envelope contains:
tableIdand the table names it was displayed under (e.g. "Casino Royale 200/400 NL").pageUrl/pageTitleof the casino.org tab where that hand was observed (e.g.https://www.casino.org/replaypoker/play/table/12345).- The raw Phoenix WS frames between
startHandandfinishHand— this is the gameplay record. It includes bets, raises, folds, board cards, pot sizes, and anything chatted on the table channel during that hand. Treat in-hand table chat as public. - Your hole cards (visible because you are the one running the
extension). Other players' hole cards remain
["X","X"]unless they go to showdown — same as on the casino site itself. - Timestamps for every frame.
- A
userIndexmappinguserId → casino-side display namefor the players at your tables, so the website can render names instead of numeric ids.
The envelopes are gzipped and either POSTed to the website's
/api/flush endpoint or wrapped into a .casinodump file you can
drop on /contribute later.
What is not in a .casinodump
Specifically, the following things are never read or sent:
- Your casino.org password — the extension does not touch authentication forms or storage.
- Your casino.org session cookies or
Authorizationheaders — the request observer is read-only and does not capture cookie or authorization headers. - Your IP address — the extension doesn't know it; the server receives it as the source of any HTTPS connection but it is not stored in the database alongside your contribution.
- Your email, real name, or any account info from this site (you do not need an account to contribute).
- Any data from any site other than
*.casino.org— the extension is inert outside that origin. - Browser history outside of casino.org tabs you actually played on.
- Other tabs, other extensions, clipboard, microphone, camera — none of this is requested by the manifest, so Chrome won't even let the extension reach it.
On the website side
Anyone (signed in or not) can drop a .casinodump on the
Contribute page. The server splits it into one record
per (player, table, hand) and stores those rows in a MySQL
database. Reads on /data are public. Deletes are
admin-only and they're hard — the row is removed from
hand_canonical and the per-upload audit rows cascade away. There is
no undelete; if you want a deleted hand back, the original
.casinodump has to be re-uploaded.
If you want a specific hand removed, message me. If you want everything you ever uploaded gone, also message me — there is no self-service delete because uploads are not tied to accounts.
What "first upload wins" means for you
The first contributor to upload a given (player, table, hand)
fingerprint becomes the canonical record. Re-uploading the same hand
from the same perspective is a no-op. The same hand uploaded from a
different in-game player produces a separate sibling row under
that player — both perspectives are kept side-by-side, neither
overwrites the other.
Questions / corrections
This post lives in statisticasino/content/blog/data-privacy.md. If
something here is wrong or has gone stale, please open an issue or DM
me.