Focusdoro LogoFocusdoro
GuidesThemes
  • Themes
  • Guides
  • Overlay settings

Settings

Sound
Auto-start
Start the break timer when a focus session ends.
Start the next focus session when a break ends.
Sign in
  1. Home
  2. >
  3. Guides
  4. >
  5. OBS Timer Guide: Countdown, Stopwatch & Speedrun (2026)

OBS Timer Guide: Countdown, Stopwatch & Speedrun (2026)

Last updated: August 2026 · 13 min read

Type "timer obs" into Google and you get a mix of intents crammed into one search box: streamers who want a countdown for a "BRB" scene, speedrunners who need millisecond-accurate splits, subathon hosts whose timer has to respond to Twitch subs, and coding or study streamers who want a Pomodoro cycle that manages itself. OBS Studio does not ship with a visible timer widget for any of these out of the box. It ships with one basic Lua script, and everything past that is a choice.

This guide covers every practical way to get a timer into an OBS scene: countdown, stopwatch, speedrun, subathon, the built-in Lua script, community plugins, and browser source overlays, including which one to actually pick for your use case and the plugin-vs-browser-source question that trips up most people searching for this.

your stream
Focus
25:00
Starting soon
ThemePhase

This is the actual overlay, running right now. In OBS it is a Browser Source pointed at your personal URL, so it updates on stream as you start, pause and finish sessions.

All five themes are free.

Key Takeaways

  • OBS ships with a countdown.lua script (Tools → Scripts), the fastest path for a simple countdown with zero installs.
  • For a stopwatch or speedrun timer, you need a community Lua script (the built-in one is countdown-only) or a browser source count-up service.
  • A timer plugin (Ashmanix, StreamTimer) lives entirely inside OBS. A browser source overlay (like Focusdoro) runs from an external tab and can auto-cycle Pomodoro sessions.
  • Subathon timers are a separate use case entirely, they respond to subs and bits. A regular countdown timer cannot serve as a subathon timer.
  • Everything here works in Streamlabs OBS via Browser Source. Plugin installs differ, but browser-based timers are fully compatible.

Countdown, Stopwatch, or Speedrun: Which Do You Need?

Before picking a method, know which timer type actually fits your stream.

  • Countdown timer: starts at a set duration (e.g., 25:00) and counts toward zero. Used for: "BRB, back in 5" scenes, structured work blocks, Pomodoro intervals, pre-stream countdowns before going live. This is what most people mean when they search "countdown timer obs" or "how to add a timer to obs."
  • Stopwatch / count-up timer: starts at 0:00 and counts up. Used for: showing how long a coding or study session has been running, elapsed stream time, and as the base mode for speedrun timing.
  • Speedrun timer: a count-up timer with millisecond precision and split/hotkey support. Functionally a stopwatch with extra controls, covered by the same community Lua scripts in Method 2.
  • Subathon timer: a countdown that grows when viewers subscribe or donate. Not a standalone timer, it requires a Twitch API integration. Covered separately in Method 5.

Most people who search "obs countdown" or "obs timer" want a plain countdown. Speedrunners specifically need count-up with millisecond precision, the OBS Lua scripts in Method 2 handle this; a simple browser source overlay does not.

Six Ways to Add a Timer to OBS

  1. OBS Built-In Lua Script: uses OBS's included countdown.lua. No downloads.
  2. Stopwatch / Speedrun Community Script: a more capable Lua script for count-up, milliseconds, and hotkeys.
  3. OBS Countdown Timer Plugin: installs Ashmanix or StreamTimer for a dockable timer panel inside OBS.
  4. Timer Browser Source: runs a timer in a separate browser tab and exposes it to OBS via URL. Best for Pomodoro streaming with session management.
  5. Subathon Timer (Event-Driven): a subscription-powered countdown that connects to your Twitch channel. Requires a third-party service.
  6. OBS Recording/Stream Timer: the built-in elapsed-time display in OBS itself (Stats dock), not a scene overlay, but worth knowing about if all you need is a reference for yourself and not your viewers.

