Think you can beat chat?

Chat picks the challenges. You play them live. Every point counts, and the score carries over stream to stream

Start a new round

Chat sends ideas, you pick which go to a vote, and the winners make the lineup

33 Won32
19,0002,500
27 Won1
16,500
TG4/3Chat
RoundScoreResult
Oct 22 @ 7:30pm· 7 of 12 Won
34,250 – 3,500
Oct 20 @ 8:00pm· 6 of 6 Won
23,500 – 0
Oct 17 @ 6:45pm· 9 of 12 Won
5,000 – 2,250
Oct 15 @ 9:15pm· 6 of 9 Won
21,500 – 3,250
Oct 13 @ 3:00pm· 5 of 5 Won
0 – 3,000
Oct 10 @ 7:00pm· 5 of 5 Won
2,750 – 0
Oct 8 @ 8:30pm· 8 of 11 Won
2,000 – 4,500
RankTop challengersPointsWon
112,1409 / 14
221,8907 / 12
331,6556 / 11
41,4205 / 9
51,2755 / 8
61,1103 / 9
79804 / 7
88452 / 6
97203 / 5
106101 / 5

This is your control panel.You and your mods run the challenges and the scoreboard from right here.

Here's How It Works

  1. Deploy Challenge.Chat

    One click copies Challenge.Chat into your GitHub and deploys it to your Cloudflare account. It's your Worker, your database and your URL.

    • Runs on your Cloudflare account
    • Every score saved in your own database
    • Open source, so you can change any of it
    Deploy to Cloudflare
    • Copied to your GitHub
    • Worker deployed
    • D1 database created
    • Durable Objects ready
    challenge-chat.onepager.workers.devLive
  2. Create a Scoreboard

    Give it a name. Then pick Classic for scores that read like 3–2, or Arcade for big numbers and a bonus for a clean sweep.

    • Set what a win is worth
    • Points for the viewers who send challenges
    • Make as many boards as you want
    Board name
    Main Board
    ScoringClassic1 point a challenge, like 3–2Arcade100 points a challenge, like 500–300
  3. Connect Twitch

    Sign in with Twitch once. From then on, !challenge and !vote in chat go straight to your board.

    • Works with any game
    • One vote per viewer per challenge
    • Follows, subs and raids can pop up on stream
    @tgplayz connected4/4 EventSub listeners enabled

    birb_watch: !challenge clear the rail goofy

    nova_rx: !vote 2

    mossgirl: !vote 2

  4. Add It to OBS

    Pick one of nine themes in your channel's colours. Then copy the overlay link and add it to OBS as a browser source. It updates live while you play.

    • Nine themes, or make your own
    • One link for every scene
    • Show or hide any part of it
    ArenaCozy CornerComic Chaos+ 6 more
    Browser Source · Challenge.ChatURLhttps://challenge-chat.onepager.workers.dev/overlay?channel=demo-channelSize1920 × 1080
  5. LIVETonight's RoundTG vs Chat

    Chat Sends Ideas

    Open submissions and chat types !challenge with an idea. Ideas land in your panel and pop up on stream. Anything sent while you're closed waits in the inbox.

    On stream

Every Round Goes on the Record

Every challenge, every call and every point is saved, and every board gets a public page anyone can check. Each stream starts with a score to settle.

challenge-chat.onepager.workers.dev/c/demo-channel
3,500TG vs Chat2,250
  • Blindfolded BlitzOct 22 · 12 challenges4,250 – 3,500
  • Pistols at DawnOct 20 · 6 challenges3,500 – 0
  • Chat Picks Everything: The Extended Director's CutOct 17 · 12 challenges5,000 – 2,250
  • Platformer Pain RunOct 15 · 9 challenges1,500 – 3,250

Chat Plays for Points Too

Chat gets +100 when a challenge makes the round, and +100 more when you fail it. The Top Challengers board shows who keeps beating you, so you can shout them out.

