Loading your league…
This is usually a dropped connection. Your team is safe — nothing has been lost.
Connect to Supabase
One-time setup on this device. Use your project URL and the anon key (Project Settings → API). Stored only in this browser.
Run a fantasy draft league on any competition.
Draft real squads from the Premier League, the Champions League or a World Cup — then design the scoring system yourself and check it's fair before a ball is kicked.
- ⚖️ Build your own points system, and backtest it against real past seasons
- 📅 Trade and lineup windows that follow the real fixture calendar
- 🏆 Head-to-head or points tally · waivers · captains · flexible formations
Sign in to create or join a league. Your teams follow you across devices, and you stay signed in until you sign out.
You followed a reset link, so you're signed in already. Set a new password to finish.
A full draft against bots — the room, the clock, the queue and your shortlist — on any pool that has been loaded. It is thrown away afterwards and touches none of your real leagues.
Create a league
Pick a format to start from. You can change anything before you create it.
Which game this league plays. It decides the positions, the scoring, and where the results are pulled from.
Who's in the draft pool.
Squads & fixtures are pulled once and shared with every other league on this competition, so most of the time there's nothing to do here. A key is only needed if this server has none configured.
🥅 Squad ▾
🐍 Draft order ▾
Who picks first. Either way the draft snakes — the order reverses every round, so picking last in round one means picking first in round two.
📊 Scoring ▾
The pull is shared and incremental — it skips matches already loaded and only fetches ones played since, so re-running it just tops up. First load of a full season can take a few minutes. Uses the API key from the Competition section.
🌍 Team bonus ▾
Each manager also drafts a team (national side or club) that banks bonus points as it goes deep — a fun knockout-tournament layer. Turn it off for a pure players-only league.
🏆 Format & trades ▾
Instant: free-agent swaps apply immediately (first-come). Waiver: claims queue and resolve when the window closes, in reverse-standings priority (last place picks first).
Applies to both modes — the number of free agents a manager can bring in each window. Instant: swaps beyond the cap are blocked. Waiver: only that many claims are awarded per window.
Each manager names a captain (double points that round) and a vice-captain (doubles instead if the captain doesn't play at all). Set them in the lineup screen.
Automatic mode reads the competition's matchweek calendar: the trade window opens 3h after a matchweek's last KICK-OFF and closes 24h before the next one; lineups lock 1h before the next matchweek's first kick-off. Best with a fixture-driven competition like the Premier League.
League created! Save these somewhere safe:
Invite code (share with managers):
Admin token (stats entry, keep private):
You're the admin. Join as a manager below to also draft a team.
Join a league
Ask whoever set the league up for its six-character invite code — it is on their lobby screen.
You'll need an account first — it is what your team is tied to, and how you get back into the league from another phone. It takes an email and a password.
Shown on the draft board, the table and every trade — pick something your league will recognise.
Managers
Lower it if someone drops out. Tap ✕ beside a name to remove them.
Drag or nudge to set who picks first. Saved as you go.
Round one runs top to bottom, then reverses each round.
Waiting for the admin to start the draft…
How this league works
Recent picks
Filters & scope ▾
Admin access
Paste the admin token you got when the league was created.
👑 You're the app owner. Anything tagged APP OWNER below is hidden from a league's own admin — it writes data shared by every league on the competition, or needs the API key. Everything else is theirs to run.
🗓 Run the season week to week
Trading window & lineup locks
Open it between rounds (once all teams have played); managers can then trade, swap free agents and change their lineups. Closing it locks everyone's lineup in for the next games — points for each matchday are scored against the lineup that was locked at the time, so later changes never rewrite earlier rounds. Close it before kickoff.
Pull stats now
Fetches completed matches for the chosen date straight from API-Football and writes everyone's stats — same as the 06:00 automated pull, on demand. In-progress games are skipped; re-pull after the final whistle.
⚽ League setup competition, scoring, draft
Competition & players
Pick a competition to draft from. Its teams, squads and fixtures are pulled from API-Football once and shared by every league on the same competition — if another league already loaded it, this reuses that data instantly (no re-pull), and one admin's stat pull updates them all. Leave unset for the built-in World Cup 2026 squads. Season = the API's season key (a domestic league's start year, e.g. 2024 for 2024/25; a tournament's year).
Re-reads every squad from API-Football and moves any drafted player who has changed club. Positions are reported but left as drafted. Nothing already scored is touched.
Rugby squads are named days ahead. This checks whether the feed is actually publishing them yet, before any badges are built on it.
🧭 Player positions
⚠ Changing the position of a player who has already played re-scores those matches: per-position scoring and automatic substitutions are worked out from the position a player holds now, not the one they held at the time.
📋 The draft pool
Edit name, club or position to correct a row; add rows for players the feed has not seen yet; put an x in the remove column for anyone who has left. Changes apply to this league only — the shared pool is never rewritten, so nothing you upload here can reach anybody else's draft. Carry a sheet to another league by uploading it there too.
⚠ A player added by hand scores nothing until the feed has seen them play and the competition is re-pulled. And changing the position of anyone with matches already played re-scores those matches — per-position scoring and automatic substitutions read the position a player holds now, not the one they held at the time.
🏉 Carry squads into the draft
For a league whose managers already own players. Everyone in the sheet is kept; everyone else is drafted as normal.
Columns: manager and player are required; position and club only break ties. Download the pool CSV above for the exact spellings. Nothing is written until every row is resolved — a name that matches two players is a question, not a guess.
⚠ Each kept player costs that manager their earliest draft round: keep six and they join from round seven. Squads end the same size, so keeping more is never an advantage.
⚙️ Design your draft — scoring & bonuses
Customise how points are scored for this league. Editable until the first game is scored, then locked so past results never shift. Leave as-is for the standard World Cup values.
Draft settings
The draft pool can be sorted by any stat (goals, points, etc.). Switch this off for a blind draft where nobody can rank the pool by numbers.
🤖 Automation scheduled stat pulls
Scheduled pulls · app admin
Turn the automatic daily stat pull on or off per competition. When on, the scheduled job pulls that competition's completed games into the shared stats each day — one pull serves every league on it. When off, use "Pull stats now" by hand.
🏆 Knockout & redrafts cup competitions only
Redrafts & final phase
As the field narrows: (1) optionally remove trailing managers — their points freeze and their players return to the pool; (2) set the keeper rules and open keeper picks; (3) set the new squad size and hit Start — the redraft begins immediately in reverse-standings snake order, so do it when everyone's around, on a day with no matches. Kept players fill squad-quota slots and each keeper costs that manager's earliest draft round. TEAM picks always carry through.
Team stages
How far each national team has progressed. TEAM picks earn cumulative bonuses (R32 +5, R16 +10, QF +15, SF +20, Final +25, Winner +15). Tick out when a team is knocked out — their players then can't be drafted or swapped in and are badged 🚫 everywhere. Changes save immediately.
⏳ Waiver claims
This league's trade window opens and closes from the fixture calendar, so claims resolve on their own once it shuts. Use this only to resolve them early, or to finish a run that was interrupted.
✍️ Manual stats entry only if a pull misses something
Fallback alongside the daily pull. Rows upsert on (player, match), so re-saving edits in place. Use the automation's label format: Home vs Away (YYYY-MM-DD).
Match