⚽ SubGo

0:00

⚽ Teams

⚽ Who Scored?

Roster (9)

Welcome to SubGo v1.0.38 · · 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.

🎮 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, then drag onto any position slot on the field or onto a row in the On Field list. You can also drag a player already on the field to a different position.
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.
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.
Unavailable Drag a bench player into the Unavailable zone to mark them absent for this game. Tap Reset to return them to the bench, or start a new game to clear automatically.
Remove from Field Tap any player dot on the field to remove them back to the bench.

🔄 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.
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.
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.38