On streamWin the next round using only pistolsfrom nova_rx
Made the round+100TG failed it+100nova_rx tonight+200
Top Challengers
  1. 11@nova_rxbeat TG 9 of 142,140
  2. 22@kodawanbeat TG 7 of 121,890
  3. 33@pixelbratbeat TG 6 of 111,655

A Board for Every Game

Each scoreboard keeps its own score, its own challengers and its own theme. Make one per game, one for an event, or one a brand puts a real prize on.

Battle Royale NightsArena themeLive now
TG3,500Chat2,25018 rounds · 64 challengers
No-Death RunDark Relic themeBack Tuesday
TG1,750Chat2,5009 rounds · 31 challengers
Sponsored
Brand Deal FridaysEsports Command themeFridays
TG1,250Chat1,500Prize: a new headset for the top challenger

It Looks Like Your Stream

Nine overlay themes in your channel's colours. Arena puts a TV score bug on screen. Cozy Corner puts up a handwritten to-do note.

Your colours
ArenaA TV score bug and a replay sting on every call
Cozy CornerPaper cards and a handwritten to-do note
Comic ChaosInked panels and POW-sized impact words

Plus Broadcast, Arcade Clash, Creator Neon, Esports Command, Fantasy Quest and Dark Relic.

Make Your Own With Codex

The overlay SDK, skills and docs ship in the repo. Tell Codex your style and it writes the theme: the look, the settings and new elements, all on the live score.

› make me a 90s VHS theme. camcorder REC timer in the corner, tracking glitch every time chat scores

  • Read the overlay SDK docs and the theme skill
  • Built on Broadcast with extendTheme
  • New element: Camcorder Timer, top corner
  • Glitch on every round.call chat wins
  • Tracking setting, 0–100%

VHS Tape is in Settings → Theme

Every theme reads the same hooks: the score, the clock, the lineup, the leaderboard and every moment worth animating.useRound()useChallenge()useBoard()useLeaderboard()useOverlayEvent()
src/overlay/themes/vhs/index.tsx
1import { useState } from 'react';2import {3  extendTheme, registerTheme, useChallenge, useOverlayEvent,4} from '@/overlay/sdk';5import { broadcast } from '@/overlay/themes';6import './vhs.css';7 8/** ● REC and the challenge clock, like a camcorder */9function RecTimer() {10  const { clock } = useChallenge();11  const [glitch, setGlitch] = useState(false);12  // Chat just took a challenge: roll the tracking13  useOverlayEvent('round.call', (e) =>14    setGlitch(e.winner === 'chat'),15  );16  return (17    <span className="rec" data-glitch={glitch || undefined}>18      ● REC {clock?.text}19    </span>20  );21}22 23export const vhs = extendTheme(broadcast, {24  id: 'vhs',25  name: 'VHS Tape',26  settings: {27    tracking: {28      type: 'number', label: 'Tracking',29      default: 40, min: 0, max: 100, unit: '%',30    },31  },32  elements: {33    rec: {34      label: 'Camcorder Timer', region: 'corner',35      on: true, Component: RecTimer,36    },37  },38});39 40registerTheme(vhs);

Yours to Run. Yours to Mod.

Challenge.Chat is open source and self-hosted. One click deploys it to your own Cloudflare account.

Twitch chat!challenge · !vote
Cloudflare WorkerAPI · auth · AI cleanup
Durable Objectvote · timers · score
D1every point, every session
OBS overlayWebSocket · any theme
One WorkerEvery live session gets its own Durable Object. It runs the vote, the timers and the score, and pushes every update to the overlay over WebSockets. Everything's saved in your own D1 database.
Mod Any PartThemes, elements, events, challenge rules: change any of it and the rest keeps working. Wire up your own in-game events with the built-in API and MCP.

Chat's waiting

Put it on your own Cloudflare account, connect Twitch and paste one link into OBSThen open submissions and find out who's better