Logo

TWITCH SUBATHON

A fully customizable and fully featured Subathon extension:

• Easy Customization with a Settings UI
• Supports subs, bits, donations, follows, charity, follows, raids, channel- and loyalty points.
• Custom text rotators with current contribution counts
• Custom defineable goals
• Extremely secure with automatic backups in case anything goes wrong • Enough with the yapping, check it out already!

happie

TWITCH SUBATHON – tawmae Cover Image
This extension requires a .dll file (TawmaeUI.dll) to run. You will be asked to have it automatically downloaded from my GitHub Repository to your Streamer.bot directory when you open the Settings UI, but you can also manually download it here. You can use tools like JetBrains dotPeek to inspect the file’s content.
BROWSER SOURCE URL
https://tawmae.xyz/overlays/twitch-subathon
ACTION IMPORT
Loading...
Never import actions from untrusted sources. Want to know what you are importing? Paste the import code in here (Decoder made by TakeJoshyy).
SETUP

1. Copy the Action Import text from above into your clipboard.

2. In Streamer.bot, click the Import button at the top of the window. Paste the text into the Import String section and press Import at the bottom.

3. Now head to the Commands tab and look for the imported commands. Then rightclick the group and select Group -> Enable All.

4. In the [TWITCH SUBATHON] #0 - Settings action, rightclick the Test trigger and hit Test Trigger to open the Settings UI once. This makes sure that the .dll file has been downloaded and is up to date.

If you don't have my .dll in your Streamer.bot directory already, it will ask you to automatically download it. If you wish to manually place it there, you can to that here.

5. Go into the Servers/Clients -> WebSocket Server tab. Check Auto Start WebSocket Server, leave Address at 127.0.0.1 and the Port at 8080. You can set a password if you want, just make sure to leave Enforce All Requests unchecked. Start the server.

Here you can check in real-time if your Websocket server is up and running:

6. Copy the Browser Source URL from above into your clipboard.

7. In OBS, create a new Browser Source, name it whatever you want. Then paste the copied URL into URL and preferably set the Width and Height to your OBS canvas size. You can make the widget bigger in the Settings UI instead of scaling it and making it blurry.

And then you're done! And since it came up a lot: for donations to contribute, you need to connect the donation platform of your choice with Streamer.bot (Kofi, Streamelements, Fourthwall etc). Once it's connected to Streamer.bot, the Subathon widget will pick donations up automatically.
Pog Clap
Important Note: If you want to have the browser source in multiple scenes, don’t create a second browser source. This can and will cause errors. Instead, use nested scenes or source clones.

COMMANDS

!subathonStart

Start the subathon.

!subathonPause

Pause the subathon timer.

!subathonUnpause

Resume the subathon timer.

!subathonAddTime [Duration]

Manually add time (e.g., 30, 5m, 1h).

!subathonRemoveTime [Duration]

Manually remove time from the timer.

!subathonAddEvent [Event] [Amount]

Manually increase event counts (subs, bits, etc.).

Examples:
!subathonAddEvent prime 1 → +1 Prime Sub
!subathonAddEvent sub 3 → +3 Tier 1 Subs
!subathonAddEvent t2 1 → +1 Tier 2 Sub
!subathonAddEvent t3 2 → +2 Tier 3 Subs
!subathonAddEvent bits 500 → +500 Bits
!subathonAddEvent donations 5 → +$5.00 donation equivalent
!subathonAddEvent follow 1 → +1 Follow
!subathonAddEvent cpr 1 → +1 Channel Point Redeem (whitelisted reward)
!subathonAddEvent raid 35 → Raid counted with 35 viewers
!subathonAddEvent lp 1000 → +1000 Loyalty Points contributed

!subathonRemoveEvent [Event] [Amount]

Manually decrease event counts when correcting mistakes.

Examples:
!subathonRemoveEvent prime 1 → -1 Prime Sub
!subathonRemoveEvent sub 2 → -2 Tier 1 Subs
!subathonRemoveEvent t2 1 → -1 Tier 2 Sub
!subathonRemoveEvent t3 1 → -1 Tier 3 Sub
!subathonRemoveEvent bits 500 → Remove 500 Bits worth of time
!subathonRemoveEvent donations 3 → Remove $3.00 donation equivalent
!subathonRemoveEvent follow 1 → Remove 1 Follow contribution
!subathonRemoveEvent cpr 1 → Remove 1 Channel Point Redeem contribution
!subathonRemoveEvent raid 20 → Remove raid counted as 20 viewers
!subathonRemoveEvent lp 1000 → Remove 1000 Loyalty Points contribution

