Skip to content
FizzKit

WebSocket Tester

A browser WebSocket client with protocol presets for plain echo, Socket.IO (EIO=4 URL form with 40 / 42["event",{}] frame helpers), STOMP (CONNECT / SUBSCRIBE / SEND templates with the \0 NUL terminator), graphql-ws (connection_init / subscribe with the graphql-transport-ws subprotocol) and MQTT over WebSocket. Send text, JSON, Base64 or hex frames with ⌘Enter, save named message templates, resend or edit-and-resend any logged frame, pretty-print received JSON, and run an RTT ping (nonce-matched, min/avg/max/last/lost). The log supports pause with buffering, text and direction filters, NDJSON and CSV export, a 2,000-entry cap and a fullscreen mode. A close-code reference (1000–1015, 3000–4999) explains every disconnect, including the 1006 handshake-rejection case.

Runs locally in your browser
Protocol preset

Public echo server: every frame you send comes straight back. Good for RTT pings and format checks.

⌘ Enter (Ctrl Enter) to send · \0 becomes a NUL byte
RTT pingms
last —avg —min —max —n 0lost 0

Sends {"type":"ping","nonce":…} on an interval and measures the time until any frame containing the nonce comes back — needs an echo or ping-aware server. Probes are hidden from the log by default.

Open fullscreen for a bigger message log
Log (0)
No messages yet. Connect and send.
Status
disconnected
Duration
—
Messages
0
Sent ↑ (session)
0 B
Received ↓ (session)
0 B
Protocol
(none)
RTT avg
—

How to use WebSocket Tester

  1. 1Pick a protocol preset (Echo, Socket.IO, STOMP, graphql-ws, MQTT) or enter your own wss:// URL and optional subprotocols, then press Connect.
  2. 2Compose a frame as Text, JSON, Base64 or Hex — use the quick-insert buttons for protocol frames — and press ⌘Enter to send.
  3. 3Watch the log: pause it during bursts, filter by text or direction, pretty-print JSON, and resend or edit-and-resend any frame.
  4. 4Start the RTT ping to measure round-trip latency against an echo or ping-aware server; probes are hidden from the log.
  5. 5Export the log as NDJSON or CSV, save frequently used frames as named templates, and check the close-code reference when a connection drops.

About WebSocket Tester

A browser WebSocket client with protocol presets for plain echo, Socket.IO (EIO=4 URL form with 40 / 42["event",{}] frame helpers), STOMP (CONNECT / SUBSCRIBE / SEND templates with the \0 NUL terminator), graphql-ws (connection_init / subscribe with the graphql-transport-ws subprotocol) and MQTT over WebSocket. Send text, JSON, Base64 or hex frames with ⌘Enter, save named message templates, resend or edit-and-resend any logged frame, pretty-print received JSON, and run an RTT ping (nonce-matched, min/avg/max/last/lost). The log supports pause with buffering, text and direction filters, NDJSON and CSV export, a 2,000-entry cap and a fullscreen mode. A close-code reference (1000–1015, 3000–4999) explains every disconnect, including the 1006 handshake-rejection case.

WebSocket Tester is part of FizzKit — a collection of focused developer and ad-tech tools. Because everything runs locally, it works offline once loaded and never exposes your data to a remote server.

Frequently asked questions

1006 means no Close frame arrived — the handshake was rejected or the socket dropped. Typical causes: wrong path, missing or wrong subprotocol, the server does not allow this Origin, a ws:// URL from an https:// page (mixed content), or a TLS certificate the browser rejects.