1. Home
  2. Developer tools
  3. WebSocket Tester

WebSocket Tester

Check that a WebSocket endpoint accepts connections and see exactly what it sends, without writing a client.

Free, no sign-up. Runs in your browser; see “Private by design” for the one online step.

How to use WebSocket Tester

  1. Enter a wss:// URL (or ws://localhost) and optional subprotocols.
  2. Connect and send messages.
  3. Read, copy or download the frame log.

Features

  • Text frames sent and received with millisecond timestamps
  • Binary frames shown as hex
  • JSON pretty-printing toggle
  • Close codes explained, including 1006
  • Subprotocol negotiation and public echo servers for testing

Supported formats

Input

  • Typed or pasted text

You get

  • TXT

Private by design

Nothing is sent until you press Connect. Then your browser opens a WebSocket directly to the server address you entered and sends only the messages you type; openWorkstand never receives them. The quick-pick echo servers (echo.websocket.org and ws.postman-echo.com) are run by third parties and see what you send to them. How local processing works

Good to know

  • Browsers do not allow custom headers on WebSocket connections.
  • Unencrypted ws:// works only to localhost from this https page.

Guide

Testing WebSocket servers from the browser

WebSockets keep a connection open between a browser and a server so both can send messages at any time, which is how chat, live dashboards, multiplayer games and price feeds work. When something goes wrong, the first question is whether the server accepts connections and what it actually sends. This tester connects to a WebSocket URL from your browser, lets you send messages and logs every frame.

Opening a connection

A WebSocket starts as an HTTP request with an Upgrade: websocket header; if the server agrees, it answers with status 101 and the connection switches protocols. Browsers perform this handshake themselves and expose only the result, so the tester shows “Connected” with the negotiated subprotocol and extensions such as permessage-deflate, or an error if the handshake fails.

Secure and local URLs

This page is served over HTTPS, and browsers block unencrypted connections from secure pages as mixed content. The tester therefore accepts wss:// URLs, plus ws:// to localhost, 127.0.0.1 or ::1, which browsers treat as trustworthy for local development. Any other ws:// address is refused with an explanation instead of failing silently.

Subprotocols

Many servers speak an application protocol on top of WebSocket and negotiate it during the handshake: GraphQL subscriptions use graphql-transport-ws, MQTT over WebSocket uses mqtt, and STOMP uses names such as v12.stomp. Enter one or more names, separated by commas, before connecting; the server picks one and the tester displays which.

Frames and messages

Each frame in the log shows whether it was sent or received, the time since the connection opened, its size in bytes and its content. Text frames containing JSON can be pretty-printed. Binary frames, which the browser delivers as array buffers, are shown as hexadecimal bytes. Press Ctrl+Enter to send the message box’s content as a text frame.

Closing and close codes

When the connection ends, the close code and reason are logged. 1000 is a normal close and 1001 means the server is going away. 1006 is not sent by servers at all: the browser reports it when the connection dropped without a proper close frame, for example after a network failure, a proxy timeout or a handshake the server refused. Browsers deliberately hide the details, so check server or proxy logs for the cause.

A worked example

Entering ws://example.com/x and pressing Connect is refused with the message that browsers block unencrypted ws:// from an https page except to localhost. Entering http://example.com is refused because the URL must start with wss://. With a valid address, such as one of the public echo servers listed under the URL field, the Sample message, a JSON subscription request, is sent as a text frame; an echo server returns each message unchanged, so it appears in the log once as sent and once as received.

Authentication and privacy

The browser WebSocket API cannot set custom headers, so there is no way to send an Authorization header. Servers designed for browsers accept a token in the URL query string, a cookie for their own domain, a value in Sec-WebSocket-Protocol or credentials in the first message. Nothing is sent until you press Connect, and then only to the server you entered. The echo servers offered as quick picks are run by third parties, so do not send secrets to them.

Checked against the current version of the WebSocket Tester on .

Troubleshooting

The download did not start

Look for your browser’s download bar or icon. Some browsers ask once before a site may download files; allow it and click the button again.

Frequently asked questions

Why does a connection that works in Postman fail here?

The browser sends an Origin header with this site’s address, and many servers only accept their own origin to prevent cross-site WebSocket hijacking. Desktop clients send no Origin or one you choose. Allow the origin on a test server, or test from a page on the server’s own domain.

How do I test Socket.IO?

Socket.IO adds its own protocol on top of WebSocket, with a handshake path such as /socket.io/?EIO=4&transport=websocket and message prefixes like 40 and 42. You can connect and see those frames here, but a Socket.IO client library is easier for anything beyond a quick check.

How do I send an Authorization header?

You cannot from a browser: the WebSocket API does not allow custom headers. Servers that support browsers accept a token in the URL query, a cookie, the Sec-WebSocket-Protocol value or the first message instead.

What does close code 1006 mean?

The connection dropped without a close frame: a network failure, a proxy timeout, or a server that refused the handshake. The browser deliberately hides the reason, so check the server logs.

Is anything sent over the internet?

Nothing is sent until you press Connect. Then your browser opens a WebSocket directly to the server address you entered and sends only the messages you type; openWorkstand never receives them. The quick-pick echo servers (echo.websocket.org and ws.postman-echo.com) are run by third parties and see what you send to them.

Keep working with the result

After you download, choose “Save to Workstand” to keep the result in a folder on your computer, attach it to a project and create a follow-up task. It is saved by your browser, not uploaded.