Method 1: OBS Built-In Lua Script (Zero Downloads)

OBS Studio includes a countdown.lua script out of the box. No extra downloads. This is the fastest path to a working countdown timer in OBS.

Steps

  1. In OBS, add a Text (GDI+) source to your scene. Name it Countdown. Style the font, size, and color to match your overlay.
  2. Go to Tools → Scripts in the OBS menu bar.
  3. Click the + button at the bottom of the Scripts panel.
  4. Navigate to your OBS installation's scripts folder. On Windows, it is usually at C:\Program Files\obs-studio\data\obs-plugins\frontend-tools\scripts\. On macOS, look inside the OBS app bundle. Select countdown.lua.
  5. In the Scripts panel on the right, configure the Duration (in seconds), choose your Text Source from the dropdown, and optionally set a message to display when the countdown reaches zero.
  6. Use the Start / Stop / Reset buttons in the Scripts panel to control the timer.

Limitations

  • Countdown only: this script does not support count-up (stopwatch) mode. For count-up or speedrun timing, use Method 2.
  • No hotkeys: you control the timer from the Scripts panel, not from a keybind. Mid-stream control means switching to OBS.
  • No auto-reset between intervals: when it hits zero, it stops. You manually restart it for the next segment.

Best for: simple "stream starts in X minutes" pre-stream countdowns where you set it once and let it run.

Method 2: Stopwatch and Speedrun Timer in OBS

The built-in countdown.lua script cannot count up. If you searched "how to add a stopwatch to obs", "obs stopwatch", or "how to add a speedrun timer to obs", this is the method that actually gets you there.

The OBS community has built two widely used scripts that cover both:

  • Comprehensive Stopwatch & Countdown Timer: supports countdown, count-up, real-time inversion (switch direction mid-session), milliseconds, split times, and hotkeys for start/pause/reset. Available on the OBS Forums.
  • Advanced Timer (cg2121): supports countdown, count-up, specific-time mode (count to a clock time), streaming timer (shows elapsed recording/stream time), and recording timer mode. Available on GitHub.

Steps

  1. Download your chosen script from the OBS Forums or GitHub. It will be a .lua file.
  2. Add a Text (GDI+) source to your scene. Style it to match your overlay.
  3. Go to Tools → Scripts, click +, and load the downloaded .lua file.
  4. In the script settings panel, select your Text source from the dropdown. Set the mode to Stopwatch or Count Up instead of Countdown, then configure hotkeys in Settings → Hotkeys for mid-stream control without touching the Scripts panel.

Speedrun-specific setup

For speedrun timing, enable millisecond display in the script's settings and bind hotkeys for Start, Split, and Reset. This gives you precision timing plus split tracking without alt-tabbing out of your game, which is the whole reason speedrunners avoid the browser-source method for this specific use case, hotkeys need to work while OBS is not the focused window, and Lua scripts bound to OBS global hotkeys handle that correctly.

Pros and cons

  • Pros: Highly capable. Countdown, count-up, milliseconds, hotkeys, no external service required. Fully self-contained.
  • Cons: Script quality varies by author. Text appearance is limited to what OBS's Text source supports. No Pomodoro phase logic, it is a single timer, not a cycle manager.

Method 3: OBS Countdown Timer Plugin (Ashmanix, StreamTimer)

If you want a dedicated timer plugin inside OBS rather than the Scripts interface, two free options deliver this. This is the method for anyone searching "obs countdown plugin", "obs timer plugin", or "timer plugin obs."

Ashmanix Countdown Timer is the more actively maintained option. It adds a dockable panel to OBS with multiple independent timer instances, start/stop/reset controls, and an option to switch scenes or display a custom message when a timer reaches zero.

StreamTimer (by exeldro) adds a "StreamTimer Source" type that you add directly in the Sources panel like any other source, rather than a separate dock.

