Every number here came from a game someone played.
What is behind the figures on every other page: where the boards come from, what a comp is, what the floors are, and what Riot’s match data does not contain.
Rebuilt on every refresh. Updated 28 Sep 2026, 02:21 UTC.
Where the numbers come from
We sample ranked Teamfight Tactics matches through Riot’s
match-v1 API and store every final board whole: champions, items,
star levels, traits, the level the player finished on, and where they placed.
The boards are kept, so a question nobody has asked yet can still be answered
later.
Every board carries a rank bracket. Where the sampler already held the tier of the player whose board it is, that is the tier on the board; otherwise it is the tier of the player the match was discovered through. Diamond+ — Diamond, Master, Grandmaster and Challenger — is the slice every page opens on, and All ranks is one click away: both numbers ship inside the page, so the switch swaps text rather than loading anything.
Every number is from the patch being played now. The window opens 2 days after Riot publishes a patch’s notes, once every region is on it, and never covers fewer than 3 days: in a patch’s first days it reaches back into the patch before, so no number stands on a day or two of games. Comp numbers cover at most the last 7 days of it. Champion, item and trait numbers pool across every board, so they carry far larger samples than any single comp does, and cover at most 14. Today both cover 5 days. Everything is rebuilt every two hours.
Ability, trait and augment numbers for Set 18 are read straight out of Riot’s own TFT game files after each patch, because CommunityDragon’s export carries the sentences without them; the text itself comes from CommunityDragon.
What a comp is here
A comp is a family of boards, not a name. Boards are clustered into cores, and a core sharing all but 2 of its units with a larger one is a version of that one: its boards count for the family, and the comp page lists it as a variation with what it adds and what it leaves out.
Within a family, a champion on 60% or more of its boards is core — that is the board the page draws. Between 25% and 60% it is flex: a slot people fill differently from one game to the next.
Each family has an id that does not change, and its name is derived from its own boards on every rebuild — the carry it plays, and the trait it reaches furthest. A comp can therefore be renamed without becoming a different comp, and the old address points at the new one for 30 days. Identity is rebuilt from 14 days of boards, because a comp that drifts a unit a day should not become a different comp overnight. A family whose carry leaves is a new comp with a new id; the old page stays for 14 days, saying it is no longer being played, and is then removed.
The floors
A comp is published at 50 games and graded at 400. A champion, item or trait row needs 400 boards, and the Diamond+ split on those pages needs 400 of its own. Rows under a floor are kept and counted; they are shown without a number.
A grade is set on the conservative average — the top of the 95% interval around the mean, mean + 1.96σ/√n — so a thin sample sinks instead of spiking: S to 4.25, A to 4.50, B to 4.75, C to 5.00, and D above that.
Placement has a standard deviation of about 2.29, so a 163-board average carries a 95% interval of roughly ±0.35 — wider than the gap between two grades. That is what the floors are for.
A board at every level
A comp page shows the comp’s board at every level from 4, and only some of those boards are measured. Riot’s match data keeps the board a game ended on, so the levels a comp’s games end at — usually 8 to 10 — are measured: the units on at least half of the boards that ended there, beside the share of games that did. Nothing records the boards on the way, so the levels below are planned by one rule, and marked plan wherever they are shown:
- Start from the board most of the comp’s games end on.
- A level down, keep what a board at that level can hold. Riot’s own shop odds for the level, read from the game’s files each patch, cap how many 3, 4 and 5-costs it has, and the units kept are the ones holding up the most of the comp’s traits.
- Fill the empty slots with the cheapest units that carry the comp’s traits, cover the front or back line it lacks, or hold a carry’s items — the units whose most-built items match the carry’s.
Read upwards, that is an opener on the comp’s own traits, a unit a level, and one roll into the board the comp is played for. A planned board has no average placement: nothing records how it did, so none is shown.
What is not measured
Riot’s match data reports the final board only. It does not say which augments a player took, where units stood, or what a board looked like before the last round. So there are no augment win rates here and no measured positioning: where units stand on the drawn boards, and the boards below the levels games end at, are planned by stated rules, and say so. The augment reference lists what each augment grants, from Riot’s own data files, and carries no numbers.
One queue is sampled — ranked — and the numbers are not split by region.
Who is named
Riot IDs are public, shown in every lobby and on Riot’s own leaderboards, and we resolve them only for Challenger, Grandmaster and Master. Each name on the leaderboard opens that player’s recent games as our sampling caught them — placement, board, level — and their LP across our daily snapshots; those pages exist only while the player is on the board and are kept out of search engines. Everyone else in our data is a one-way pseudonym we could not name if we wanted to. The privacy policy says exactly what is stored, and how to be removed.