Privacy and data removal

This site is built on public battle logs. Here is exactly what that means for you, and how to leave.

What is stored

Every battle counted here was read from the official Clash Royale API, which publishes a player's recent battles to anyone who asks. Nothing here was obtained privately and nothing was bought.

  • Battle rows hold the decks, the result, the trophy count and the time — and a one-way HMAC hash of each player tag, never the tag itself. The hash lets the same player be recognised across battles without the row naming anyone.
  • Per-deck records hold wins and losses for a hashed tag against a deck. This is what a personal chart is drawn from, and it is kept after the raw battles age out at three months.
  • Tracked tags are the one place a readable tag is stored, and only for a tag someone typed into the tracker so it can be re-synced.
  • Player names are never stored on a battle. They are fetched fresh from the API when a profile page is opened.

It is named that way deliberately. The Clash Royale API has no way to prove that a tag belongs to whoever typed it, so this site cannot honestly call tracking an opt-in, and does not. It is observation of public data, and anybody can start it for any tag — including yours, without you.

That is exactly why the removal route below covers any tag, not only tracked ones. Most players in this dataset never came here at all; they appeared as somebody else's opponent.

How to have a tag removed

Send the player tag to privacy@royalebuff.com. A tag looks like #2PP0LQ0 and is on your profile screen in the game.

Removal is run by hand and does all of the following:

  • deletes every battle row carrying that tag's hash, on either side;
  • deletes its per-deck records, its queue entry and its tracker association;
  • adds the hash to a suppression list, so a later crawl that meets the player again cannot quietly put them back;
  • leaves the published statistics to correct themselves — the nightly reconciler recomputes aggregates from the battles that remain.

Why it is an email and not a button

Because a button would work for everyone, including someone deleting a stranger's history. There is no login here and no way to prove a tag is yours, so an open deletion endpoint would be an open deletion endpoint for other people's data. A message that a person reads is slower and cannot be automated against anyone.

One consequence worth stating plainly: a battle has two sides. Removing your tag removes the whole battle row, including the opponent's half of it, because the row cannot be split. The aggregate numbers move by a rounding error and nobody else loses a chart.

Analytics

Page traffic is measured with Vercel Analytics. Player tags are stripped in the browser before any event leaves it, so a tag typed into the tracker is never sent to an analytics service. No advertising trackers run on this site and there are no third-party cookies.

How the statistics themselves are computed is written up separately, on the methodology page.