Steps (Ashmanix)

  1. Download the Ashmanix Countdown Timer plugin from the OBS Forum resources page. Follow the OS-specific install instructions.
  2. Restart OBS Studio.
  3. Find the new Countdown Timer dock panel. If it is not visible, go to Docks → Countdown Timer.
  4. Click Add Timer, set the duration, and configure what happens at zero (scene switch, display message, or nothing).
  5. Use the panel controls to start, pause, and reset without touching your scene.

Auto-reset behavior

Ashmanix does not auto-reset by default. When the timer reaches zero, it stops. You reset it manually or configure a scene switch. For automatic cycling (Pomodoro-style work/break rotation), a timer browser source like Focusdoro handles this better, it transitions between intervals automatically without any manual reset.

Pros and cons

  • Pros: Everything lives inside OBS. No external browser tab or service. Multiple independent timers. Scene-switch-on-zero is useful for "BRB" scene automation.
  • Cons: Plugin-dependent, if the maintainer stops updating it, you are on your own. Still requires switching to OBS to reset between segments. No Pomodoro cycling logic.

Timer Plugin vs Browser Source: Which One?

This is the question underneath most "obs timer plugin" and "timer browser source" searches, and it deserves a direct answer instead of "it depends."

FactorTimer Plugin (Ashmanix, StreamTimer)Browser Source Overlay
Runs inside OBSYes, no external tabNo, renders a URL via Browser Source
Requires internetNoYes, depends on the service being online
Requires install / restartYesNo, just paste a URL
Auto Pomodoro work/break cyclingNoYes (with services built for it, like Focusdoro)
Live task display on streamNoYes (with services that support it)
Control without touching OBSNo, use the dock panel in OBSYes, control from any browser tab
Works if the maintainer stops updating itFrozen at last install, may break on OBS updatesDepends on the service staying online

Use a timer plugin if you want something fully self-contained with no internet dependency, and you do not mind resetting it manually between segments. Use a browser source overlay if you want automatic cycling, task display, or control from a device other than the one running OBS. For structured Pomodoro sessions specifically, the browser source approach in Method 4 wins on every dimension except offline reliability.

Method 4: Timer Browser Source (Recommended for Pomodoro Streamers)

The most flexible approach for streamers running structured sessions: run a timer app in a browser tab and expose it to OBS as a Browser Source. You control the timer from your browser; OBS renders it as a transparent overlay. This is the setup behind most "timer for obs browser source" searches.

How it works

Apps like Focusdoro generate a unique overlay URL for your account. You paste that URL into OBS as a Browser Source. When you start, pause, or end a session in the app, the overlay on your stream updates in real time. No touching OBS between Pomodoro intervals.

Steps

  1. Sign up free at focusdoro.app.
  2. Copy your personal overlay URL from the header (the Overlay URL button). It looks like https://focusdoro.app/overlay/your-unique-token. This URL is persistent, set it up once per OBS scene.
  3. In OBS, add a new Browser Source in your scene.
  4. Paste your overlay URL into the URL field.
  5. Set Width to 1920 and Height to 1080 (or match your canvas resolution).
  6. In the Custom CSS field, paste:
body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; overflow: hidden; }

This CSS makes the overlay background transparent. Without it, OBS renders a white box behind your timer. Both the Custom CSS field and the Focusdoro Overlay Settings (Background: Transparent) need to be set for a fully clean result.

  1. Click OK. Your timer appears on the OBS canvas.
  2. Pick the corner and size in Focusdoro's overlay settings, roughly 15% of your canvas width is readable but non-intrusive. Changes apply live without touching OBS again.

For a full walkthrough with screenshots, see the OBS Pomodoro setup guide.

What a browser source overlay adds over a plugin or Lua script

  • Automatic work/break cycling. Focusdoro transitions from a 25-minute focus block to a 5-minute break and back without you resetting anything. A Lua script or plugin does not know what a Pomodoro is.
  • Task display on the overlay. Type your current task in Focusdoro and it appears below the timer on stream. Viewers know what you are working on.
  • No OBS interaction mid-stream. Start, pause, and skip phases from your browser. Your scene stays untouched.

