⚽ SubGo

0:00

⚽ Teams

⚽ Who Scored?

Roster (9)

Welcome to SubGo v1.0.48 · · Feedback

© 2026 Joseph Warren · STLDev · stldev.com

⚽

No Active Game

Enter an opponent name above and tap New Game to get started

Game History

⚽ SubGo
Sideline substitution and game tracker for soccer coaches.
Everything runs in your browser — no account, no server, no internet needed after first load.

⚙️ Settings

Position Numbers
Keep Screen On
Buzz Alerts
Field Positions Use the preset buttons to configure the field for your game format, then fine-tune with individual checkboxes. Any player assigned to a hidden slot is moved back to the bench automatically. When a paired slot (e.g. ST 2) is hidden, the remaining slot centers on the field.

👥 Teams

Switch Teams Tap the team name button in the center of the header to open the team manager. All rosters and game history are stored separately per team.
Add a Team Type a team name in the team manager and tap Add. The app switches to the new team immediately.
Delete a Team Tap ✕ next to the team in the team manager. You must have at least one team. Deletion is permanent.

📋 Roster

Add Players Enter a jersey number and name, then tap Add Player. Jersey number is optional. Players are stored per team.
Edit Players Tap ✎ on any player card to edit their name or jersey number.
Remove Players Tap ✕ on any player card to remove them from the roster.
Setup Guide First-time users are walked through naming their team and adding players automatically. Re-run it anytime via the Setup guide link at the bottom of the Roster tab.
Feedback Tap the Feedback link at the bottom of the Roster tab to open a short form to send suggestions or report issues. No account needed.

🎮 Running a Game

Start Game Go to the Game tab, type the opponent name, and tap New Game. The field appears with labeled position slots.
Place Players — Drag Press and hold a player chip in the Bench panel briefly, then drag onto any position slot on the field or onto a row in the On Field list. To move or swap players already on the field, press and hold a player dot on the field, then drag to another position — drop on an empty slot to move, or on an occupied slot to queue a pending sub.
Place Players — Tap Tap a bench player to select them — they highlight in blue and the bench header shows "tap a position." Then tap any field slot or On Field row to place them. Tap the same player again or tap Cancel to deselect.
Game Clock Tap Start in the top right to run the clock. Tap HT at halftime — the clock resets to 0:00 but all player minutes carry forward into the second half. If you forgot to start the clock on time, tap the clock display while paused to reveal −30s and +30s nudge buttons to adjust the time. Tap the clock again to hide them. The clock uses real wall time — if you briefly switch apps or receive a call, it catches up automatically when you return.
Rotation Plan Tap 📅 Rotation Plan to build a pre-game substitution plan. Add waves — each wave picks a target half and minute, a From lineup (or current field), and a To lineup. The diff between the two lineups determines proposed subs and position moves. When the clock reaches a wave's minute a banner appears with Review and Skip buttons. Reviewing shows proposed changes which the coach can apply or skip. The stop toggle at the top of the plan pauses all wave alerts without clearing the plan.
Saved Lineups Tap 📋 Saved Lineups below the New Game button to open the lineup manager. Set up players on the field, then type a name and tap Save Current to store the lineup. Load a saved lineup at any time to restore it — players not on the roster are skipped automatically. Lineups are saved per team.
Halftime / End Game Tap HT to start halftime. The button changes to End for the second half — tap it to close all player stints and stop the clock. After halftime you will be offered the option to restore the 1st half starting lineup for the 2nd half.
Unavailable Drag a bench player into the Unavailable zone to mark them absent for this game. On mobile, tap a bench player to select them, then tap the Unavailable box to mark them. Tap Reset to return all unavailable players to the bench, or start a new game to clear automatically.
Remove from Field Tap (without holding) any player dot on the field to remove them back to the bench — a confirmation will appear. Use press and hold then drag instead if you want to move or swap the player rather than remove them.

🔄 Substitutions

Queue a Sub Drag or tap-select a bench player onto an occupied field slot. A pending sub is queued — the outgoing player dims and shows a pulsing orange ring. Multiple subs can be queued at once.
Call Out Tap 📋 Call Out to open a full-screen display. Each substitution is shown as a paired card — incoming player on the left, position in the center, outgoing player on the right. Easy to read aloud on the sideline.
Confirm Subs Tap ✓ Confirm when play stops to execute all queued subs at the current game minute. Tap ✕ on any pending row to cancel that individual sub.

⏱ Alerts

Bench Alert In the Bench panel, set the minutes threshold (default 5 min). Any player on the bench longer than that is highlighted in orange with their bench time shown. The phone will also buzz once when they first hit the threshold. Uncheck the box to disable.
On Field Alert In the On Field panel, set the minutes threshold (default 20 min). Any outfield player on the field longer than that is highlighted in orange. The phone buzzes once when they first hit the threshold. The GK is never flagged and is always pinned to the bottom of the On Field list — outfield players sort by longest time on field first. Uncheck the box to disable.
Alert Resets Both alerts clear the moment a player is substituted. Halftime resets all timers so second-half alerts start fresh.

⚽ Score Tracking

Log a Goal Tap your score (blue) in the header to open the scorer picker — choose who scored from the on-field players, or tap Own Goal. Tap the opponent score (white) to log their goal instantly.
Undo / Edit Tap ↩ in the header to remove the last goal. In the Summary tab, expand a game and tap ✎ to edit a scorer or ✕ to remove a goal individually.

📊 Summary

Expand a Game Tap any game row to expand it and see the final score, goal log with scorers and minutes, and a full player breakdown sorted by total time played.
Starters Each expanded game shows collapsible 1st Half Starters and 2nd Half Starters sections — a snapshot of exactly who was on the field when the clock first started and when HT was pressed. Tap the header to expand.
Position Breakdown Under each player's name, small tags show every position they played and how many minutes at each — for example CB 15' CM 8'. Sorted by most minutes first.
Export CSV Tap CSV at the top of the Summary tab to download all game data as a spreadsheet file.

💾 Data & Storage

Storage All data is stored locally on this device only. No data is sent to any server. Clearing your browser data will erase all teams, rosters, and games.
Offline Use After the first load, SubGo works without an internet connection. Install it to your home screen for a full-screen app experience.
Install on Phone Android: open in Chrome, tap the three-dot menu → Add to Home Screen. iPhone: open in Safari, tap the Share button → Add to Home Screen.
Dev Mode Add ?devmode=true to the URL to make the game clock tick 30 seconds per second — useful for testing without waiting through a full match.

📅 Rotation Plan

⏱ Wave Ready

📋 Saved Lineups

⚽
Welcome to SubGo
Your sideline substitution and game tracker for soccer coaches.

Let's get you set up in about 60 seconds.
👕
Name Your Team
What's your team called? You can manage multiple teams later.
👥
Add Your Players
Add a few players to get started. Jersey number is optional. You can add more anytime in the Roster tab.

⚗️ SubGo Test Panel

Tap "Run All Tests" or select a suite above.

✓ 0 passed ✗ 0 failed 0 total

⚽ SubGo — Substitutions

v1.0.48