Everything runs on your machine — your input is processed right here in your browser and never uploaded to any server.

WebSocket Tester

not connected

How it works

1

Enter the WebSocket URL, starting with wss:// — for example wss://api.example.com/socket.

2

Optionally list subprotocols (comma-separated) to offer during the handshake, such as graphql-ws.

3

Click Connect: the status chip shows the handshake time and which subprotocol the server accepted.

4

Type a message and press Enter to send a frame; incoming frames appear in the live feed with timestamps.

5

On disconnect, the close code is decoded for you — including the infamous 1006 abnormal closure.

About this tool

When a WebSocket endpoint misbehaves, the usual debugging loop involves installing wscat or postman just to answer one question: does it accept connections at all? This tester answers it in seconds. Enter a wss:// URL, click Connect, and you see the handshake result, the time it took, and the subprotocol the server picked — then a live console for sending frames and watching what comes back, timestamped to the millisecond.

Because the browser WebSocket API needs no CORS preflight, any reachable endpoint can be tested: API gateways, GraphQL subscription servers, Socket.IO backends (raw frame level), trading feeds or your own dev deployment. The connection is made directly from your browser to the server — unlike online testers that funnel traffic through their own relay, no third party sits in the middle.

100% private

The connection runs directly between your browser and the server you enter — nothing is proxied, logged or observed by this site. The URL and every frame you send exist only in your tab.

Frequently asked questions

Why can’t I test a ws:// (non-TLS) endpoint?

This site is served over https, and browsers block plain-text WebSocket connections from secure pages as mixed content — with one exception: loopback. ws://localhost and ws://127.0.0.1 are treated as trustworthy, so a server running on your own machine is fully testable here. Anything remote needs its TLS listener (wss://).

The connection fails with close code 1006 and no explanation. Why?

Browsers deliberately hide the low-level failure reason from JavaScript to prevent port-scanning. Code 1006 can mean DNS failure, an invalid certificate, a closed port, or a proxy dropping the upgrade — check the browser devtools network tab and the server logs to narrow it down.

Can I test Socket.IO or SignalR servers?

At the raw frame level, yes — but those libraries speak their own protocol on top of WebSocket (handshake packets, heartbeats), so a bare connection may be closed by the server unless you send the frames it expects. For full protocol testing, use their own client libraries.

How do I test an endpoint that requires a username and password?

Browsers cannot attach an Authorization header to a WebSocket handshake, and reject URLs with embedded user:pass credentials — that is a platform rule, not a limitation of this tool. Servers therefore authenticate WebSockets in one of three ways, all testable here: a token in the URL query string (paste the full URL), a token passed as a subprotocol (use the subprotocols field), or an auth message sent right after connecting (type it in the console). Cookies also ride along automatically for same-site endpoints.

Related tools

Popular right now