For Twitch-specific setup, the Twitch Pomodoro overlay guide covers positioning, theme customization, and chat engagement patterns for this method. If you currently use StreamElements and are looking for Pomodoro break-cycle support it cannot provide, the StreamElements Pomodoro alternative guide walks through the difference and a 5-minute swap. If you want to compare every browser-source and countdown-widget option side by side, the Pomodoro timer for OBS comparison covers that.

Pros and cons

  • Pros: Timer control from a separate browser tab. Automatic Pomodoro cycling. Task display for viewers. Customizable appearance. Free tier includes full core feature set.
  • Cons: Requires an internet connection and an external account. Depends on the timer service being online. Not suitable for offline streaming.

Method 5: Subathon Timer (Event-Driven Countdown)

A subathon timer is a countdown that grows when viewers subscribe, donate bits, or send channel point redemptions. It is fundamentally different from a regular countdown timer. It requires a live connection to your Twitch channel events.

A regular OBS countdown timer, whether Lua-based, plugin-based, or browser-source, cannot serve as a subathon timer. It has no awareness of Twitch events.

How subathon timers work

Subathon services connect to the Twitch EventSub API (or PubSub). When a subscription comes in, the service adds a configured number of minutes (e.g., 5 minutes per Tier 1 sub) to the running countdown. The overlay URL you paste into OBS reflects this in real time.

Tools for OBS subathon timers

  • StreamElements Subathon Widget: available at widgets.streamelements.com. Configure time-per-event (subs by tier, bits, tips), copy the browser source URL, and paste it into OBS. Free with a StreamElements account.
  • Subathon Timer (subathontimer.com): standalone service, free for Twitch streamers. WebSocket-based updates. Supports pause, manual time adjustment, and milestone goals.
  • Streamer.bot Extension: for streamers already running Streamer.bot, the Subathon Countdown Timer extension integrates directly with your existing bot infrastructure.

Subathon timers are a distinct use case from Pomodoro timers. If you are running a subathon, this is the only method that actually works. If you want structured focus sessions on stream, the timer browser source in Method 4 is the right choice.

For a dedicated walkthrough of subathon timer setup, including time-per-event configuration, pause behavior, and running a Pomodoro overlay alongside a subathon timer, see the subathon timer for OBS guide.

Get your free OBS overlay

Sign up free and drop a live timer into OBS in 60 seconds.

Get your free OBS overlay

Does This Work in Streamlabs OBS?

Yes. Streamlabs is built on OBS Studio and supports Browser Sources with the same workflow.

  • Browser source overlays (Methods 4 and 5): Paste your timer URL into a Browser Source in Streamlabs exactly as you would in OBS Studio. The setup is identical.
  • Lua scripts (Methods 1 and 2): Streamlabs supports the OBS scripting interface, but the scripts folder location differs. Check your Streamlabs installation directory for the scripts path.
  • Plugins (Method 3): Streamlabs uses its own plugin system. OBS plugins do not install into Streamlabs directly. Check the Streamlabs plugin marketplace for equivalent timer plugins, or use a browser source overlay instead, it is fully compatible and requires no plugin install on either platform.

If you use Twitch Studio as your streaming software, it also supports Browser Sources. Paste your overlay URL and the timer will appear on your scene the same way.

Which Method Should You Use?

  • Simple "BRB, back in 5" countdown: Method 1 (OBS built-in Lua script) or Method 3 (Ashmanix plugin). Free, no signup, contained within OBS.
  • Stopwatch, count-up, or speedrun with millisecond precision: Method 2 (community Lua script). These support count-up with hotkeys and splits.
  • Dedicated in-OBS timer panel, no browser tab: Method 3 (timer plugin).
  • Subathon stream: Method 5. A regular countdown timer cannot do this.
  • Structured Pomodoro sessions (coding, art, study streams): Method 4 (timer browser source). Automatic work/break cycling, task display, control from your browser without touching OBS.
  • Completely offline or no external dependencies: Method 2 (community Lua script) or Method 3 (plugin). Everything runs inside OBS with no network requirement.

