Group stage tiebreakers explained
Two teams level on points are separated by a list of criteria applied in order. Which criteria, and in which order, is a decision — and it is the decision that determines who goes through, so it is worth making before the tournament rather than during the argument.
The usual order
Points, then head-to-head, then score difference, then points scored. That is the common default and it is what Whistle.day ships with.
The other common order puts score difference before head-to-head — this is what most football leagues do, including the Premier League. Neither is more correct; they answer different questions. Head-to-head first says "you beat them, so you finish above them". Score difference first says "you had a better tournament overall".
Head-to-head is computed among the tied teams only
This is the part that is most often got wrong. When three teams are level on points, head-to-head means a mini-table built only from the matches those three played against each other — not their full records.
It matters because a team can have a great overall record and a poor one against the specific teams it is tied with. Building the mini-table from the full fixture list would just re-derive the points they were already tied on.
The three-way tie, and why ranking is recursive
Three teams level on points, and the mini-table between them separates one but leaves two still level. What now?
The correct answer is to apply the whole criteria list again, from the top, to the two that remain — and to rebuild the head-to-head mini-table from just those two, which is now simply the match they played against each other.
That is why ranking is recursive rather than one comparator chain. A single sort function comparing pairs cannot express "first separate the group of three, then re-run the whole thing on whatever is still tied". Getting this wrong produces tables that are subtly inconsistent — A above B, B above C, C above A — which is exactly the sort of thing that gets noticed at a trophy presentation.
Print the reason
Whatever order you choose, the table should say which criterion actually separated a tie. "Why are they above us" is the question that starts arguments in a hall, and a table that cannot answer it is a table somebody will dispute.
Whistle.day records which criteria were applied to place each row and prints them under any table that needed more than points. That sentence is the difference between a table and an argument.
Comparing across groups is a different problem
When you need the best third-placed teams across several groups — to top up a bracket — you cannot just compare their raw records, because a team in a group of five played four matches and a team in a group of four played three.
The standard fix, and the one Whistle.day uses, is to disregard results against whoever finished below the smallest group's last place. Everybody is then compared over the same number of matches. It runs tier by tier as well — every group's winner, then every runner-up, then every third — so a runner-up can never outrank a winner.
Common questions
Should head-to-head come before goal difference?
It is a choice. FIFA World Cup groups use goal difference first; UEFA competitions use head-to-head first. Decide before the tournament and publish it.
What if teams are level on everything?
Most rulebooks end with a coin toss or a drawing of lots. Whistle.day's last criterion is the seed, which is deterministic and defensible, but you can configure a draw.
How do you compare teams from groups of different sizes?
Disregard results against the teams finishing below the smallest group's last position, so everyone is compared over the same number of matches.