101 HTTP (Switching Protocols): What Is It and How It Works

Understanding HTTP status codes is essential for managing your online presence. As a webmaster or developer, understanding what’s good for search engine optimization and website performance can be daunting when there are so many code possibilities out there. One of the lesser-known codes that you should understand is Switching Protocols (101). It might not seem important since it’s rarely seen and even more infrequently used, but understanding how to use it correctly could be beneficial to the performance and usability of your website. In this blog post, we’ll explain what 101 Http status code is and discuss how utilizing it correctly in specific situations can improve your website’s user experience.

What are http status codes

HTTP status codes are a set of responses from the server to the client that indicate whether a client’s request was processed successfully. They provide insight into why a specific action could not be completed, ranging from bad requests and authentication issues to server timeouts. A few commonly seen HTTP status codes are 200 (OK), 404 (Not Found), and 400 (Bad Request). These codes can help developers identify problems in communication between the client and the server, allowing them to troubleshoot quickly. Knowing how to interpret these various response codes makes debugging both faster and more effective.

What is 101 http switch protocols?

HTTP Switching Protocols is a response status code that shows the server is aware of and open to switching over to an alternate protocol. This could be used for upgrading from Hypertext Transfer Protocol HTTP/1.1 (synchronous protocol) to WebSockets (asynchronous) which allows two-way communication between client and server. In this situation, it’s the client who sends out an ‘Upgrade’ request header signalling their interest in initiating the switch, with the server then responding with a 101 status code confirming they are about to make said transition occur!

See also  The Power of HTTP 202: Simplifying Server Responses

How to use 101 http status code

To use the HTTP 101 status code, the following steps should be followed:

  1. When the client is seeking a protocol switch, they transmit an HTTP request to the server with “Connection” and Upgrade header field in their header. By way of example, if they would like to transition over to WebSockets as their desired protocol, then both headers must be set – “Upgrade” should be labeled as ‘websocket’ while “Connection” needs to read ‘Upgrade’.
  2. Upon receiving the request, the server assesses if it is equipped to switch to a different protocol. If so, it transmits a 101 Switching Protocols response with suitable headers that will finish off the transition. For instance, when changing over to WebSockets, the server includes “Upgrade” and “Connection” headers in its reply.
  3. Clients receive the 101 response and can begin using the new protocol straight away. With WebSockets, they only need to open a connection and start sending/receiving messages via this efficient protocol.
  4. The server and client can now communicate using the new protocol.

It’s essential to remember that the protocol switch is only possible if both the client and server agree on it. If not supported, an error status code such as 400 Bad Request should be sent from the server instead.


here’s an example of how to use the HTTP 101 status code to switch from HTTP/1.1 to WebSockets:

  1. The client sends an HTTP request to the server, explicitly specifying their desired protocol switch via the “Upgrade” and “Connection” headers:
GET /my-websocket-endpoint HTTP/1.1
Host: example.com
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
  1. Upon receiving the request, the server will analyze if it can support WebSockets and consequently send a response of ‘101 Switching Protocols’ with matching headers to its client.
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
  1. After receiving a 101 response, the client is then equipped to open up a WebSockets connection and begin sending and receiving data.
// Client code to open the WebSockets connection and send a message
var socket = new WebSocket("ws://example.com/my-websocket-endpoint");
socket.onopen = function() {
    socket.send("Hello, server!");
  1. The server receives the message, process it and sends a response:
// Server code to handle the WebSockets message
socket.onmessage = function(event) {
    console.log("Received message: " + event.data);
    socket.send("Hello, client!");

It’s crucial to bear in mind that this is only a simplified example, and for greater security in real-world applications, authentication and encryption may be added to the WebSockets connection.

See also  HTTP 510 Not Extended: A Comprehensive Guide To Fix It

Why to use 101 switching protocols?

There are a number of reasons why a client or server might want to switch protocols:

  • To improve performance: A protocol switch can provide a wealth of advantages to the client and server, including full-duplex communication, lower latency, and decreased overhead. For instance, transitioning to WebSocket connections can heighten real-time applications like online gaming or chat services by providing faster information exchange while decreasing hiccups in performance.
  • To enable new features: Transitioning to a new protocol such as WebSockets can open up fresh possibilities, like real-time alerts, live data streaming and full two-way communication. Imagine the impact this could have on your business – you’ll never be more connected with customers than ever before!
  • To improve security: A protocol switch can bolster the security of exchanges between client and server by incorporating features such as encryption, authentication, and access restrictions. By using a protocol switch to implement these features, communication over networks becomes more secure and reliable.
  • To reduce complexity: Via a protocol switch, simpler and more efficient communication between client and server can be achieved, eliminating the need for complex communication models.
  • To support legacy systems: A protocol switch enables users to continue using legacy systems that do not include the latest protocols, making it easier and more efficient for operations.

All HTTP status codes by categories