WebSpeak — Self-hosted TeamSpeak Web Client & Browser Gateway

GitHub:
https://github.com/EchoSixHIYA/WebSpeak-client-for-TeamSpeak

Live Demo:
https://webspeak.online

Hey everyone,

I’ve been working on a project called WebSpeak for the past few months, and I thought it was finally ready to share with the TeamSpeak community.

WebSpeak is a self-hosted browser client and voice gateway for TeamSpeak 3 and TeamSpeak 6.

The original idea was very simple:

I wanted an easier way for friends, newcomers, and temporary guests to join an existing TeamSpeak server.

For regular TeamSpeak users, the desktop client is still the natural choice.

But sometimes you just want to send someone a link and let them join a voice channel immediately — especially for new community members, temporary guests, game sessions, or events.

With WebSpeak, you deploy the gateway once and then share a web address.

Open the page → enter a nickname → join → talk.

No additional setup is required on the guest side.


What is WebSpeak?

WebSpeak connects browser users to an existing TeamSpeak server.

Each browser session gets its own TeamSpeak client connection, so the TeamSpeak server continues to handle channels, identities, groups, and permissions normally.

The goal is not to replace the traditional TeamSpeak experience.

Instead, WebSpeak provides an additional, lightweight way to access an existing TeamSpeak community from a modern browser.

The main design goal is:

Make it easy to invite someone into TeamSpeak.


Features

WebSpeak currently supports:

  • TeamSpeak 3 and TeamSpeak 6

  • Automatic TS3 / TS6 protocol detection

  • Full channel and member tree

  • Channel switching

  • Opus voice communication

  • Voice Activation

  • Microphone and output-device selection

  • Individual member volume controls

  • Channel messages

  • Server messages

  • Private messages

  • Poke

  • Multi-target Whisper

  • Persistent TeamSpeak identities in the browser

  • Mobile and desktop responsive UI

  • Light and dark themes

  • Chinese, English and German interfaces

There is also an optional built-in WebRTC transport for low-latency browser audio.

If WebRTC cannot be used, WebSpeak can automatically fall back to the compatible transport.


Browser-native features

Since WebSpeak runs in the browser, I’ve also been experimenting with features that make sense specifically in a web-based voice environment.

One example is Accompaniment Sharing.

On desktop browsers, a user can select a window or browser tab containing audio and share that audio directly into the current TeamSpeak voice channel.

This can be useful for music, game audio, background audio, or other shared listening scenarios.

No virtual audio cable is required.


Administration

WebSpeak includes its own web administration console.

After deployment, normal configuration can be completed directly from the browser.

The admin console currently includes:

  • Default TeamSpeak target

  • Fixed-server or open-gateway access mode

  • WebRTC configuration

  • Managed invitation links

  • Active sessions

  • Connection history

  • Logs

  • Diagnostics

  • Database backup

  • Relay configuration

Managed invitation links can expire, have limited uses, and be revoked.

This makes it possible to create temporary access links for friends, new members, or events without exposing the TeamSpeak server password in the URL.


Relay / regional connectivity

WebSpeak also includes an optional UDP relay.

This is mainly intended for deployments where the WebSpeak gateway and the target TeamSpeak server have poor connectivity between regions, or where a more suitable network path is available through another node.

The relay only forwards TeamSpeak traffic used by WebSpeak sessions.

It is not intended to be a general-purpose VPN or proxy.


Setup

Docker Compose is the recommended deployment method.

git clone --depth 1 https://github.com/EchoSixHIYA/WebSpeak-client-for-TeamSpeak.git
cd WebSpeak-client-for-TeamSpeak

docker compose pull
docker compose up -d

Then open:

http://your-server:3040/admin

Complete the initial setup in the browser, and WebSpeak is ready to use.

Prebuilt Windows x64 and Linux x64 packages are also available for users who prefer not to deploy with Docker.

For public deployments, HTTPS is strongly recommended and is required for reliable browser microphone and window-audio permissions.


Live Demo

The public instance is currently hosted in Hong Kong, so latency from Europe may not represent the performance of a locally deployed WebSpeak instance.


WebSpeak is open source under the AGPL-3.0 license.

The project started as a small way to make it easier for friends to join my TeamSpeak server.

It has grown quite a lot since then, but the basic idea is still the same:

Share a link, join the server, and start talking.

Feedback, bug reports, and feature ideas are very welcome.

I’d especially love to hear from other TeamSpeak server owners. If you try WebSpeak with your own community, let me know how it goes.

I’m from China, and my English isn’t very good, but I’ll do my best to communicate through translation tools if needed. Please feel free to reply even if my responses are a little slow or awkward.

3 Likes

[0.2.2] — 2026-09-17

  • Added optional browser-side microphone noise suppression.

  • Refined volume interaction: desktop microphone and master-volume controls open on hover, with noise suppression in the microphone menu.

  • Improved error messages and error-code display on top of PR #2.

  • Added Russian and Japanese UI support and per-language welcome text configuration.

[0.2.1] — 2026-09-13

  • Unified connection-error display on the welcome page: preserve error codes, safely truncate unknown codes, and show traceable server reasons.

  • Added default IPv6 TeamSpeak target support and documented the required host, runtime, and network conditions.

v0.2.3

  • Added member-management entry points: drag-and-drop remains available, while the context menu now provides a “Move to” submenu with a “My channel” shortcut.
  • Added permission-aware direct member moves: authorized users can move clients without redundant channel-password prompts, while the action is unavailable without the required TeamSpeak permission.
  • Added client-avatar display, microphone mute-state synchronization, and remembered-identity recovery, with improved pointer-drag compatibility.
  • Refreshed feature screenshots and documentation pages for all five supported languages.
  • Fixed clipped lower content in the high-resolution desktop admin settings page and tightened relay-card width constraints.

v0.2.4

Cross-platform P2P screen sharing

  • Browser users and native TeamSpeak 6 clients can discover, start, and watch each other’s screen shares.
  • Screen media prefers a direct WebRTC/ICE path between browsers or between a browser and a native client; WebSpeak carries authorization, share state, and SDP/ICE signaling only.

Other changes

  • Added live status, viewer count, player volume, fullscreen, exit controls, and live WebRTC statistics.
  • Added browser capture settings up to 1080p and 60 FPS, with a standalone settings modal that keeps member cards compact.
  • Added homepage visitor numbering and refined screen-share card/viewing interactions.

v0.2.5

Skin system

  • Added the .wskin system for custom themes created according to the skin development standard.
  • Day and Night are provided as base styles, with the customized ILLUSIA theme bundled as a custom-skin example. These three built-in skins cannot be removed or disabled.
  • Includes a skin development guide and the official skin-development Agent Skill to help users create and package custom themes.

Wow really cool, I like the visitor count in the corner ha. Nice stuff!

1 Like

Thx! Glad you like it :grinning_face_with_smiling_eyes:

Thanks for building this. We run it for our TS6 community and it works great, even on iPhone.

1 Like