streamtoolset
DocsChecking session…

Guides

Subathon timer for OBS — survives every refresh

The single thing that breaks subathon timers is OBS crashing mid-stream and the count resetting. This one stores the deadline server-side so the timer keeps counting even if every overlay disconnects — and every scene shows the same number.

Video walkthrough coming soon

Why the "refresh survives" part matters

A normal countdown timer is just JavaScript in a browser tab. If OBS refreshes the source (mid-stream crash, scene-switch cache miss, you accidentally hit refresh), the timer starts over from whatever it was when the page loaded. For a 1-hour stream that's a minor annoyance. For a 72-hour subathon, it's the run-ruining bug.

The deutschmark Timer stores the deadline (epoch milliseconds) on the server. The overlay only renders endsAtMs - now locally. Refresh OBS, restart your PC, change scenes — the timer keeps the same end time and the overlay just resumes from wherever it should be.

End-to-end setup

  1. From the dashboard, open Timer.
  2. Click Create your first source. Copy the browser-source URL.
  3. Add it to OBS as a Browser Source (recommended 1920×1080). Full walkthrough if you're new to browser sources.
  4. On the tool page, set your Twitch channel name and enable chat commands.
  5. Set the default duration to where you want the subathon to start (e.g. 4 hours).

Subathon mod commands

CommandUse it for
!timer 4hStart the subathon clock at 4 hours.
!timerAdd 5mNew sub came in — give chat 5 more minutes.
!timerAdd 1m30sBits cheer — bonus 90 seconds.
!timerPauseYou need to step away; freeze the clock cleanly.
!timerResumeBack at the desk; clock starts ticking from where it stopped.
!timerRemainingFlash the current remaining time on the overlay (~3 seconds).

Wiring sub / bit triggers automatically

For full automation — every sub adds X minutes, every 100 bits adds Y seconds — you need a chat bot that translates the events into !timerAdd calls. Common setups:

  • Streamlabs Cloudbot — set a custom command on sub/cheer that posts !timerAdd 5m to chat. The toolset overlay reads it as a normal mod command.
  • Nightbot — same pattern with custom commands.
  • Mod manually — for short subathons, having a trusted mod call !timerAdd is simpler and more flexible than wiring automation.

Permissions default to mod-only on the add/pause/cancel commands so chatters can't push your timer around.

Multiple scenes, one timer

A subathon usually has multiple OBS scenes — "Just chatting", "Gameplay", "BRB". Create one Timer browser source and use OBS's Add Existing to reference the same source from every scene. The state is per-channel, not per-source, so they all show the same number and stay in sync to the millisecond.

Hide it without losing it

During a BRB or pause scene where you don't want the timer visible: !timerHide hides every visible timer instance. The countdown keeps running underneath. !timerShow brings them all back.

Style + position

On the tool page: pick the position (one of 7 anchors), pick a corner-rounded or bare look, set the format (hh:mm:ss for long subathons), tweak the digit color + accent, and toggle the "pulse when 0:00 hits" option for the final cliffhanger.

What happens at zero

The timer flashes the end-label (default "Time's up") for a configurable number of seconds, then idles. The deadline is still recorded server-side, so if you call !timerAdd 30m after hitting zero, the timer resumes counting down the new duration — handy for "rescue" subs that bring a dead subathon back.

What you give up vs paid subathon tools

This timer is the raw clock — no Twitch sub event hookup out of the box (you wire that via Cloudbot / Nightbot for now), no live leaderboard of contributors, no sub-goal progress bar. If you need the full subathon dashboard with rules, gift-sub conversion rates, and viewer-side animations, paid tools have more polish. If you want a clock that will not break when something goes wrong at hour 47 of your run, this is it.

More

Pair with Event list to surface every sub / cheer on stream and Chat Box so viewers see the bot's !timerAdd response inline.