Backchannel
Live chat and audience Q&A you can embed on any event page
A real-time chat and Q&A widget for live events and streams. Embed it on any event page with one script tag, pull in YouTube live chat, and moderate from one console. Running at live events since October 2022.
- Status
- Live
- In use since
- October 2022, now on v2.0
- Built for
- Event organizers, conference and webinar teams, churches, creators and agencies who stream live and want the conversation on their own page.
- Category
- Live event chat & Q&A

The problem
When you stream an event, the conversation happens wherever the video player puts it. On YouTube that means YouTube's chat, on YouTube's page. Your own event page, the one with your branding, schedule and sponsors, stays silent.
Embedding a chat sounds simple until you try it. Hosted chat tools want viewer accounts, a monthly plan per event, or a heavy iframe that fights your page's styles. Most of them can't show YouTube comments and on-site comments in the same room, so the audience ends up split in two.
We built Backchannel in October 2022, weeks before ChatGPT launched, for organizers who needed exactly this. It has run at live events and sat on other people's event pages ever since. Version 2.0 keeps the same embed and the same idea, with a leaner server underneath.
How it works
- 01
Embed it
Add one div and one script tag to your event page, or use an iframe. Set the title, accent colour, light or dark theme with attributes. The moderator console builds the embed code for you.
- 02
Viewers join
Viewers type a name and start chatting. No account, no sign-up, no app. They can mark a message as a question with a toggle, or by starting it with !q.
- 03
Bring YouTube in
Paste a stream link, video id, channel URL or @handle into the console. Comments from YouTube live chat appear in the same feed, labelled, next to messages from your page.
- 04
Run the room
Hosts sign in to the moderator console to delete messages, clear the chat and post with a Host badge. Anyone can filter to questions only, which turns the feed into a Q&A queue for the speaker.
What it does
- One script tag or an iframe, on any website or CMS
- Shadow DOM embed: your page's CSS can't break the chat, and the chat can't break your page
- YouTube live chat mirrored into the same feed
- Audience Q&A with a questions-only filter
- No viewer accounts or sign-up
- Moderator console: delete, clear, Host badge, YouTube connection, embed builder
- Read-only mode for stage screens and a transparent mode for OBS overlays
- Light, dark and auto themes with your own accent colour
- Chat history survives a server restart mid-event
- Self-hosted with Docker or pm2. No database, no Redis
How we built it
From three services to one process
The 2022 version ran Express, MongoDB and Redis. For a chat that lives for the length of an event, that was more moving parts than the job needed. Version 2.0 is one Node.js process: recent messages sit in an in-memory ring buffer, and every change is appended to a JSONL log on disk. On boot the log is replayed and compacted, and a half-written line from a crash is skipped. A restart in the middle of a keynote brings the chat back as it was.
One frame every 25 ms, not one per message
When a room gets busy, sending each message to each viewer the moment it arrives costs a serialisation and a socket write per message per viewer. Backchannel queues outgoing events and flushes them as one JSON array every 25 ms, so the server does one serialisation and one write per viewer per tick, however fast the chat moves. Viewer counts are pushed at most once every two seconds.
Slow phones don't slow the room
Venue wifi is unreliable. A viewer whose socket buffer passes 4 MB is dropped and reconnects with fresh history, so one stuck phone never holds up the broadcast. The server pings every 25 seconds to clear dead sockets, clients reconnect with random jitter so a hall full of phones doesn't hit the server at the same instant, and a client that hears nothing for too long forces its own reconnect.
Embed code from 2022 still works
The chat renders inside a shadow root with inherited styles reset, so it looks the same on a WordPress theme as on a hand-built page. When we rewrote it, we kept serving the original 2022 script path. Event pages that embedded Backchannel years ago picked up version 2.0 without anyone touching their HTML.
Abuse controls without accounts
With no sign-up, protection lives on the server. Each connection gets a token bucket rate limit, oversized frames are ignored, and the Host badge is set server-side, so viewers can't fake it. Links are only clickable in host messages. The moderator token is compared in constant time, and five wrong guesses close the connection.
YouTube can fail without taking the chat down
YouTube has no official API for reading live chat into another site, so the bridge reads the public chat and remembers the last 5,000 message ids so a reconnect never posts the same comment twice. If YouTube changes its markup, the bridge retries, then reports the error in the console. Chat on your page keeps running either way.
Backchannel: common questions
Can I add a live chat to my own event page instead of using YouTube's?
Yes. That is what Backchannel is for. Paste one script tag into your page and the chat appears inside it, styled to match your accent colour. You can still pull in comments from YouTube live chat so nobody's conversation is lost.
Do viewers need an account?
No. Viewers type a display name and start chatting. Rate limits, moderation and a server-set Host badge keep the room in order without sign-ups.
How long has Backchannel been in use?
The first version went live on 6 October 2022, before ChatGPT existed, and has been used at live events and embedded on event pages since then. Version 2.0, released in 2026, rebuilt the server on the same design and kept old embed code working.
Can I use it as an OBS overlay or on a stage screen?
Yes. Transparent mode removes the background for OBS browser sources, and read-only mode hides the message box for screens in the venue. Both are one option on the embed.
Where does Backchannel run?
On your own server, as a single Docker container or a pm2 process behind nginx. There is no database or Redis to manage, and your chat log stays on your disk.
Does it work with Twitch, Vimeo or Zoom?
Backchannel works next to any video player, because it lives on your page rather than inside the player. The built-in bridge mirrors YouTube live chat. Bridges for other platforms can be built on request.