Configurable points
Set how many points a win, draw, and loss are worth. The 3–1–0 default matches FIFA/UEFA, but you can dial it in for rugby, hockey, or whatever your league needs.
Run a football league, basketball season, or any head-to-head sport on Discord. Configurable points per result, match scores, and a live web leaderboard.

Scoreboards is the Discord league bot built for sports communities. Run a Sunday-league football season, a casual basketball ladder, a FIFA / NBA 2K tournament, or any recurring 1v1 or team competition — players submit match results with the score, the bot awards points for each win, draw, and loss, and the leaderboard updates in real time inside Discord and on a shareable web page.
The basics
A league leaderboard ranks players by total points accumulated over a season. Every match awards a fixed number of points — typically 3 for a win, 1 for a draw, and 0 for a loss, the standard used by every major football league in the world since 1994.
Unlike ELO, the scoring is transparent and predictable: win three games and you've earned nine points, no math required. That makes it the perfect format for sports, tournaments, and any community where the rules should be obvious at a glance.
Record the score of each match (3–1, 2–2, 5–0) so your league doesn't just track who won — it tells the whole story of the season.
Pick two players and a score, then report it. The result and the points follow the same rules the bot scores League matches by.
Points for a win · draw · loss
League table
Sunday League
| # | Player | Played | Won | Drawn | Lost | Goal difference | Points |
|---|---|---|---|---|---|---|---|
| 1 | Kabuto | 12 | 9 | 2 | 1 | +17 | 29 |
| 2 | arcadefox | 12 | 8 | 3 | 1 | +13 | 27 |
| 3 | Nova | 12 | 8 | 1 | 3 | +10 | 25 |
| 4 | ripcord | 12 | 6 | 4 | 2 | +8 | 22 |
| 5 | Vex | 12 | 6 | 2 | 4 | +4 | 20 |
| 6 | pxlwitch | 12 | 5 | 2 | 5 | −1 | 17 |
Level on points? The web leaderboard splits them on goal difference, then goals scored. A change to the points counts from the next approved result; points already on the table stay.
Features
Set how many points a win, draw, and loss are worth. The 3–1–0 default matches FIFA/UEFA, but you can dial it in for rugby, hockey, or whatever your league needs.
Enter the score for every match (3–1, 2–2, 7–4). Scores determine the winner automatically — higher score wins, equal scores are a draw.
Hit Submit on the leaderboard, then enter both sides and the match score. The bot awards points to every player on each side and updates the standings instantly.
A league can also score free-for-alls of 3 to 8 players, where everyone plays for themselves. Pay the whole field from a placement points table (10-8-6-4-2-0, F1 style), or keep it simple — the winner takes the win points, everyone else the loss points, and a drawn game pays the draw points to all of them.
Submitted matches land in a log channel for moderator review before points move. Auto-approve after a configurable delay if you trust your community.
Turn on the Queue button and the bot pairs players with similar points per game, so someone who has simply played more is not matched as if they were better. The queue is in beta.
Assign Discord roles automatically based on league position (top 3, top 10, promotion/relegation zones). Roles update the moment the standings change.
Set an end date, or end the season from the dashboard, and the board freezes: a podium is posted and the final table stays as the season's record. The next season starts on a new board.
Every league gets a shareable web page with full standings, match history, wins/draws/losses, and match scores — so members can follow the season outside Discord too.
Want the full mechanics and best-practice tips? Read the leaderboard bot overview →
From result to table
Every League result takes the same short path, 1v1 or 8v8. Nobody does sums: the score decides the result, and the board does the rest.
Press Submit result under the board, pick both sides and type the score, such as 3-1.
The higher score wins and equal scores are a draw, so nobody has to pick a winner by hand.
With a log channel, the result waits until a validator or the opponent approves it, or auto-approval does after the delay you set.
The winners take the win points, the losers the loss points, and a draw pays both sides the draw points. On a team board every player on a side gets the same.
The board in Discord is redrawn with the new points and W/D/L, and its web page shows goals for and against as well.
Every player keeps their own row. The whole winning side takes the win points, and the score counts as goals for and against each of them.
Named teams sign up once with the board's Team sign-up button, with up to two reserves, and the table ranks the teams instead of players.
An admin or validator can edit a match's score on the board's web page: the points are taken back and paid again on the corrected result. Cancelling a match takes them back.
Free-for-all
Set a League board to a free-for-all of 3 to 8 players and a placement points table can pay every finishing place, F1 style. Report the same race three ways and see what each player takes.
Report result
Friday Kart Night, race 3
6 players
A full finishing order: every place is paid from the placement points table.
Placement points
Switch them on in the dashboard, below the win, draw and loss points, and a 6-player board starts from 10, 8, 6, 4, 2, 0. Any place can take any whole number, negatives included.
A free-for-all board shows Report result instead of Submit result: pick everyone who played, then the winner, the full order or Everybody draws.
Players who tie each take the points of the place they share, and anyone finishing past the end of the table keeps scoring its last entry.
First place, a tie for it included, counts as a win and everyone else as a loss. An all-draw is a draw for the whole field.
Use cases
Football/soccer, basketball, futsal, handball, hockey — any sport where matches have a score and a season produces a table.
FIFA, NBA 2K, Madden, NHL, Rocket League — all the sports games that play best with a proper table rather than an ELO ladder. Set a team size for the 2v2 and 3v3 formats.
Fix the squad size for the season and every player still gets their own row: the winning side's players all take the win points, and the match score counts as goals for and against each of them.
Or run it like a real league: turn on fixed teams and named squads sign up once (with up to two reserves), matches are submitted team vs team with the score, and the table ranks the teams by points.
Group-stage formats where every player meets every other player and points decide who advances.
Office ping-pong, pool leagues, darts nights — any recurring competition where you want a transparent table instead of a rating.
Economy · Beta
Switch on the economy and every approved result on this board pays your members a currency you name. They spend it in your server's shop on roles, board emojis and name colours, so there is always a reason to play one more.
See how the economy worksQuick start
Invite the bot to your Discord server. It takes a few seconds.
Add to DiscordName the board and pick League. It pays 3 points for a win, 1 for a draw and 0 for a loss until you change that in the dashboard. Press More options afterwards for teams up to 8v8, a free-for-all or fixed teams.
Press Submit result on the board, pick both sides and type the score as 3-1. The winner and the points follow from the score.
Auto-approval, roles for the top ranks, seasons, colours and a web page for every board are all in the dashboard.
Open the dashboardFAQ
Yes. A new League board pays 3 for a win, 1 for a draw and 0 for a loss. In the dashboard each can be any whole number from −100 to 100, so 2/1/0 for hockey works, and so does docking points for a loss. A change counts from the next approved match; points already on the table stay as they are.
They press Submit result under the board, pick both sides and type the score, such as 3-1 (3 1 and 3:1 work too). The higher score wins and equal scores are a draw. With a log channel set, the result waits for a validator or the opponent to approve it; without one it counts straight away. Matches can also be submitted from the board's web page.
The board's web page separates them by goal difference, then goals scored, as most football leagues do, and then by name. Goals come from the scores entered with each match.
Yes, two ways. Give the board a team size from 2v2 to 8v8 and every player keeps their own row, with the whole winning side taking the win points. Or turn on fixed teams: named teams sign up once with the board's Team sign-up button, with up to two reserves, and the table ranks the teams.
Yes. Set the match format to a free-for-all of 3 to 8 players and results are reported with the Report result button. Switch on placement points in the dashboard to pay every finishing place, F1 style. Without them, or when only the winner is reported, the winner takes the win points and everyone else the loss points; an all-draw pays everyone the draw points.
Set an end date, or end the season from the dashboard. The board freezes, a podium is posted and the final table stays as the season's record. For the next season, create a new board with /leaderboard create.
More leaderboard types
Every Scoreboards leaderboard lives in Discord and on the web, and one server can run as many as it likes.
A live points-based leaderboard turns casual matches into a season — and gives the whole community a shared table to rally around.
Add to Discord