No upload to server Fast Free

WebSocket Tester (ws/wss Client)

Connect to any WebSocket server, send messages, inspect close codes, and export the session — free, right in your browser.

Connection

● Disconnected
Try an echo server:
Browsers don’t expose raw ping frames, so latency is measured with a timestamped echo message instead.

Message log (0)

No messages yet. Connect to a server and send something — echoes appear here.

100% in your browser

This tester uses your browser’s native WebSocket API — connections go directly from your device to the server you enter. Nothing is proxied through our servers and no messages are stored anywhere.

WebSocket tester online (free ws/wss client)

WebSockets power the real-time web: chat apps, live dashboards, multiplayer games, collaborative editors, and streaming APIs all keep a persistent two-way connection open instead of polling. But that persistence is exactly what makes them annoying to debug — a connection can die silently, a close code can be cryptic, and reproducing a flaky handshake from a bug report is painful. This free WebSocket tester gives you a clean client in the browser: paste a server URL, connect, and start exchanging messages in seconds.

There is nothing to install and no browser extension to trust with your traffic. (Several once-popular WebSocket testing extensions have been discontinued or pulled from stores over the years, which is why an always-available web client matters.) Type wss:// for production servers or ws:// for localhost, hit Connect, and every sent and received message lands in a timestamped log with its size in bytes.

What you can do with it

  • Connect to any server. Enter your own ws/wss endpoint — a local dev server, a staging API, or a production socket — and the tester opens a real connection using your browser’s native WebSocket API.
  • Send and watch messages live. The composer sends anything you type; incoming messages appear instantly in the log with direction badges, timestamps, and byte sizes. Copy any single message with one click.
  • Decode close codes. When the connection drops, the close-code inspector translates the numeric code into plain language — 1006 (abnormal closure) versus 1008 (policy violation) point at very different bugs, and now you can tell them apart at a glance.
  • See the handshake. On connect, the tool shows the negotiated subprotocol, extensions, and binary type, so you can confirm your server negotiated what you expected.
  • Measure latency honestly. Browsers don’t expose raw ping frames, so the latency button sends a timestamped message and times the echo — a true round-trip number you can quote.
  • Export the session. Download the whole message log as JSON — message directions, timestamps, and byte counts included — and attach it to a bug report or keep it with your test notes.
  • Auto-reconnect. Flip the toggle and the tester retries dropped connections on your schedule, which is handy when you’re watching a flaky server.

Test it in 30 seconds with an echo server

Not sure your server is the problem? Rule out your client first. Click the Postman Echo preset, hit Connect, type {"hello":"websocket"}, and press Send. The server echoes your message straight back — you should see a green “received” entry within a second. Then click Measure latency to see your round-trip time. If the echo works but your own server misbehaves, the bug is on the server side.

Close codes, translated

The codes you’ll meet most often:

  • 1000 — normal closure. Everything is fine; somebody asked to hang up politely.
  • 1001 — going away. The server is shutting down or the page navigated away.
  • 1006 — abnormal closure. No close frame arrived at all: the network died, the server crashed, or a firewall killed the socket. The single most common “why did it disconnect?” answer.
  • 1008 — policy violation. Often an authentication or authorization rejection in disguise — check your tokens.
  • 1009 — message too big. Your payload exceeded the server’s frame limit; chunk it or raise the limit.
  • 1011 — internal server error. The server’s own handler threw while processing your message.

The inspector on this page covers the full registry, so you don’t need to memorize any of this — but knowing the big six will already make your debugging faster.

ws vs wss, and when each matters

ws:// is plain WebSocket; wss:// is WebSocket over TLS — the same relationship as http versus https. Browsers refuse to open ws:// connections from an https:// page (mixed content), which is one reason this tester lives on HTTPS: you can still test local ws://localhost servers because browsers exempt localhost, but anything else in production should be wss://. If your connect fails instantly with a 1006, a ws/wss mismatch is the first thing to check.

Debugging tips that actually help

  • Reproduce with the echo server first. If the echo preset works, your network, browser, and this client are fine — the problem is your server.
  • Read the close code before the logs. A 1008 means “fix your auth,” a 1009 means “shrink your message,” a 1006 means “look at the network.” Start there, not in application code.
  • Check the handshake panel. If your server is supposed to negotiate a subprotocol (like graphql-ws) and the panel says “none negotiated,” the server ignored your offer — that’s your bug.
  • Export and diff. Save a good session and a bad session as JSON, then compare them with ToolsOfWeb’s Text Diff Checker to spot exactly where behavior diverged.
  • Watch message sizes. The byte count on each log entry makes it obvious when a “small” JSON message is actually 200 KB of nested data hitting a frame limit.

Your traffic never touches our servers

This tester is a thin UI over the WebSocket API built into your browser. The socket opens directly between your device and the URL you enter — there is no proxy, no message store, and nothing to leak. Test staging credentials and internal endpoints with the same confidence you’d have using your own code.

Pair it with the rest of your API toolkit

Validate the JSON you’re sending with our JSON Formatter, stress-test message patterns with the Regex Tester, and mint unique request IDs with the UUID v7 Generator.

FAQs

Is this WebSocket tester free?+

Yes — completely free, with no account and no message limits. Everything runs in your browser using the native WebSocket API.

Can I test wss (secure WebSocket) servers?+

Yes. Enter any wss:// URL and the tester connects over TLS, exactly like your production clients do. Plain ws:// works too for local development.

What do the close codes mean?+

Every WebSocket close carries a numeric code. 1000 means a normal shutdown, 1006 means the connection dropped without a close frame (the most common debugging headache), and 1008 usually points at an auth or policy rejection. The close-code inspector on this page translates the code for you automatically.

How is latency measured if browsers can’t send ping frames?+

The browser WebSocket API doesn’t expose raw ping/pong frames. Instead, the “Measure latency” button sends a timestamped message to the server and times how long the echo takes to come back — an honest round-trip measurement.

Do my messages pass through your servers?+

No. The connection goes directly from your browser to the server URL you enter. We never see, store, or log your messages.

More free tools

Want guides and tips? Visit the ToolsOfWeb blog or go back to the homepage.

Related guide

Read guide: testing WebSocket servers and close codes →