Command reference: !createteam <name> — Create a team (you become captain) !jointeam <name> — Join a recruiting team !invite <username> — (Captain) Invite a viewer !accept [teamname] — Accept a pending invite !kick <username> — (Captain) Remove a member !leaveteam — Leave your current team !renameteam <newname> — (Captain) Rename the team !disbandteam — (Captain) Disband the team !localteam — Show your local team info !recruit / !recruitment — (Captain) Toggle recruiting open/closed
Behaviour
Controls what !myteam posts in chat.
Which team badge appears on the victory overlay.
Victory Customizations
Use a customization chest through the normal Victory Style reward flow.
Loading your subscriber benefit…
Recent charge activity
No charge activity yet.
Streamer vs Streamer
Challenge another streamer to a head-to-head competition. Points earned in each of your streams during the time window count. Most points wins!
Active Challenge
Incoming Challenge
Create Competition
After creating, invite up to 7 other streamers, then click Start when everyone has accepted.
Admin Dashboard
Access restricted.
Season Management
Zeros pts_carry/races_carry so global team points show the active season only.
Global Tournament
Inspect the active weekly bracket, correct settled matchups before rewards are issued, and safely reconcile missing champion chests.
Loading tournament status…
Settled matchups
No settled matchups yet.
Tournament audit
No tournament activity yet.
Global Team Health
Captain subscription protection, earned slots, scoring rosters, and inactivity deadlines in one place.
Loading subscriber snapshot status…
Loading global teams…
Teams Leaderboard Reward
Displayed as a highlighted banner above the teams leaderboard. Leave blank to hide it.
Streamers
Username
Display Name
Races
BRs
Sessions
Joined
Sub Tier
Auto-msgs
Commands
Loading…
Victory Customization Charges
Give event charges that may exceed the cap, or configure a lasting max-charge and recharge-rate bonus. Every change is visible in the streamer's log.
Permanent benefit
Temporary event charges
These charges are added immediately and may go above the streamer's cap.
Recent activity
Players
Username
Display Name
Races
Wins
Total Pts
Last Seen
Loading…
Race Sessions
When
Streamer
Map
Players
Winner
Season
Loading…
Battle Royale Sessions
When
Streamer
Players
Winner
Season
Loading…
World Record Log
Map
Creator
Time
Holder
Set
Season
Loading…
Stream Sessions
Streamer
Started
Ended
Races
BRs
Season
Loading…
Channel OAuth
Link TheJeansentis's broadcaster token so the server can check subscriber and follower status.
Requires scopes: channel:read:subscriptions moderator:read:followers
Checking…
Utilities
Companion Diagnostics
Heartbeat (companion running) vs. results actually submitted. A streamer that's
Connected · no results is running the companion but not
finding/sending the save files — check their save folder.
Marbles on Teams is a cross-streamer stats tracker for the Twitch game Marbles on Stream, created by thejeansentis. Participating streamers run a companion app that watches their Marbles on Stream save folder and automatically sends race and battle royale results to this server.
Results from every participating streamer are combined into a single shared season leaderboard. Your points from every channel count toward the same ranking. Seasons are managed by the site admin and reset the leaderboard when a new one starts.
For Developers
Public Data API
Third-party apps can use a current, read-only JSON snapshot served from Cloudflare. Requests go to Cloudflare's edge and never query the Marbles on Teams application server or database.
Refresh responsibly: the file is regenerated every five minutes. Cache it in your app and do not poll it more often than once every five minutes. Repeated abusive traffic may be blocked at Cloudflare's edge.
JavaScript example
const response = await fetch(
"https://data.marblesonteams.app/v1/snapshot.json"
);
if (!response.ok) throw new Error(`Data request failed: ${response.status}`);
const data = await response.json();
console.log(data.generated_at, data.viewer_leaderboard);
Top-level fields
Field
Contents
schema_version
Contract version. Breaking changes will use a new URL such as v2.
generated_at
UTC ISO-8601 time at which this complete snapshot was built.
freshness_seconds
Minimum recommended client refresh interval.
season
The active global season.
season_stats
Current aggregate counts for the active season.
seasons
Season names and dates. This is metadata, not historical result data.
viewer_leaderboard
Every viewer's current-season aggregate race, BR, points, win, WR, XP, and MoS stats.
streamer_leaderboard
Current-season aggregate stats and active local-team rewards for participating streamers.
team_leaderboard
Global-team standings, visual identity, and public rosters.
world_records
The current fastest tracked result for each map.
maps
Current-season map play counts and streamer counts.
recent_events
The latest 100 race or battle-royale summaries, without full result history.
active_tasks
Tasks that have not expired; no viewer-specific progress is included.
local_seasons
Active local-team seasons and their current standings.
current_tournament
The current public bracket, or null when none exists.
Privacy and availability
The snapshot contains only information already intended for public display. It does not contain OAuth tokens, subscription status, invitations, streamer settings, reward inventories, admin data, or raw historical results. No login or API key is required. Consumers should tolerate the last complete snapshot remaining available during a delayed update.
Viewers
Getting Started
You do not need to sign up. Just race in Marbles on Stream on any participating stream and your account is created automatically when your first result is recorded.
To access all features
Log in with Twitch using the button in the top right corner.
Your Dashboard will show your personal season stats, XP level, and victory style settings.
From the Teams page you can create or join a global team and compete with your teammates across all channels.
Points from every participating streamer's channel are combined automatically. You do not need to do anything special beyond playing the game.
Leaderboard
Leaderboard Tabs
Viewers
Ranks all players in the current season. Use the Season / Today toggle to switch between the full season ranking and a same-day ranking. Click any column header to sort. Click a player row to open their profile.
Column
What it shows
Season Pts
Total points from races and BRs this season
Today
Points earned today across all streams
Race Pts
Race points only, this season
Wins
Race wins this season
Races
Total races played this season
PPR
Average race points per race
BR Pts
Battle royale points this season
BR W
Battle royale wins this season
WRs
World records you currently hold (shown in gold)
Lv
Your XP level
Streamers
Stats for each participating streamer this season. Shows total pts awarded, races hosted, BRs hosted, and world records set at their channel. Click any column to sort. Click a row to open channel details including top viewers and recent sessions.
Teams
Global team standings for the season. Click any column to sort. Click a row to open the team detail view with stats and member list. If a season prize has been set by the admin it appears as a banner above the table.
World Records
The current fastest race time per map, who holds it, and when it was set.
Maps
All maps that have been raced on, ranked by how many times they have been played. Shows the map name, play count, and how many different streamers have hosted it.
Viewer Features
Dashboard
Your personal stats page. Requires Twitch login. Shows your current season stats: total points, races played, race wins, BR results, PPR, and world records you currently hold.
XP Bar
Shows your current level and progress toward the next level. Each level requires more XP than the previous one. When you level up, a Claim Reward button appears. Pick one of three random cosmetic categories, then spin for an unlock from that collection.
Subscriber Chests
Subscribers to TheJeansentis can claim Victory Customization chests for themselves from Configuration. Tier 1 holds up to 3 and recharges every 48 hours, Tier 2 holds 5 and recharges every 36 hours, and Tier 3 holds 10 and recharges every 24 hours. Streamers use the same account balance for viewer giveaways and earn one extra charge whenever they complete one of their own channel's tasks.
Countdown Timer
During an active stream session a countdown appears showing when the next race is likely to start, based on the timing of recent races at that channel.
Victory Style
Choose how your name and animations appear in the victory overlay when you win a race. A live preview updates as you pick options. Click Replay to see the entry animation again.
Most effects are locked behind the reward system. The defaults are always available for free.
My Team
If you are in a global team, your team's season pts, races, BRs, PPR, and member count are shown here.
Channel Stats (streamers only)
Streamers see their own channel stats: total pts awarded, races hosted, BRs hosted, unique players, and PPR. Your top 50 viewers are listed below with a search bar and sort options (pts or races).
Teams
Global Teams
Global teams compete across all participating streamers. Every point your teammates earn on any channel counts toward your team's season total. Teams are ranked on the Teams leaderboard.
Creating a Team
You must follow or subscribe to thejeansentis on Twitch to create a team. Your subscription tier determines how many member slots your team gets:
Follower
3 slots
Tier 1 Sub
8 slots
Tier 2 Sub
10 slots
Tier 3 Sub
12 slots
Bonus slots unlock automatically when your team reaches 4, 8, 12, or 15 subscriber points. Prime and Tier 1 subscriptions earn 1 point, Tier 2 earns 2 points, and Tier 3 earns 4 points. Paid, Prime, and gifted subscriptions all count, and active subscribers have a ★ SUB badge in the global roster.
If Twitch stops reporting a captain's active subscription, the team keeps the captain's last subscription-tier benefits for a 14-day grace period. The team page shows the remaining time. If Twitch reports the subscription again during grace, the live status and tier restore automatically.
If a team's capacity drops below its roster size, nobody is removed. The captain and longest-tenured members occupy the available slots; newer overflow members remain on the roster but do not contribute team points until a slot becomes available again.
Team Logo
Use the in-app SVG logo creator on your captain panel. What you can customize depends on your tier:
Follower: shape (circle, square, hexagon, shield, diamond) and background color
Tier 1+: icon character (13 options) and icon color
Tier 2+: border style (none, solid, glow) and border color
Inviting Members
Open your captain panel, go to the Invite Members tab, and type a viewer's username. They can accept it on their Teams page or in chat with !globalaccept. If they have several invites, !globalaccept [team name or tag] selects one; otherwise the newest invite is accepted. Members can leave with !leaveglobal. Captains and co-captains can also use !globalinvite [username] and !globalkick [username] in channels where the streamer has enabled global team management commands.
Inactive Member Auto-Kick
The captain can set an inactivity limit in days from the team Settings tab. Activity is the member's latest tracked race or BR across all channels; a never-active member is measured from their join date. The captain is always protected. Set the limit to 0 to disable automatic kicks.
Team PPR
Team PPR is the team's total season points divided by the combined number of races and BRs played by all members.
Celebration Settings
Available to captains who are Tier 1 or higher subscribers to thejeansentis. Set the badge style, animation, and color that appears in the victory overlay when a team member wins a race.
Option
Choices
Badge style
Normal, fade, team, outlined, glowing, pill
Badge animation
None, slide, pop, shake
Badge color
Default, gold, white
Weekly Competition
Global Tournament
The top 32 teams on the global leaderboard qualify each Tuesday at 00:00 Europe/Amsterdam. Their team details and scoring rosters are frozen for the tournament, then the teams are randomly drawn into a five-round knockout bracket. Regular global teams continue operating normally while the tournament runs.
Day
Round
Tuesday
Round of 32
Wednesday
Round of 16
Thursday
Quarterfinals
Friday
Semifinals
Saturday
Final
Scoring and tiebreakers
Each matchup counts MoT race and battle royale points earned that Amsterdam calendar day by the frozen scoring members. The higher daily point total advances. If points are tied, the system compares distinct race + BR events, then race + BR wins, then the saved Tuesday qualification rank.
Champion reward
Every member on the champion team's full Tuesday snapshot receives one Victory Customization chest, including members who were outside the team's scoring slots. The chest is claimed through the reward wheel on the Dashboard.
The bracket page shows live matchup points, events, and wins. Completed tournament brackets remain available from the tournament history selector.
Local Teams
Per-Channel Team Seasons
Local teams are separate from the global leaderboard. Each streamer can run their own team season on their channel. Standings are visible on the Local page. Local team management is done entirely through Twitch chat commands.
The streamer must have Enable Local Team Commands turned on in their Config page for these commands to work.
Commands
Command
What it does
!createteam [name]
Create a new local team. You become the captain.
!jointeam [name]
Join a team that has recruiting open.
!invite [username]
(Captain) Send an invite to a viewer.
!accept [teamname]
Accept a pending invite. Team name is optional if you only have one invite.
!kick [username]
(Captain) Remove a member from the team.
!leaveteam
Leave your current local team.
!renameteam [newname]
(Captain) Rename the team.
!disbandteam
(Captain) Disband the team entirely.
!localteam
Full details of your local team on this channel.
!globalteam
Full details of your global team (rank, points, members).
There is no website UI for accepting or declining local team invites. All local team management happens through chat commands.
Progression
XP, Tasks, and Rewards
XP and Levels
Every race and BR finish earns you XP. Your total XP determines your level. Each level requires more XP than the last. XP you earn also flows into your global team's shared pool, helping your team level up too.
Tasks
Streamers can set up to 3 active tasks at a time on their channel. Browse active tasks on the Tasks page and filter by live streamers. Tasks are shared goals that all viewers on that channel work toward at the same time. Completing a task earns XP:
Difficulty
XP reward
Time window
Easy
50 XP
6 hours
Medium
130 XP
12 hours
Hard
280 XP
24 hours
Reward Wheel
When you level up a Claim Reward button appears on your Dashboard. Before the wheel spins, choose one of three random categories that still has cosmetics to collect. The wheel then lands on a random unlock from that category. Once the full catalog is complete, duplicate spins award 75 XP instead.
Cosmetics have five rarity tiers that affect how likely they are to appear on the wheel: Common, Uncommon, Rare, Epic, and Legendary.
Viewer Cosmetics
All unlocked cosmetics are shown in your reward pool on the Dashboard. They apply in the victory overlay when you win a race. Name colors, name effects, entry animations, confetti palettes, and victory FX can all be unlocked.
Team Cosmetics
Teams have their own XP pool that grows alongside member XP. The captain can claim team rewards to unlock badge styles, badge animations, and badge colors for use in the victory overlay.
Chat
Chat Commands Reference
Commands are enabled by the streamer from their Config page. What is available depends on which toggles they have turned on.
Bot Auto-Messages
These are posted by the bot automatically, not by viewers. Each one is a separate toggle in the streamer's Config:
Show results in chat: posts a race or BR summary after each event
Announce world records: posts when a new world record is set at the channel
Team results in chat: posts how many points each team earned after each race
Announce task completions: posts when one or more viewers complete a task in a race
Viewer Commands
Command
What it shows
!mystats
Your Marbles on Teams season points and rank, full Marbles on Stream game-season points, wins, PPR, and team
!daily
Top 10 players ranked by points earned today
!season
Top 10 players ranked by total season points
!myteam
Your global team's rank, season pts, races, BRs, PPR, captain, and member count
!globalteam
Full details for your global team
!globalinvite [user]
Captain/co-captain: invite a viewer to your global team
!globalaccept [team]
Accept your newest global team invite, or select one by team name/tag
!leaveglobal
Leave your current global team (captains must disband instead)
!globalkick [user]
Captain/co-captain: remove a member from your global team
!motcommands
Lists all currently enabled commands at this channel
!teamcommands
Same as !motcommands
Local Team Commands
Only available when the streamer has the Local Team Commands toggle on. See the Local Teams section above for the full list.
Streamers
For Streamers
Getting Set Up
Log in to this site with your Twitch account and make sure your role is set to Streamer.
Go to the Configuration page and download the companion app.
Install and run the companion app. Point it at your MarblesOnStream save folder.
Back on the Config page, link your Twitch token to enable chat features.
Companion App
The companion app (Windows .exe) runs alongside Marbles on Stream. It watches your save folder for new race and royale result files and sends them to the server automatically. The app shows:
Server connection status
IRC bot status (whether chat commands are connected)
Whether you are currently live on Twitch
A download prompt when a new version is available
Chat Settings (Configuration page)
Auto Messages: each toggle controls one type of bot post in your chat.
Show results in chat: race and BR summaries after each event
Announce world records: alerts when a new WR is set at your channel
Team results in chat: pts each team earned, posted after each race
Announce task completions: posted when viewers finish tasks in a race
Viewer Commands: toggle each command independently. !mystats, !daily, !season, !myteam, and !motcommands each have their own switch.
Global Team Management: controls whether viewers can use !globalaccept and !leaveglobal, and captains/co-captains can use !globalinvite and !globalkick in your channel.
Local Team Commands: one toggle enables or disables all 9 local team commands at once.
Streamer vs Streamer (SvS)
Challenge other streamers to a head-to-head points competition. Points earned at each streamer's channel during the time window count toward that streamer's score. Up to 8 streamers can be in a single SvS at once. Set up and manage active challenges from the Streamer vs Streamer card on the Configuration page.
Overlays
OBS Overlays
Both overlay URLs are shown on your Configuration page. Add each one as a Browser Source in OBS. Both overlays stay connected to the server and update automatically after each race.
Panel mode: full panels that cycle automatically at a configurable interval. Available panels: viewer top 10, world records, battle royale leaderboard, teams leaderboard, streamers leaderboard.
Ticker bar: a scrolling horizontal bar showing all stats in one line. Includes today's top viewers, season totals, and the last race result.
All options (width, height, accent color, which sections to include, panel duration) are set from the Overlays card on the Configuration page.
Add as a 1920 x 1080 transparent browser source. Nothing shows between races. When a race finishes, the winner's name and animations appear and then fade out.
The overlay applies the winner's personal Victory Style settings: name color, effect, font, entry animation, confetti, and victory FX. If the winner is in a global team their team badge also appears using the team's celebration settings.
The ?streamer=yourname parameter is required on both overlays. The Config page generates the correct URL for you automatically.