WebSocket Tester

Runs in browser API Testing

Open ws:// or wss:// connections, send text or JSON messages, view a timestamped message log, and test reconnect behaviour. Connections are made directly from your browser.

Privacy: This tool runs entirely in your browser. Your input never leaves your device.
Loading tool…

How to use WebSocket Tester

  1. Enter the WebSocket URL (wss:// on HTTPS pages) and press Connect.
  2. Type a message (text or JSON) and press Send or Ctrl/⌘+Enter.
  3. Watch incoming frames in the log; toggle JSON pretty-printing as needed.
  4. Enable auto-reconnect or keep-alive to test resilience, then Disconnect when done.

WebSocket Tester features

  • Connect to ws:// and wss:// servers directly from the browser, with optional sub-protocols
  • Timestamped log of sent and received frames with direction, size and JSON pretty-printing
  • Auto-reconnect with exponential back-off and an optional keep-alive message
  • Close code and reason reporting, clean/unclean close detection
  • Copy or download the log for bug reports

WebSocket Tester example

Echo test

Input:

wss://echo.websocket.org
{"type":"ping","id":1}

Output:

12:00:01.120 • info Connected
12:00:03.410 ▶ sent {"type":"ping","id":1}
12:00:03.655 ◀ recv {
  "type": "ping",
  "id": 1
}

Frequently asked questions about WebSocket Tester

Where does the connection come from?

Directly from your browser to the server — nothing passes through Mutqan. Use wss:// on this HTTPS page; browsers block plain ws:// except to localhost.

Can I send custom headers?

Browsers do not allow custom headers on WebSocket handshakes. Use query parameters, a sub-protocol value or an in-band auth message instead.

What does auto-reconnect do?

After an unexpected close it reconnects with exponential back-off (1 s, 2 s, 4 s … up to 30 s, 10 attempts). Manual disconnects do not trigger it.

Can I keep the connection alive?

Enable the keep-alive option to send a message of your choice every N seconds while connected.

Technical notes

The browser WebSocket API cannot set custom headers or inspect handshake responses; authentication must use query parameters, sub-protocols or an application-level message. Binary frames are logged with their size.