Welcome to TourKOAL (Tournament Knowledge and Overlay Assistant for Livestreams)!

The goal of this tool is to easily compile player and team information such that it can be quickly displayed on the fly during Pokémon tournament matches, helping you build a professional-quality overlay in OBS for your broadcast with as little manual work as possible.

No longer will you need to scramble through hundreds of image files by hand as players reveal which of their Pokémon they brought to the game, nor will you need to manually adjust OBS sources when items are consumed or Pokémon faint! You can even automatically track and update player pairings and standings to display on stream!

The tool runs entirely in the browser as well, making it very portable and easy to run on venue stream setups without needing to download or install any additional software.

Getting Started
  1. Make sure that your OBS WebSocket Server is Enabled (accessed via Tools → WebSocket Server Settings).
    • For OBS Versions 28.0.0 and above, OBS WebSocket Server is built-in.
    • For older OBS Versions, you can download a plugin.
  2. Connect to OBS.
  3. Pick sources in your OBS scene to output to (Pokémon icons are Browser sources, almost everything else is a Text source).
  4. Enter player data in the table at the bottom of the page, or import your tournament roster from a TOM file.
  5. You're all set! Pick your players from the dropdown and easily display information about their team!
    • Optional: You can also display pairings and standings in real-time, either by entering the data manually, or by tracking TOM files.
IMPORTANT!
Your privacy, and the privacy of your players, is extremely important! As such, this tool runs entirely within the user's browser. No data, be it manually entered or imported from TOM reports, is being collected or sent to a remote server.

Please be sure to obtain express permission from your players before featuring them and/or their names on stream!
...

You can select which players are currently battling, and then easily select which Pokémon they reveal, as they reveal them. You can also display the Pokémon's condition, as well as its held item and the item's condition.

IMPORTANT!
The Pokémon icons are Browser sources, and you can style them with Custom CSS in OBS!
All other pieces of data are Text sources in OBS!
Total Pokémon per team: 4

Player #1

0
(jump to table)

Player #2

0
(jump to table)

You can either select a TOM ...pairings.html file to display a live set of player pairings that will be automatically updated any time you generate a Pairings Report in TOM, or you can update them by hand here.

IMPORTANT!
In order for players to be displayed in the pairings, they must already be registered in the player table below.
Live file tracking is only availble in some browsers.
(These will be in your TOM/data/reports directory!)
Total pairings displayed: 8
(Optional, useful for a ticker/marquee element.)

You can either select a TOM ...standings.html file to display a live set of tournament standings that will be automatically updated any time you generate a Standings Report in TOM, or you can update them by hand here.

IMPORTANT!
In order for players to be displayed in the standings, they must already be registered in the player table below.
Live file tracking is only availble in some browsers.
(These will be in your TOM/data/reports directory!)
Total standings displayed: 8
(Optional, useful for a ticker/marquee element.)

You can get dynamically-generated usage statistics about the teams entered into the Players and Teams table below.

IMPORTANT!
The Pokémon Usage Statistics display is a Browser source, and you can style it with Custom CSS in OBS!
Top Mons displayed: 8
Non-Restricted Mon Usage Statistics
Restricted Mon Usage Statistics

You can either import a complete player list from a TOM ...roster.html file, or you can add player records by hand in the table below.

(These will be in your TOM/data/reports directory!)
Abbreviate names on import (ex. 'Ash Ketchum' → 'Ash K.') for...
Total players: 0 (Filter matches: 0)
Player Name
Mon #1
Mon #2
Mon #3
Mon #4
Mon #5
Mon #6