Free, open-source streaming widgets and tools for Twitch and Kick. Configure and embed overlays into OBS, Streamlabs, or any browser-source-ready software in seconds. No account required.
Senchabot Extensions provides free streaming widgets and tools for Twitch and Kick streamers. Each tool runs as a browser source overlay that you can add to OBS, Streamlabs, or XSplit in seconds.
- Sub Sprout — A visual plant widget that grows with each subscription, resub, or gift sub. Resets after reaching full growth.
- Universal Chat — A chat merge tool that combines Twitch and Kick chat into a single on-screen overlay with emotes, badges, and platform indicators.
- Raffle — A chat-based giveaway tool. Viewers type a keyword to enter; winners are drawn and announced on an overlay with confetti.
- extensions.senchabot.com — Widget and tool hub
- Sub Sprout
- Universal Chat
- Raffle
A visual SVG plant widget that grows in stages whenever a subscription event occurs.
How it works:
- Listens to Twitch subs/resubs/gift subs via ComfyJS.
- Also connects to Kick's Pusher WebSocket for subscription events.
- Has 5 growth stages (0–4). Each sub advances it by one.
- Once it hits stage 4, the next sub resets it to the seedling stage, creating a looping animation.
- Mods and the broadcaster can type
!growin Twitch chat to manually advance the plant.
Setup:
- Go to
/setup/sub-growing-plant. - Enter your channel name and select the platform (Twitch or Kick).
- Copy the generated widget/tool URL.
- Paste it into OBS, Streamlabs, or XSplit as a Browser Source.
A chat merge tool that combines Twitch and Kick chat into a single, cohesive on-screen overlay. Designed for streamers who multistream to both platforms.
How it works:
- Connects to Twitch IRC anonymously and Kick's Pusher WebSocket.
- Parses emotes, badges, and platform indicators for both services.
- Supports configurable font size, background opacity, and vertical/horizontal layout.
- Messages auto-fade after 30 seconds.
Setup:
- Go to
/setup/chat-widget. - Enter your Twitch channel and/or Kick channel.
- Customize font size, background, opacity, and orientation.
- Copy the generated URL into OBS as a Browser Source.
A chat-based giveaway tool and raffle widget with an OBS overlay for winner announcements.
How it works:
- Monitors Twitch IRC or Kick Pusher for messages matching your configured keyword (default
!join). - Validates entry rules: sub-only mode, minimum sub months, max wins per user.
- When you draw a winner, a random participant is selected and broadcast to the overlay with
canvas-confettifireworks. - The overlay shows the winner's name for 10 seconds, then hides.
- State persists in
localStorageso you don't lose entries on refresh.
Setup:
- Go to
/setup/raffle. - Configure platform, channel, entry keyword, and restrictions.
- Click Start Raffle to collect entries from chat.
- Add
/widgets/raffle-overlayto OBS as a Browser Source (usually centered or full-screen). - Click Draw Winner when ready.
npm install
npm run devThe dev server runs on port 3000 by default.
npm run buildThis project uses Vitest:
npm run testThis project uses Biome:
npm run lint
npm run format
npm run checkDeploy to Cloudflare Workers:
npm run deploy.
├── src/routes/
│ ├── index.tsx # Widget and tool hub landing page
│ ├── setup/
│ │ ├── sub-growing-plant.tsx # Sub Sprout configuration
│ │ ├── chat-widget.tsx # Universal Chat configuration
│ │ └── raffle.tsx # Raffle configuration
│ └── widgets/
│ ├── sub-sprout-widget.tsx # Sub Sprout overlay
│ ├── chat-widget.tsx # Universal Chat overlay
│ └── raffle-overlay.tsx # Raffle winner overlay
├── src/features/widgets/ # Widget and tool logic and components
├── src/hooks/ # Shared hooks (raffle state, chat connections)
├── src/styles.css # Tailwind CSS entry
└── vite.config.ts # Vite + TanStack Router config
This project uses TanStack Router with file-based routing. Routes are auto-generated from files in src/routes/.
See CONTRIBUTING.md.