About haxball.io
An unofficial fan site.
haxball.io keeps the results of a set of community-run HaxBall rooms and ranks the people who play in them. Rooms are grouped by region and game mode: every room here in a region playing, say, Futsal 3v3 feeds the same table, and a player has one rating there however many of those rooms they play in.
It is not the official HaxBall site. It is not made by, affiliated with, endorsed by or connected to HaxBall or its developer, and the HaxBall name belongs to its owner. The game itself is at haxball.com.
How the tables work
A match counts when the room runs it itself, at the size it is set to, and keeps it at that size to the end — a player from the bench taking an empty place does not stop it counting. It stops counting when the room cannot keep the sides full, or when an admin arranges the teams, holds the pitch, starts the match by hand or jails a player on it. Leaving a match that counts costs the player who left 15, as a loss — even when their leaving is what stops it counting.
Every ranked match counts. Each table has an all-time view and one for every month. A player gets a position once they have played 30 ranked matches on it, or 10 in a month — a match they walked out of counts among them, as the loss it is recorded as — and the all-time view leaves out anyone who has not played for 30 days until they play again.
Beside goals and results, the tables count what the rooms see of each ranked match. An assist goes to the team-mate who had the ball before the scorer, if they gave it up within the last ten seconds of play. A clean sheet (CS) is a ranked match your side finished without conceding: it counts for everybody on that side, substitutes included, but not for a player who left it. Each player also gets a match rating from 1 to 10, from their goals, assists and passes, their time on the ball, the result and a clean sheet; Avg is the average of those, and the player of the match is the room's pick at the whistle, by match rating. A match from before the rooms rated players has neither a rating nor a pick; its clean sheets still count.
The site opens on the region you last looked at. On a first visit it guesses from your device's time zone, in your browser: a clock set to Europe opens Europe's tables, and so does one in the Middle East or Africa, where players are closer to European rooms. You can switch region at any time.
The rating
Every player starts at 1500 on each table. After each ranked match, the players who started it on the winning side gain the same amount and those who started it on the losing side lose it. How much depends on the two starting sides' average ratings: a win between equal sides is worth 16, beating a stronger side is worth more, beating a weaker one less, and a draw moves the two sides towards each other.
A substitute who comes on from the bench gets their side's result scaled by their share of the match: on for the last third of it, a third of the gain or the loss. Leaving a ranked match before the whistle — or, having played, standing idle until the room takes you off — costs a flat 15 and counts as a loss, whatever the score, and whether or not the match still counts after it; coming back into it does not undo that. Refreshing with !f5 and coming back while the room holds your place is not leaving.
A player's rating is one number that carries on from month to month. A monthly table shows where each player stood after their last match that month, and how far they moved during it.
Levels and badges
The rating says how well you play; your level says how much. Every ranked match you play earns XP: 10 for playing it, +5 for a win or +2 for a draw, +4 a goal, +3 an assist, +3 a clean sheet and +10 for player of the match. A match you walk out of earns nothing, and a match that is not ranked earns none. Level 1 takes 50 XP and each level after it 10 more than the last. Badges: 🥉 Bronze from level 5, 🥈 Silver from level 15, 🥇 Gold from level 30, 💎 Diamond from level 50, 🏆 Champion from level 75, 👑 Legend from level 100.
A level belongs to your account, not to one table: it adds up what you have played on every table here, under every HaxBall identity you have linked — and what an identity played before you linked it counts too. It is shown only for a linked identity: a badge beside your name, from Bronze up.
A goal is credited to the last player who touched the ball — for an own goal, the player who put it in — and the assist to the team-mate who had it just before. Matches from before the rooms followed every touch credit the last player who kicked the ball, because that was all the game reported, and a goal with no kick behind it went to nobody. Everywhere on this site, including old months and old matches, a player is shown by the name from their latest match on the tables (a ranked one, or one they were charged for leaving).
Your data
You can sign in with Discord and link your HaxBall identity by typing a one-time !verify code in any room. Your row then carries a check mark and, from level 5, your badge; the site opens on the region you play in most, and your account page shows your level and lists the names you have played under — which only you can see.
This site shows your in-game name and your results, and nothing else about you. The rooms collect more, to moderate them and to keep bans working — the privacy page says exactly what, who can see it and how to ask for it.
Questions, or a concern about this site: [email protected]