Test Your Timer Before You Go Live

A timer that breaks mid-stream is worse than no timer. Spend 3 minutes on this before you go live.

  • Start the timer in OBS preview. Enable Studio Mode (View → Studio Mode) and confirm the timer appears in the preview pane before the transition to live.
  • Check the transparency. White box behind the timer? Custom CSS is not applied. Go back to Browser Source properties and paste the CSS.
  • Verify it updates in real time. For browser source overlays, start a session in the app and confirm the OBS preview updates within 1 second. If it does not, right-click the source and click Refresh.
  • Test the scene switch (plugin methods only). If you configured a scene switch at zero, start a short 10-second test timer and confirm OBS transitions to the correct scene when it hits zero.
  • Multi-scene check. If you use the timer across multiple scenes (e.g., main scene and BRB scene), add the Browser Source or plugin timer to each scene separately. Sources in OBS are scene-specific by default.

Taking It Further: Timers with Pomodoro Logic

A plain countdown timer counts down. That is all it does. When it hits zero, you reset it manually and start again.

If you stream focused work, coding, art, writing, studying, you do not want to be resetting a timer every 25 minutes. You want a system that manages the full cycle: focus block, short break, focus block, long break after four rounds. That is what Pomodoro timers built for streaming do.

Focusdoro handles the full cycle automatically. When a work block ends, it transitions to the break timer. When the break ends, it queues the next work block. Your OBS overlay reflects each phase without you touching anything.

The overlay also shows your current task name so viewers know what you are working on. That detail changes how people engage with your stream. They can follow your progress across a full session, not just watch a number count down.

If you stream on Twitch and want the full setup walk-through including scene positioning and chat engagement patterns, see the Twitch Pomodoro overlay guide.

For study streams and lo-fi aesthetic setups, the study with me overlay guide covers overlay positioning, background scenes, and how to structure a "study with me" session for maximum watch time. If you are building a YouTube channel around study streams specifically, the YouTube study stream setup guide covers gear, recording workflow, and channel consistency from scratch.

For the full theory behind why the Pomodoro technique works for live streaming specifically, including session length decisions and break management, see the Pomodoro technique for streaming guide.

If you want a side-by-side comparison of every Pomodoro timer tool that works with OBS, the best Pomodoro timers for streamers guide covers that.

Try Focusdoro free

Join streamers who use Focusdoro to keep their audience engaged during focus sessions.

Start for free

Related guides

  • How to Set Up Focusdoro in OBS

    Step-by-step guide to adding a Pomodoro timer overlay to your OBS stream.

  • Study With Me Overlay for OBS: Pomodoro Timer Setup Guide

    Add a Pomodoro timer overlay to your study with me stream in OBS. Free browser source setup. Shows focus blocks, breaks, and your task.

  • Subathon Timer for OBS & Twitch: 3 Free Tools (2026)

    Add a subathon timer to OBS, Twitch, or Streamlabs with StreamElements, subathontimer.com, or Streamer.bot. Free setup, no plugin needed.

On this page

  • Countdown, Stopwatch, or Speedrun: Which Do You Need?
  • Six Ways to Add a Timer to OBS
  • Method 1: OBS Built-In Lua Script
  • Method 2: Stopwatch and Speedrun Timer
  • Method 3: OBS Countdown Timer Plugin
  • Timer Plugin vs Browser Source: Which One?
  • Method 4: Timer Browser Source
  • Method 5: Subathon Timer (Event-Driven)
  • Does This Work in Streamlabs OBS?
  • Which Method Should You Use?
  • Test Your Timer Before You Go Live
  • Taking It Further with Pomodoro
Follow usX / TwitterGitHub
Focusdoro on Product Hunt
© 2026 FocusdoroGuidesPrivacyTerms