O
OBS WebSocket
Remote control OBS Studio via API. Automate scenes, sources, and streaming programmatically.
desktop Paid
## The Decision
OBS WebSocket is the **remote control API that transforms OBS Studio from a manual tool into an automatable platform**. Built into OBS 28+, it enables programmatic control of every feature—scenes, sources, filters, streaming, recording, virtual camera, replay buffer.
**Bottom line**: Enable OBS WebSocket if you stream. It's free, built-in, and unlocks automation that saves hours. Skip it only if you never use Stream Deck, chatbots, or home automation (just hotkeys).
## Who It's For
- **Streamers Using Stream Deck**: OBS WebSocket is the bridge.
- **Developers Building Custom Controls**: Chatbots, scripts, home automation.
- **Power Users**: Automate scene switching based on conditions.
- **Multi-PC Setups**: Control OBS from another computer.
- **Home Automation Enthusiasts**: Connect OBS to Home Assistant, smart lights.
## Who Should Skip
- **Casual Streamers**: Manual hotkeys are enough.
- **Non-Technical Users**: Direct API use requires programming. Use Stream Deck/Touch Portal instead.
## Core Features
### 1. Full OBS API Coverage
Control every aspect of OBS:
- **Scenes**: List, switch, create, delete, reorder.
- **Sources**: Get/set properties, visibility, mute, volume, position.
- **Filters**: Add, remove, configure source filters.
- **Streaming/Recording**: Start, stop, toggle, get status.
- **Virtual Camera**: Start/stop/toggle.
- **Replay Buffer**: Save instant replays on demand.
- **Events**: Subscribe to scene changes, stream status, source updates.
### 2. Authentication & Security
- **Password Protection**: Optional WebSocket password.
- **Port Configuration**: Default 4455; change if needed.
- **Local-only**: By default binds to localhost; use SSH tunnel or VPN for remote access.
### 3. Client Libraries for Every Language
Official and community libraries:
- **JavaScript/TypeScript**: obs-websocket-js (npm)
- **Python**: obsws-python (pip)
- **Go**: goobs (go get)
- **C#**: obs-websocket-dotnet (NuGet)
- **Rust**: obws (cargo)
### 4. Ecosystem Built on Top
OBS WebSocket is the foundation for many tools:
- **Elgato Stream Deck**: Native OBS actions.
- **Touch Portal**: Tablet control surface.
- **LioranBoard**: Free visual automation.
- **SAMMI**: Advanced stream automation.
- **OBS Blade**: Mobile monitoring.
## Pricing Breakdown
| Tool | Price | Best For |
|------|-------|----------|
| OBS WebSocket | Free (built into OBS) | Automation foundation |
| Stream Deck | $149.99 (hardware) | Tactile control |
| Touch Portal | $13.99 | Tablet control |
| LioranBoard | Free | Visual scripting |
**Value**: OBS WebSocket costs $0 and enables unlimited automation. Stream Deck costs $150 for hardware; WebSocket is the free, programmable equivalent.
## Hands-On: Chat-Controlled Scene Switching
I built a simple StreamElements chatbot command to let viewers switch scenes:
1. **Enabled WebSocket** in OBS: Tools → WebSocket Server Settings → Enable on port 4455, no password.
2. **Python Script** running on same machine:
```python
import obsws_python as obs, asyncio
client = obs.ReqClient(host='localhost', port=4455)
async def switch_scene(scene_name):
client.set_current_program_scene(scene_name)
```
3. **Chatbot Configuration**: StreamElements chatbot sends HTTP request to local Flask endpoint when `!scene <name>` typed in chat.
4. **Endpoint** calls the Python script to switch scenes.
5. **Test**: Viewers typed `!scene gameplay`, `!scene brb`, `!scene ending`. Scene switched instantly.
**Friction**: Setting up the Flask endpoint and OBS WebSocket permissions took ~30 minutes. Once running, it felt magical—chat literally controlled the stream.
**Total time**: 1 hour.
**Cost**: $0.
## Pros & Cons
**Pros**
- Free and built into OBS 28+ (no separate plugin needed).
- Complete API coverage—every OBS feature controllable.
- Client libraries for major languages.
- Forms foundation for entire automation ecosystem.
- Local-only by default; secure.
**Cons**
- Direct use requires programming knowledge.
- Remote access requires manual setup (SSH tunnel/VPN).
- No visual interface; you write code or use third-party tools.
- No built-in rate limiting; be careful with loops.
## The Verdict
**Rating: 9.0/10**
OBS WebSocket is an indispensable but overlooked feature. Every streamer should enable it, even if they only use it through Stream Deck or Touch Portal. Its programmability turns OBS into a platform.
**Best for**: Streamers using automation, developers, power users, home automation integrators.
**Not for**: Non-technical users (use Stream Deck/Touch Portal), one-time streamers with no automation needs.
## Try It
Enable in OBS: Tools → WebSocket Server Settings → Check "Enable".
Documentation: [github.com/obsproject/obs-websocket](https://github.com/obsproject/obs-websocket)
*No affiliate link—this is open-source.*
## FAQ
**Q: Is OBS WebSocket safe to enable?**
A: Yes. It runs locally by default. If you enable remote access, set a strong password and use a VPN.
**Q: Can I control OBS from my phone?**
A: Yes. Use OBS Blade or build a custom app with the WebSocket API.
**Q: Does OBS WebSocket work with OBS 27?**
A: No, built into OBS 28+. For OBS 27, install the community plugin manually.
**Q: What can I automate?**
A: Scene switching, source visibility, audio levels, filter parameters, start/stop streaming, replay buffer saves, virtual camera toggles—almost everything.
**Q: Error: connection refused**
A: WebSocket server is disabled in OBS settings. Enable it. Also check firewall—port 4455 must be open for local connections.
Visit the official website to learn more or start a free trial.
Visit OBS WebSocket