PairGen - Badminton Doubles
Badminton Doubles Auto-Pairing
Free · Designed for iPad. Not verified for macOS.
Instantly generate fair doubles pairings for badminton & tennis. Set players and courts, minimize pairs, track scores, and manage rest. Perfect for practice sessions.
PairGen makes it easy to run badminton and tennis doubles practice sessions — automatically generating fair pairings and tracking match scores, all in one app. Just enter your player count and number of courts, and PairGen builds a fair matchup instantly.
■ Generate pairings automatically
Just enter your player count and number of courts, and PairGen builds fair, rotating pairings and matchups for you.
・Round mode: automatic rotation so everyone plays with different partners over time
・Free mode: generate the next matchup for a court as soon as it's free, without waiting on other courts
・Adjust pairing balance with skill level settings
・Fixed pairs: lock specific players together (for couples or skill-balanced teams)
・Mixed doubles support
■ Score tracking built in
Once pairings are generated, keep scoring right in the same app.
・Simple tap-to-score input
・Undo your last point
・Serve and end (court side) indicators
・Automatic win/loss judgment following official badminton rules
・Game-finished toggle and full score history
■ Rest and player management
・Track playing / resting status per player, so last-minute absences or additions are no problem
・Manage players by name (no need to remember numbers)
・Add player photos
・Save and load groups of players ("today's members")
・Player list shows a dot indicating who is currently in a match — tap it to "pin" a player for top priority in the next combination
■ Court management
・Multiple court support, with fixed skill levels per court
■ Apple Watch integration
Check and control combinations right from your Apple Watch.
■ Share your data
・Share a session (players and combination) with another device via AirDrop
・Email match results directly from the app
■ Server feature to view from other devices (experimental)
Start a server from the Game tab to let other phones/tablets on the same Wi-Fi view the combination and player list, and perform some actions, from a web browser. Check progress from anywhere in the venue.
■ Great for
・Deciding practice matchups at badminton/tennis clubs
・Assigning courts and tracking scores at tournaments or practice sessions
・Handling last-minute player changes with flexible rotation
PairGen frees you from manually tracking "who's playing whom" and "which court is at what score," every single session.
・Localized in Japanese, English, Korean, Simplified Chinese, and Traditional Chinese
・Help page is provided in Japanese. Please use your browser's auto-translation feature.
more I've tried several apps for organizing play. This one checks all the boxes and is easy to use. One thing that is lacking is the ability to sort the names. With 50 names, it's difficult to find names to check people in when getting play set up. Another big help would be to list the names that have a bye.
I've tried several apps for organizing play. This one checks all the boxes and is easy to use. One thing that is lacking is the ability to sort the names. With 50 names, it's difficult to find names to check people in when getting play set up. Another big help would be to list the names that have a bye.
・Fixed an issue where running Delete Match Info turned players set to Absent by Default into active players. They now stay absent after the deletion. Pins are still cleared by the deletion, as before
・When you bring an absent player back from Apple Watch or the web page, Absent by Default is now turned off and saved to the member registration, just as on the Players tab. The same applies when pinning an absent player turns it off
1.32.0 Oct 7
・On iPad, the lists can now be shown in larger text. Use the button to the right of Generate Combination on the Match tab to turn it on and off. You can read who is on which court even with the iPad sitting on a table or bench away from the court
・The combination list is about twice as large, and the player and court lists about 1.5 times. Larger text is on from the start, so turn it off with the same button when you want more rows on screen
・Fixed an issue where the match results were kept when you entered several names and chose Replace. Replacing the players now clears the match results as well
1.31.0 Sep 20
・You can now rearrange a generated combination by hand. On the Match tab, swipe right on a court in the latest round, tap Edit, then tap two players in a row to swap them. You can reshuffle the pairs on a court, swap players between courts, or bring in someone who is waiting, and fixed pairs move together. No more deleting the round and changing who rests just to get a different lineup
・After you rearrange, games played and waiting counts are recalculated for the new lineup and carried into the next round. A rearranged round can still be deleted with a left swipe, as before
・Scores are kept on courts whose players did not change. If you change a court that already has scores entered, you are asked to confirm before those scores are cleared
・In Manage Groups, the group list now appears above the New Group field
1.30.0 Sep 18
・The way combinations are generated was completely rebuilt in v1.26.0. It looks at everyone playing in the round at once and picks the split where the same people are paired up the fewest times. Complaints like "I never get to play with that person" or "I always end up with the same partner" are largely gone, and the same pair no longer carries over from the previous round. Players who have been on court the longest sit out first, so playing time evens out as well
・Managing members has changed significantly. Members you put in a group are saved automatically whenever you change their name or level, so there is no Save button to forget. Players not in any group are treated as "today only" and are not saved, so adding a guest on the spot no longer grows your saved roster
・Added a Manage Members screen. It lists every saved member with the date they last played, so you can filter by "inactive for six months or more" and tidy up in one go
・Registering members and managing groups are now one screen. Create, rename and delete groups, and register members, all in the same place
・Members and their photos now sync through iCloud, so the same saved members appear on every device signed in to the same Apple Account
・Fixed photos being stored larger than intended. Previously the storage limit was reached after just a few photos; now more than 30 fit. This also fixes iCloud syncing that could stall when many photos were registered
・Fixed every player's level resetting to 1 when a group was loaded
・Exporting the member list now produces a CSV file, so you can open and edit it directly in Excel or Numbers (JSON files exported by v1.28.0 and earlier can still be imported)
・Moved the action that flips everyone between playing and resting from the menu to an icon at the bottom of the Players tab
・Fixed an issue where members saved without a group could disappear on the next automatic save right after updating
・Fixed deleting a group leaving behind the registration and photos of members who belonged only to that group. As the confirmation says, they are now unregistered and their photos are deleted
1.29.1 Sep 17
・The way combinations are generated was completely rebuilt in v1.26.0. It looks at everyone playing in the round at once and picks the split where the same people are paired up the fewest times. Complaints like "I never get to play with that person" or "I always end up with the same partner" are largely gone, and the same pair no longer carries over from the previous round. Players who have been on court the longest sit out first, so playing time evens out as well
・Managing members has changed significantly. Members you put in a group are saved automatically whenever you change their name or level, so there is no Save button to forget. Players not in any group are treated as "today only" and are not saved, so adding a guest on the spot no longer grows your saved roster
・Added a Manage Members screen. It lists every saved member with the date they last played, so you can filter by "inactive for six months or more" and tidy up in one go
・Registering members and managing groups are now one screen. Create, rename and delete groups, and register members, all in the same place
・Members and their photos now sync through iCloud, so the same saved members appear on every device signed in to the same Apple Account
・Fixed photos being stored larger than intended. Previously the storage limit was reached after just a few photos; now more than 30 fit. This also fixes iCloud syncing that could stall when many photos were registered
・Fixed every player's level resetting to 1 when a group was loaded
・Exporting the member list now produces a CSV file, so you can open and edit it directly in Excel or Numbers (JSON files exported by v1.28.0 and earlier can still be imported)
・Moved the action that flips everyone between playing and resting from the menu to an icon at the bottom of the Players tab
1.29.0 Sep 16
・The way combinations are generated has been greatly improved since v1.26.0: far less repetition of the same pairs and opponents, and more even playing time
・Fixed an issue where choosing "Mail Results" could do nothing at all. This happened on devices with no mail account set up in Apple's Mail app
・When mail cannot be sent, PairGen now explains why and lets you copy the full results, so you can paste them into another mail app such as Gmail
・The score history on the score entry screen is now a proper badminton score sheet, with the player about to serve highlighted in orange
・The server feature (web browser) shows the same display
・"Mail Results" now sends a summary of matchups and games won, followed by score sheets
1.28.0 Sep 15
・Added a mode that splits the Match tab into two areas (iPhone only). The latest round's combination appears on top and the player list below, so you no longer need to switch to the Players tab to change levels or toggle playing/resting during a session. The button at the top returns you to the previous layout at any time (the player edit screen cannot be opened from the lower list)
・Fixed the court count on the Courts tab being shown in English even under Japanese and other language settings
1.27.0 Sep 12
・Completely reworked how combinations are built. Every player in a round is now considered together, and the split that minimises how often you partner the same person is chosen. Imbalances such as "never getting paired with a particular player" or "always ending up with the same partner" are greatly reduced (this applies to level-locked courts and "1&2" courts as well)
・Improved how evenly playing time is shared. Players on the longest run of consecutive games are the first to sit out, so nobody stays on court or waits on the sidelines for too long. To keep combinations varied, a player may occasionally sit out two rounds in a row
・Reorganised the playing order: pinned players first, then players who have not played at all yet, then players who sat out the previous round
・When a player set to "Absent by Default" is part of a fixed pair, the pair is now dissolved automatically. Previously the remaining partner could end up unable to play for the whole session
・For the server feature (connecting from another device via a web browser), when the browser's language isn't one of the supported languages, the display language now falls back to English instead of Japanese, matching the app's own behavior
1.26.0 Sep 11
・Fixed a bug where deleting (undoing) a round could leave a player's consecutive-games count or a resting player's match count out of sync
・Fixed a bug where deleting a round could also roll back pairing and opponent-matchup history unrelated to that round
・A round can now only be deleted immediately after it's generated (deleting several rounds in a row is no longer possible)
・Fixed a bug where restarting the app lost the opponent-matchup history used to avoid repeat matchups
1.25.0 Sep 7
・Added a "File Operations" item to the Players tab menu. You can now export player and group information to a JSON file (pairgen.json), and import it back from a saved file (importing replaces the entire saved member database and current player list)
・When an imported file's JSON is invalid, the app now shows an error message pointing to the specific cause — a syntax error or a missing field
1.24.0 Aug 26
・Added a how-to-use video to the help page's home screen. It was later switched to a vertical Shorts version, and the embed now goes through youtube-nocookie.com for privacy
・Once a combination has been generated, player and court counts can no longer be reduced below the numbers used for that generation, to keep them consistent with the existing combination (applies to the − buttons and swipe-delete on the Match, Players, and Courts tabs). Resetting the match results lets you freely adjust the counts again
・Fixed a bug where a synced group name (All/Unaffiliated) could show untranslated text on a device with a different language setting than the one it was saved on
・Made the pinned indicator on the Players tab more prominent, and while a player is pinned, their status can no longer be switched to "Resting" (unpin first to change it)
・Various visual refinements: fixed-pair heart colors, the Free mode court color, and the layout of the player edit screen
・Deleting a player via the trash icon on the edit screen no longer returns to the list — it now switches directly to the next player's edit screen (or the previous one if you deleted the last player)
1.23.0 Aug 14
・Changed the combination display layout on the Match tab: the level badge now appears to the left of the court name, and the win count is centered within the row
・Court settings ("Active" and "Lock Level") are now shown directly on each row of the Courts tab, so you no longer need to open a detail screen to change them. Courts with "Active" off are now shown grayed out
・Changed the match-count indicator on the Players tab from "G" to "M" (Match), since it was easily confused with "G1/G2/G3" (the individual games within a match) on the score screen
・Added a "Game Point" setting (the score needed to win a game) to the score screen. Defaults to 21 points, with automatic official-rules scoring (win by 2 after 20-20, and win outright at 30 after 29-29), and the "Finished" toggle now switches on automatically once a winner is decided
・When G1 or G2 finishes, the end (opposite side from the previous game) and serve (the previous game's winner serves first) for the next game (G2 or G3) are now set up automatically
・Replaced the "End" and "Serve" buttons on the score screen with small ⇆ buttons, placed between the player display and between the point buttons respectively
・Brought back the − / + buttons below the player and court counts on the Match tab (this existed before the SwiftUI rewrite and had been temporarily missing), letting you adjust player and court counts on the spot without opening the Players or Courts tab
・Swipe-deleting a player on the Players tab now also removes them from the saved member database (matching the behavior of the trash icon on the edit screen)
・Players with a name that's just numbers (e.g. "1", "2" — unnamed players) are no longer saved to the member database. Any such entries already in the database are now automatically removed the next time you load
・Added ▲ / ▼ buttons to the player edit screen, letting you switch to the previous or next player's edit screen directly without returning to the list
・Enlarged the player name buttons on the score screen to about 1.5x their height, with the player's photo now shown on the left edge
・Changed the end/serve swap controls on the server feature's web page to match the iPhone app's small ⇆ button style
・Changed the court display on the server feature's web page to show the level badge, then the court name (now prefixed with "Court"), then the combination, with adjusted spacing between them
・Changed the combination display layout on Apple Watch: the level badge now appears to the left of the court name, with added spacing between the court name and the combination. Fixed pairs are now shown with a heart mark
・Changed the player count on the Players tab and the court count on the Courts tab to the same "active / total" format used on the Match tab
1.22.0 Aug 9
・Fixed an issue where resting players would be deprioritized when other players advanced in the combination during the same rest period
・Fixed an issue where the voice input button for entering player names never asked for microphone permission on first use and stayed permanently disabled
・Fixed an issue where the member database was silently overwritten by actions like entering scores or backgrounding the app, even without tapping the "Save" button
1.21.0 Aug 8
・Fixed an issue where the same two players could end up as partners again in the very next round
・Updated the in-app Help button to link to the new help page (added a reverse-lookup guide to find topics by what you want to do)
・Fixed an issue where Free mode could be enabled with too few active players even when there were enough courts
・Added PairA / PairB labels to the score screen and clearer point buttons
・Fixed an issue where the score shown on the G1/G2/G3 game tabs would swap order every time End was tapped
・Fixed the same issue for the win count display and made it easier to read
・Redesigned the score screen layout with large square point buttons that show the score directly
・Fixed the score screen's point buttons not being centered in iPad portrait orientation
・Fixed an issue where there was no way to go back from the score screen to the court list on iPad
・Changed the Free mode court list: removed the gray border highlight on the most recently updated court, and in-progress courts now alternate yellow/green by list position
・Changed the condition for switching to Free mode (now excludes 1&2 mixed courts from the court count) and made the warning message clearer
・Redesigned the server web page's score screen to match the iPhone app, and added a score reset action
・Renamed the "Game" tab to "Match" and cleaned up related Japanese terminology to match the official badminton rules (e.g. the round header no longer reuses the word for an individual game). Also fixed the Korean and Chinese labels for the "End" (change of ends) button to better match the official rules in those languages
1.20.0 Aug 3
・Fixed an issue where a newly added player could be skipped for priority in the next generated combination after generating several rounds
・Fixed an issue where a fixed pair could be split across two different courts of the same level
・On the combination screen, fixed pairs are now shown with a color-coded heart mark (matching the player list) instead of "&"
・Added a clear button to the name field on the player edit screen to erase the name in one tap
・Switching to Free mode with only one court now shows an alert and is prevented
・On the Free mode combination screen, unified the background to yellow and added a gray outline to courts updated by the latest generation (no outline once a court is finished)
1.19.0 Jul 25
・Fixed an issue where player actions (add, delete, toggle rest, change level, shuffle, load group, etc.) weren't reflected on Apple Watch
・Improved the reliability of communication with Apple Watch (fixed an issue where information could stay stale depending on real-device connectivity)
・Added live score entry to the server feature's web page — tap L/R buttons to score points (reflected instantly), with server/receiver display, end change, and serve change support
1.18.0 Jul 21
・[Experimental] Added a server feature to the Game tab. Once started, other phones/tablets on the same Wi-Fi can view the current combination and player list, and perform some actions (generate combination, finish a court, toggle rest, change level, switch Round/Free mode) from a web browser
・Added a Round/Free switch button to the Apple Watch app
・The Apple Watch app now shows a confirmation dialog before finishing/resuming a court in Free mode (prevents accidental taps)
・The Apple Watch app's combination view now shows the court name and level
・The Apple Watch app's player list now shows player level; tap to change it
・The Apple Watch app's Japanese display name is now "くみあぷ"
・Fixed an issue where switching Round/Free mode on iPhone wasn't reflected on Apple Watch
1.17.0 Jul 19
・Fixed an issue where swipe-deleting a player from the list also removed them from the saved member data
・Fixed an issue where loading groups in succession could fail to refresh the player list
・Fixed an issue where players marked "absent by default" weren't grouped at the bottom of the list after loading a group or relaunching the app
・Fixed an issue where the loaded group was forgotten after relaunching the app
・Fixed an issue where saved data could be lost if the app was backgrounded right after reinstalling, before iCloud sync finished
1.16.0 Jul 17
・Fixed a crash that occurred when deleting (undoing) the most recent turn after generating a combination
1.15.0 Jul 15
・On first launch only, the app now automatically sets up 4 players (1–4) and one court ("A")
・Improved alert messages shown when combination generation fails, making the cause clearer
・In Free mode, the court list's Finish/Resume action and the "Finished" toggle on the score screen now stay in sync
1.14.0 Jul 14
・Fixed an issue where combination generation could immediately rematch the same two teams against each other
1.13.0 Jul 10
・Added a "pin" feature: tap a player's status dot to give them top priority in the next combination, regardless of their wait count
1.12.0 Jul 9
・iCloud sync: data is automatically backed up to iCloud and restored after reinstall
・Player photos are now backed up and restored via iCloud
・Localized permission descriptions for microphone, camera, and photo library access
・Microphone permission is now requested on first use instead of at launch
・Added session sharing via AirDrop: the recipient's current player list and combination are replaced with the sender's data
・Added a dot next to each player's name showing whether they're currently in a match (red = playing, gray = otherwise)
1.11.0 Jul 7
・iPad support (player & court management on the left, combinations on the right)
・Control player rest/return from Apple Watch
・Fixed combination generation bug
・Migrated to SwiftUI framework
・Added automatic data recovery on crash (database structure change)
・Added group management feature
・Unified help page in Japanese
1.10.0 Jul 2
- Improved algorithm of generating pairs just a little.
- Court level assignment bug fix.
1.9.0 12/16/2025
・Fixed an issue where running Delete Match Info turned players set to Absent by Default into active players. They now stay absent after the deletion. Pins are still cleared by the deletion, as before
・When you bring an absent player back from Apple Watch or the web page, Absent by Default is now turned off and saved to the member registration, just as on the Players tab. The same applies when pinning an absent player turns it off
more Version 1.32.0 Oct 7
Data Not Collected The developer does not collect any data from this app.