WebSocket Tester
Test WebSocket connections, send messages, and view real-time responses. Supports multiple echo servers and custom endpoints.
About this tool
WebSocket is a protocol that keeps a single TCP connection open between a browser and a server so the server can push data to the client at any time — unlike HTTP, where the client must ask for every response. It is the transport behind chat apps, live dashboards, multiplayer games, and real-time price feeds.
This tool lets you open a ws:// or wss:// connection, send text or JSON messages, and watch the replies arrive in real time. Connect to the built-in echo server, type Hello WebSocket!, hit Send, and the same message comes straight back as a received frame.
The log is color-coded: green for messages you sent, blue for messages received, red for errors, and grey for system events (connection open, close codes). Press Ctrl/Cmd + Enter in the message box to send without reaching for the mouse.
FAQ
What is the difference between ws:// and wss://? ›
wss:// is WebSocket over TLS — the same encrypted transport HTTPS uses. ws:// is plaintext and is blocked on most HTTPS pages by the browser mixed-content policy. Always use wss:// for production; the plaintext variant is mainly for testing on localhost.
Why did my connection fail? ›
The most common reasons are a wrong URL scheme, a server that does not speak WebSocket on that path, a CORS or origin restriction set by the server, or a corporate proxy that blocks upgrade requests. The browser also blocks mixed content: a page loaded over HTTPS cannot open a ws:// connection.
What do the close codes mean? ›
1000 is a normal closure, 1001 means the peer is going away, 1006 is an abnormal closure (often a network drop), and 1008 indicates a policy violation. Codes in the 4000-4999 range are application-defined and their meaning depends on your server.
Can I send binary data? ›
Yes — the tester sets binaryType to arraybuffer and shows the byte length of any binary frame received. To send binary from the text box you would need to encode it first; for structured payloads the JSON preset is usually what you want.