The problem
Show timing lives in four different windows.
A clock on one screen, a countdown app on another, a stopwatch on somebody's phone, and the running time of the video currently on air known only by the person watching the OBS timeline. Every one of them is a separate window, none of them can be put on a screen the room can see, and none of them knows the others exist.
Add a second speaker with a second slot to time, and you are opening a second copy of the same app. Then the venue turns out to have no reliable internet, and half of those tools stop working.
The answer
One file. As many timers as the show has moments.
TOP! is a single standalone HTML file. Open it and you have a clock, a stopwatch, countdown timers and a live countdown of the media playing in OBS, laid out in a grid whose shape you set yourself. Clock, stopwatch and timers need no network at all.
Every card also exposes its own OBS browser source URL with a transparent background, so anything on screen can go on the programme output or on a comfort monitor without a capture card. Every function sits on a keyboard shortcut, which means full control from a Stream Deck or from Bitfocus Companion without touching the machine running the file.
Timers
One per moment, each with its own identity.
The NEW button adds a timer with a name, a colour and a starting duration. Every timer is fully independent: its own countdown, its own start, pause and reset, its own presets, its own sound switch and its own overtime. Starting one never touches another.
Colour is identity, not decoration. It outlines the card, marks the pip and the name, and stays on whether the timer is selected or not. The countdown itself keeps the green, amber and red state code, so urgency reads the same way on every card whatever colour you picked.
Click a card to select it and it lights up with an ARMED badge. Space, R and the arrow keys then act on that timer, and Tab cycles through them, so one Stream Deck drives any timer on screen. Every timer, including the first, can be renamed, recoloured, re-timed or removed, and they all come back with the next session.
Voice cues start off on a new timer. With several running, they would otherwise talk over each other.
The grid
Shape the screen the way the show is shaped.
Type the number of columns and rows you want, three by two, four by one, whatever the gallery needs. The layout applies immediately and is remembered. The rows share the height of the screen, so the whole surface fits with no scrolling: fewer rows means taller cards.
Every boundary between two tracks carries a splitter. Drag it to give one column or row more room at its neighbour's expense, double-click to even that axis out again. Proportions are remembered per grid shape, so your three by two layout and your two by two layout each keep their own.
Cards are moved by the grip handle in their title, and any card can swap with any other, timers and built-in cards alike. A grid too small for the cards on it is refused with an explanation rather than pushing something off screen, and a card too short for its content compacts what it shows instead of hiding it below the fold.
OBS integration
It knows what is on air.
Connected to OBS Studio over WebSocket v5, TOP! reads the media source currently playing and counts it down live, resolving nested scenes and groups. Auto mode finds the source on its own and ignores looping backdrops and anything off air. While nothing is playing the dial shows STAND BY in amber with the current scene name underneath, rather than a blank timer.
The Source Filter is a checkbox list grouped by scene that decides which sources Auto mode may ever consider, with switches to narrow it to audio files or video files only. Sources with no duration, images, generators, captures, are excluded on their own.
Host, port and password are remembered, the password only if you ask, and the connection comes back by itself after an OBS restart. When it cannot connect it says why: a missing password, a rejected one, or a page served over HTTPS that a browser will not let reach a remote OBS.
What is in it
The rest of the toolbox.
Fully offline
Clock, stopwatch and timers need no network whatsoever. Only the OBS card talks to anything, and only to OBS on your own machine or network.
Configurable grid
Set columns and rows, drag the splitter at any boundary, double-click to even an axis out. Proportions remembered per grid shape, and no track ever shrinks below a usable width.
Independent timers
Each with a name, a colour, a duration, its own presets, its own sound switch and its own overtime. All remembered between sessions.
Selected timer
A click arms a timer, a glow and a badge say which one. Space, R and the arrows act on it, Tab cycles, so one controller drives them all.
Drag to rearrange
Grab a card by its grip handle and drop it on another to swap them. Timers and built-in cards follow the same rule, and the order is remembered.
HIDE and SOLO
Collapse a card to its title bar, or blow one up to fill the page with F1 to F4. The same file serves the operator, the stage manager and the comfort monitor.
Browser source per card
A dedicated OBS URL for each tool and each timer, transparent background, ready to layer over the programme.
Stream Deck control
Every function on a keyboard shortcut, driveable from Stream Deck or Bitfocus Companion.
Voice countdowns
Spoken cues at 5, 2 and 1 minute, then 30, 20 and 10 seconds down to zero, on timers and on the OBS media countdown, with a master volume and a mute in the top bar.
Overtime
Past zero the count runs up in red with a blinking badge, because a show that is late needs to look late.
Works on a tablet
Press and hold a plus or minus to run the value up or down, and no accidental zoom when you tap twice. An iPad on the lectern is a usable control surface.
Survives locked-down browsers
A strict private window or blocked site data no longer leaves a blank page. Preferences simply are not remembered.
Free download
