Overview
The WTP widget is a free Twitch overlay that brings the classic "Who's That Pokémon?" guessing game to your stream. A hidden Pokémon silhouette appears on screen, your viewers guess the name in chat, and whoever gets it first captures it for their personal Pokédex.
The widget is a browser source. You paste one URL into OBS and it handles everything else automatically. No extra bot account setup, no Twitch API keys for viewers, no complicated configuration required.
Pokémon from generations 1–5 (#1–649, Kanto through Unova) are supported. All captures are tracked per viewer per channel, visible on a public Pokédex page anyone can browse.
How It Works
The full game loop from spawn to next round.
A Pokémon spawns
After the configured delay, a Pokéball throw animation plays and a silhouette of a random Pokémon appears. The Pokémon's identity is hidden until someone guesses correctly or time runs out.
Viewers guess in chat
Viewers type the Pokémon's name directly in chat, no command prefix needed. Every message is checked against all known names for that Pokémon across 11 languages.
First correct guess wins
The moment a correct name is detected, the silhouette is revealed, the Pokémon's cry plays, and the capture is recorded to that viewer's Pokédex on your channel. The bot announces the capture in chat.
Next round begins
After a short reveal window, the widget resets and waits a random delay (within your configured min/max) before spawning the next Pokémon. If nobody guesses within the auto give-up time, the Pokémon is revealed automatically and the round ends.
Pokémon & Rarities
Every spawn is a random roll across three rarity tiers, weighted to make legendary and mythical Pokémon genuinely rare.
All regular Pokémon across the enabled generations. The last 50 spawned are temporarily excluded to avoid repeats.
Legendary birds, beasts, golems, lake guardians, creation trio, swords of justice, forces of nature, and more.
Mew, Celebi, Jirachi, Deoxys, Phione, Manaphy, Darkrai, Shaymin, Arceus, Victini, Keldeo, Meloetta, Genesect.
Generation sizes
Shiny Pokémon
Any spawned Pokémon has a 1 in 4096 chance of being shiny, the same odds as the main series games.
Shiny Pokémon display an alternate colour palette on the widget. The silhouette phase looks identical to a normal spawn, so the shiny reveal only happens once someone guesses correctly, making it a surprise for the whole chat.
Shiny captures are tracked separately in the Pokédex and the capture message in chat will note it: "@user captured their first shiny Charizard (#6)!"
Shiny status does not affect spawn rates or rarity tier. A shiny Mewtwo is still a legendary roll first, shiny second.
Name Matching
The widget recognises Pokémon names across 11 languages and uses a flexible matching system so viewers don't need to type perfectly.
Matching is case-insensitive: bulbasaur, Bulbasaur, and BULBASAUR all count.
The characters ? and @ are stripped from messages before checking, so viewers can type
"Bulbasaur?" or "@Bulbasaur" without issue.
The check is substring-based, meaning the name just needs to appear somewhere in the message. A viewer saying "I think it's Bulbasaur!" will still count as a correct guess.
Supported languages
Names from all 11 official Pokémon languages are accepted: English, Japanese (Romaji & Kana), French, German, Spanish, Italian, Korean, Traditional Chinese, and Simplified Chinese. International viewers can guess in whichever language they know best.
How to Play
Playing is as simple as watching the stream and typing in chat. No account, no signup, no commands to learn.
Watch for the silhouette
When a Pokéball throw animation plays on the stream overlay, a Pokémon silhouette will appear. That's your cue to start guessing.
Type the name in chat
Just type the Pokémon's name directly. No prefix like ! needed.
You can guess in English or any other supported language. Don't worry about capitalisation.
First correct guess captures it
The first viewer with a correct name in their message wins the round. The Pokémon is revealed, the bot announces the catch in chat, and it's added to your Pokédex on this channel.
Your Pokédex
Every Pokémon you capture is recorded in your personal Pokédex for that channel. Pokédexes are per-channel. Your catches on one streamer's channel are tracked separately from another's.
You can view your Pokédex (and anyone else's) on the channel's public page:
wtp.sillysoon.de/{channelName}/{yourName}
The channel overview at wtp.sillysoon.de/{channelName} shows all viewers who have caught
at least one Pokémon on that channel, along with their most recent catch.
Shiny captures appear distinctly in your Pokédex, so you can show off the rare ones.
Chat Commands
Commands you can use directly in Twitch chat.
!pokedex
Triggers the bot to post a summary of your Pokédex in chat: your capture count and a link to your full Pokédex page. Pass another viewer's name to look up theirs instead.
!pokedex → your own Pokédex summary
!pokedex SomeViewer → SomeViewer's Pokédex summary
Capture message examples
When a Pokémon is caught, the bot automatically posts one of the following messages depending on the context:
@user captured the channel's first shiny Mew (#151)!
@user captured their first Charizard (#6)!
@user captured their 3rd Bulbasaur (#1)!
Account Linking
Captures are tracked by username even before you log in. Linking connects those captures to your account.
You don't need an account to play. Captures are recorded under your Twitch username the moment you catch a Pokémon. When you log into the WTP Dashboard for the first time, the site checks for any captures stored under your username that aren't tied to your account yet and offers to link them. Once linked, your captures are associated with your account rather than just a name string, so your data is preserved going forward.
Widget Setup
Create your widget and get your personal URL in a few clicks.
Log in with Twitch
Go to the Dashboard and sign in with your Twitch account. This ties your widget to your channel. Captures on your stream are stored under your channel name.
Create a widget
Click "+ Create Widget" on the dashboard. You can have up to 3 widgets per account, each with its own independent settings.
Configure (optional)
Click "Configure" to customise spawn timing, enabled generations, display mode, and more. See Widget Settings for the full reference.
Copy your URL
Click "Copy URL". This copies your unique widget link to the clipboard. Keep this URL private. It is tied to your account and authorises widget captures on your channel.
Adding to OBS
The widget works as a browser source in OBS Studio, Streamlabs, StreamElements, XSplit, or any software that supports browser sources.
Add a Browser Source
In OBS, click the + button in the Sources panel and select Browser.
Paste your widget URL
Paste the URL copied from the dashboard into the URL field.
Set the size
Set width and height to 300 × 300 px. The widget scales to its container, so feel free to adjust, just keep it square to avoid distortion.
Position on your scene
Drag the source to wherever you want it on your layout. The background is transparent, so it composites cleanly over any scene.
Audio note
If Play Pokémon Sound is enabled, the cry plays through the browser source. For it to be audible on stream, make sure OBS is set to capture audio from browser sources (check Settings → Audio → Browser Source or enable audio in the source properties).
Widget Settings
Open the configurator from the Dashboard by clicking "Configure" on any widget. Changes are saved immediately and take effect on the next widget reload.
Appearance
Animated uses a GIF sprite with subtle movement. More lively, slightly larger file size.
Static uses a PNG sprite. Cleaner, lower bandwidth, and better for streams with slower connections.
Animated
Static
Filter which generations can spawn. Deselecting a generation removes all Pokémon from that region from the spawn pool entirely. Useful if you want a themed stream (e.g. only Gen 1 for a Kanto playthrough) or if your chat is less familiar with newer generations.
Spawn Timing
Minimum delay in seconds before the next Pokémon spawns after a round ends.
Maximum delay in seconds. The actual delay is a random value between min and max. A wide range keeps spawns feeling unpredictable; a narrow range gives a more consistent pace.
If nobody guesses correctly within this many seconds, the widget automatically reveals the Pokémon and moves on. Lower values keep the game moving on active streams; higher values give harder Pokémon more time to be solved.
Chat & Notifications
When enabled, the bot posts a message in your Twitch chat announcing who caught the Pokémon and which one it was. Disable this if you prefer a silent widget or already use another bot for announcements.
When enabled, the Pokémon's cry plays through the browser source at the moment it's caught. Requires OBS to capture browser source audio to be heard on stream. Disable if you don't want extra sound effects.
Channel Pokédex
Every channel with at least one capture gets a public Pokédex page your community can browse.
The channel overview at wtp.sillysoon.de/{yourChannel} lists all viewers who have caught
a Pokémon on your channel, showing their display name and most recent catch. Viewers can click through
to their individual Pokédex at wtp.sillysoon.de/{yourChannel}/{viewerName}.
Share this page with your community so viewers can compare their Pokédexes, track who has the rarest catches, or try to complete their collection across your streams.
The page is fully public. No login required to view it. Only capturing requires the widget to be running on your stream.
Managing Widgets
You can have up to 3 widgets per account, each with independent settings.
Multiple widgets are useful if you run different types of streams. For example, one widget configured with only Gen 1 for a Kanto playthrough, and another with all generations for casual streams. All widgets capture to the same channel Pokédex regardless of which one is active.
To delete a widget, click "Delete" on the dashboard. This removes the widget and invalidates its URL. If the browser source is still running in OBS with that URL, it will stop working. Captures already recorded are not affected.
The widget URL does not change when you update settings, so you never need to update OBS after configuring. Just save settings and refresh the browser source between rounds if needed.
The Chat Bot
The bot that sends capture messages in your chat requires no setup. It is shared infrastructure that connects automatically.
The widget itself reads chat anonymously, meaning it doesn't need any Twitch credentials from you or your viewers. It connects to your channel's chat as a guest reader and monitors messages in real time.
When a capture happens, a separate bot account joins your channel, posts the capture message, and immediately leaves. It does not stay in your channel between captures. This means it won't appear in your viewer list.
The bot respects the Send Capture Message setting. If that's disabled, the bot never joins your channel at all. If you don't want bot messages in chat, simply toggle that setting off in the widget configurator.
FAQ
My widget shows a blank screen.
Make sure the URL contains both uuidToken and channel parameters. Copying via
the Dashboard button ensures both are included. Also confirm the channel name in the URL matches your
Twitch username exactly. If you deleted and recreated the widget, update the URL in OBS.
Chat guesses are not being detected.
The widget connects to chat using the channel parameter in your URL. Confirm it matches
the channel where you're streaming. Guessing is case-insensitive and the name just needs to appear
somewhere in the message. If the widget was reloaded mid-round, the current Pokémon may have reset.
The bot isn't posting capture messages.
Check that Send Capture Message is enabled in your widget settings. Also make sure your channel doesn't have a followers-only or subscribers-only chat mode that would block the bot from posting.
Can I use the widget on someone else's channel?
The widget URL is tied to your Twitch account and is intended for use on your own channel. Captures are always recorded to your channel's Pokédex regardless of where the URL is loaded.
How do I update settings without breaking the stream?
Save settings from the Dashboard. The widget URL stays the same. Changes apply on the next browser source reload. You can right-click the browser source in OBS and select Refresh between rounds without disrupting a live round.
I played before creating an account? Where are my captures?
They're stored under your Twitch username. Log into the Dashboard and you'll be prompted to link any unattached captures found under your current username.
Still stuck?
Join the Discord server and ask in the support channel.