!subathonContributePoints [Amount]

Spend Loyalty Points to add time.

SETTINGS UI

The Settings UI allows for some (HUGE) customization.



The General Settings allow to set the starting time, the visible time format as well as your currency for donations.

The 'Added Time' tab lets you define which Twitch events are included to contributing time and how many seconds they add.

'Appearance' allows to change.. well.. the appearance. Crazy, right? Font, color, shape, icons and images. Have fun!

The 'Rotator' tab allows you to define the rotator box (the one between countdown and goals). It displays the current event counts and allows you to add some neat custom texts to rotate through!

In 'Goals' you can define your goals (if you want any). Goals are tied to their events (all sub tiers combine to just 'subs'). If you want a general goal, you can choose 'No Icon'. All event-tied ones auto complete once the goal is reached.

Here you can edit some (or most) of the texts that are on the overlay :)

Chat Responses, as usual. Mostly error responses, but feel free to edit all of these too! And also as always: a single hyphen to skip the message entirely.

The Advanced tab has some serious gourmet shit in there. But I'd suggest to leave the toggle switches as they are. The most important part here are the backups, in case you ever want to go back because you messed up (definitely not me!)

CUSTOM TRIGGERS

Under Custom → TWITCH SUBATHON you will find triggers that fire when goals are reached, the subathon completes, or when it is ended manually.


Goal Completed

Fires when a Subathon Goal reaches its target.

Available variables:

  • goalName (string) — name of the completed goal
  • goalCount (number) — amount reached
  • goalType (string) — category of the goal


Subathon Finished

Fires once when the planned total time runs out.

Available variables:

  • isActive (bool)
  • timezone (string)
  • startedAt_Unix (number)
  • endedAt_Unix (number)
  • startedAt_local (string)
  • endedAt_local (string)
  • baseSeconds (number)
  • addedSecondsTotal (number)
  • plannedTotalSeconds (number)
  • elapsedSeconds (number)
  • pauseCount (number)
  • pauseTotalSeconds (number)
  • subs, primesubs, t1subs, t2subs, t3subs
  • bits, donations, follows, raids, channelPoints, loyaltyPoints
  • secondsAdded_… — total seconds contributed per event type


Subathon Ended Manually

Fires when the broadcaster ends the Subathon using !subathonEnd.

Available variables:

  • user (string) — user who ended it
  • startedAt_local (string)
  • endedAt_local (string)
  • elapsedFormatted (string) — total runtime
  • addedFormatted (string) — total time gained



FAQ & EXAMPLES

Does the time stop when the overlay is not active?

No, the time is handled purely by Streamer.bot. The overlay just adapts to the data that Streamer.bot provides. If you want to pause it, make sure to actually use the pause action in Streamer.bot. For automatic safety pauses, see below.

Does the Subathon timer automatically pause when I stop streaming?

Yes, if "Only Add Time When Live" is enabled (which it is by default). This famously called 'Safety Pause' pauses your Subathon for you, if you either close Streamer.bot or your stream goes offline. It will not auto-resume though, so remember to unpause :)

Can I restore progress if something breaks?

Yes. Automatic backups are created regularly every 15 minutes while the Subathon is active and if you end the Subathon manually, if(!!) Backups are enabled (whjich they are by default). Backups are saved locally to your Streamer.bot directory into cute little textfiles :3

To restore:
1. Open the Settings UI and head into the Advanced tab.
2. Scrolldown, select a backup file.
3. Click the button on the left to restore from that point.

This will fully restore timer state and event counts.

Also all events are tracked for each day, regardless of whether you enabled them for the subathon or not. So there is always a backup of the backup to see how many subs, follows, donations etc you got in for the day. So you are always able to re-add them back to the timer, in case anything goes wrong.

Are goals like donations bits, channel points and loyalty points added proportionally?

Yes. So if 1000 loyalty points add 100 seconds and someone contributes 500, it'll add 50 seconds. Unless you have a minimum amount set.

What if an Indian donates 100.000 Iranian Rial? Won't it break EVERYTHING?

CHILLLLL. Donations are automatically converted into your selected currency. So if an Iranian decides to donate 100.000 Rial, it'll add 2 dollars to your count.

CHANGELOG
Date Changes Version
November 06, 2025 Fixed safety-pause when exiting Streamer.bot; added event tracking to at least have a list to check for the amount of events one received, so you'd be able to add manually if all goes wrong 0.0.3
November 06, 2025 Beta: Added option to add time for raids based on the raided viewercount 0.0.2
November 06, 2025 Beta 0.0.1