TFT CODEX

Privacy Policy

Last updated 12 October 2026

The short version.

TFT Codex has no accounts. The app collects nothing about you, and screen captures are processed on your phone and never leave it. The text reader it uses, Google’s ML Kit, sends Google diagnostics about itself, such as your phone model and how long a reading took, but never what it read (see Screen capture). The website counts visits with Google Analytics, only if you accept it, and with a server log that keeps no IP address and no cookie (see The server’s visit log). The statistics on this site are analysed from public Teamfight Tactics match data served by Riot’s API — games people played, not anything about your use of the app.

What the app collects about you

Nothing. There is no sign-in, no identifier is created for you, and we collect no usage or crash analytics. The app shows no advertising and carries no advertising or analytics library of ours. The one component in it that reports anything to anyone is Google’s text reader, described under Screen capture.

“Analytics”, and what the word means on these pages

This site publishes a great deal of analysis — placement averages, play rates, trait breakpoints. Where the word “analytics” appears on the site’s pages it means that: analysis of public match data returned by Riot’s API about games people played, which is the product. None of it is derived from watching you. Analytics about visitors — which pages are read — exists only as described in the next two sections: Google Analytics, only if you accept it, and a server log that cannot tell who you are.

Analytics

The website uses Google Analytics 4 to count visits and to see which pages are read. It runs only after you accept it in the banner; if you decline, nothing from Google loads and no analytics cookie is set. You can change your choice at any time from “Cookie settings” in the footer.

When accepted, Google sets cookies (_ga and _ga_…) that recognise your browser across visits, and receives the pages you view, the site that referred you, an approximate location derived from your IP address (Google does not store the address), and your browser and device type. We use the reports to see which comps and pages people read. Google’s description of what it collects on partner sites: policies.google.com/technologies/partner-sites.

The Android app contains no analytics of our own. Its home screen shows this website’s pages, and inside the app they load with no banner and without Google Analytics: the app loads nothing from any other site while it shows them.

The server’s visit log

Like most web servers, ours writes one line for each request it answers, including the pages the Android app shows: the time, the address on this site that was asked for, whether it was found, its size, the page that linked to it, and your browser’s name and version (which is how we tell search-engine robots from people). Your IP address and any cookie are removed before the line is written, so the log cannot tell who you are or link two visits together. We use it only to count visits and see which pages are read. It is never shared or sold, and every line is deleted after 90 days at most.

What the website keeps in your browser

Three things are kept in your own browser’s local storage and never sent anywhere: your answer to the analytics question above, whether you last chose Diamond+ or All ranks, and the boards you save in the Team Builder. None of them is a cookie or identifies you, and clearing this site’s data in your browser removes them. Inside the Android app the same things, bar the analytics answer, are kept in the app’s own storage on your phone, and uninstalling the app removes them.

If this changes

The statements above describe what the app and this site do today, and they are what we intend. If that ever changes — if the app starts collecting something, or the site carries advertising — this policy is updated and re-dated before it does, and it will say plainly what is collected and by whom. It will not change quietly.

Screen capture

To read the augment and anvil choice screens the app uses Android’s media-projection permission, which Android requires you to grant explicitly, and Android shows its own recording notice while it runs. Captured frames are analysed on your device and are never transmitted. The app you download from this site keeps no frames at all: each is read and discarded. Only the developer’s own build, where diagnostics are enabled, can write images to the app’s private storage on the phone so they can be reviewed; they are not transmitted either, and uninstalling the app deletes them.

The reading is done by Google’s ML Kit text recognition, which runs entirely on your phone. Like every ML Kit feature, it sends Google diagnostics about itself: your phone’s manufacturer and model, the Android version, the app’s name and version, how long each reading took, the size and format of the image it was given, and events such as starting up, along with an identifier for this installation that Google says is not meant to identify you or your phone. It never sends the image or the text it read. Google says it uses these for diagnostics and usage analytics and does not pass them to third parties, and its disclosure names no way for an app to switch them off: developers.google.com/ml-kit/android-data-disclosure.

Earlier versions of this policy said the app sent nothing anywhere. That missed these diagnostics, which the app has sent since it first read the augment screen.

Network connections the app makes

These are ordinary downloads. Your device’s IP address is necessarily visible to those servers, as with any web request. No such data is used to build a profile, sold, or shared.

Data behind the statistics

Placement statistics come from public ranked match data obtained through Riot’s official API. That data concerns matches, not users of this app, and is stored in aggregate.

Player identifiers seen while sampling are not stored. They are used to look up matches and are immediately replaced by a one-way keyed hash, which lets us count things like how many different players commit to a composition without being able to tell who any of them are. That hash cannot be reversed and is meaningless outside our own database.

There is one exception, and it is deliberate. The leaderboard on tftcodex.com names players in the apex ranked tiers — Challenger, Grandmaster and Master. Their Riot IDs are retrieved from Riot’s API and published alongside their rank and LP, as Riot’s own leaderboards publish them. We keep one Riot ID per player, re-checked with Riot every day, and never earlier ones. Each player on the leaderboard also has a page listing the games of theirs our sampling caught — placement, final board, level and how long they lasted — and their LP across our daily ladder snapshots, and a comp’s page shows the newest boards those players ended on it, under their names. That is the same public match data Riot serves for every game; the player pages ask search engines not to index them, and a page exists only while its player is on the leaderboard. A Riot ID is public information: it is shown in every game lobby and on Riot’s own published leaderboards. No player below those tiers is named anywhere, and nothing outside the leaderboard, those pages and those boards is joined to a name. Nothing about users of this app appears there — the app has no accounts and creates no identifier for you.

If you appear on the leaderboard and would rather not, email support@tftcodex.com with your Riot ID and we will remove your name, your page and your boards for good.

Children

The app is not directed at children under 13 and collects no personal data from anyone.

Changes and contact

Material changes will be posted here with a new date. Questions: support@tftcodex.com