About this tool
Build Swiss tournament pairings from current scores while avoiding rematches.
This pairing engine takes a list of players with their current score and the opponents they have already faced, and produces the next round's matchups by pairing each player with the closest-scoring opponent they have not already played. It sorts the field by score descending (ties broken alphabetically), then walks down the standings greedily, skipping anyone already on a player's history list and flagging the pairing as "Rematch unavoidable" when no fresh opponent is left. An odd number of players leaves the last one with a BYE, shown explicitly in the table.
Open Swiss Pairing Engine on AltFTool — it loads instantly in your browser.
Type the field into the Standings box, one player per line as Name | score | previous opponents with earlier opponents comma-separated, and set Round to the round you are drawing.
Pairings compute as you type: players sort by score descending with alphabetical tie-breaks, and each is matched with the highest-placed opponent not already in their history.
Read the Player A, Score, Player B, Score and Check columns — every row reads 'No prior match', 'Rematch unavoidable' or BYE — then use Copy, or Download to save swiss-pairing-engine.txt.
Each row is labelled either "No prior match" or "Rematch unavoidable", so a repeat pairing is visibly a constraint of the field, not an oversight.
With an odd number of players the unpaired name appears as its own row against BYE instead of vanishing from the table.
Standings go in as "Name | score | previous opponents", one player per line, so the history that drives the draw stays readable and checkable by everyone in the room.
One player per line as Name | score | previous opponents, with earlier opponents comma-separated — for example "Asha | 3 | Ben,Dia". A player with no history yet just leaves the third field empty, and the score defaults to 0 if it is missing or unreadable.
It sorts everyone by score from highest to lowest, breaking ties alphabetically, then takes the top unpaired player and matches them with the highest-placed remaining player who is not in their opponent history. That is the core Swiss idea: similar scores meet, and nobody repeats an opponent until the field forces it.
No. It is a transparent score-adjacent greedy pairing, not the Dutch system used in rated chess — it does not balance colours or sides, does not track who has already received a bye, does not float players between score groups by rank, and does not run the full weighted matching that a FIDE-approved pairing program uses. Use it for casual events and agree the method with participants beforehand.
Because every other remaining opponent was also on that player's history list. When the greedy pass finds no unplayed opponent left in the pool it falls back to the next player in score order and marks the row "Rematch unavoidable" — a signal that the field has run short of fresh matchups, which typically happens once the round count approaches the number of players.