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.
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
- From the dashboard, open Timer.
- Click Create your first source. Copy the browser-source URL.
- Add it to OBS as a Browser Source (recommended 1920×1080). Full walkthrough if you're new to browser sources.
- On the tool page, set your Twitch channel name and enable chat commands.
- Set the default duration to where you want the subathon to start (e.g. 4 hours).
Subathon mod commands
| Command | Use it for |
|---|---|
!timer 4h | Start the subathon clock at 4 hours. |
!timerAdd 5m | New sub came in — give chat 5 more minutes. |
!timerAdd 1m30s | Bits cheer — bonus 90 seconds. |
!timerPause | You need to step away; freeze the clock cleanly. |
!timerResume | Back at the desk; clock starts ticking from where it stopped. |
!timerRemaining | Flash 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 5mto 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
!timerAddis 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.