Used by 50+ leagues across the nation — the fairest way to run your pickleball session.
Live app: pickleball.akula.me
Organizing doubles pickleball is a logistics puzzle: who sits out, who played together last round, who has been benched twice in a row? This tool solves all of that automatically.
Enter your players, set how many courts you have, and get a complete rotation schedule that:
- Minimizes repeat teammates and opponents across rounds
- Distributes court time evenly — no one sits out more than anyone else
- Optionally prevents back-to-back bench time
- Produces shareable, reproducible schedules via a single URL
- Instant schedule generation — works entirely in the browser, no account needed
- Configurable courts & rounds — supports 1–10 courts and 1–50 rounds
- Seeded randomness — use a seed to regenerate the exact same schedule anytime, or share it with others
- Shareable links — the full configuration is compressed into the URL so you can send a schedule to your whole group
- Copy to clipboard — export the schedule as plain text for messaging apps or printed sheets
- Advanced tuning — adjust penalty weights for teammate repeats, opponent repeats, and play-time balance; tune beam width for deeper search
- Live diagnostics — see play counts, bench counts, and partner/opponent frequency after generation
- Open pickleball.akula.me
- Paste your player list (one per line, or comma-separated)
- Set the number of courts and rounds
- Click Generate Schedule
- Share the link or copy the schedule
The generator uses a beam search over possible round assignments, scored by a multi-objective cost function:
| Factor | What it controls |
|---|---|
| Teammate repeat penalty | How hard the algorithm avoids putting the same pair together |
| Opponent repeat penalty | How hard it avoids the same matchup |
| Play balance penalty | Keeps cumulative court time even across all players |
All weights are tunable. A seeded pseudo-random number generator (xmur3 + sfc32) makes schedules deterministic and reproducible.
- Vanilla JavaScript (ES modules) — no build step, no framework
- HTML5 + CSS3
- LZ-String for URL compression
- Hosted on GitHub Pages
git clone https://github.com/akulanikhil/pickleball.git
cd pickleball
# Open index.html in a browser, or serve with any static file server:
npx serve .No dependencies to install. All logic is in app.js.
Bug reports, feature requests, and pull requests are welcome. Open an issue to discuss larger changes first.
MIT