HTTP 426 Upgrade Required — Protocol Upgrade Needed
About HTTP 426 Upgrade Required
HTTP 426 Upgrade Required means the server refuses to perform the request using the current protocol and requires the client to upgrade to a different protocol. This guide covers everything you need to know about this topic, including common causes, step-by-step solutions, and answers to frequently asked questions.
Here are the key things to understand: Server requires the client to switch to a different protocol version. The Upgrade header in the response specifies which protocol to use. Common when a server requires TLS/HTTPS but receives plain HTTP. Also used for WebSocket upgrade requirements. Different from 301/308 redirects — 426 requires a protocol change, not a URL change. Understanding these fundamentals will help you diagnose and resolve this issue more effectively.
The most common reasons this occurs include: Accessing an HTTPS-only endpoint via plain HTTP. WebSocket endpoint receiving a regular HTTP request without upgrade. Server requiring HTTP/2 but receiving HTTP/1.1 request. API requiring a minimum TLS version not met by the client. Identifying the root cause is the first step toward finding the right solution.
To resolve this, follow these recommended steps: Check the Upgrade response header for the required protocol. Switch from HTTP to HTTPS if indicated. For WebSocket connections, ensure you send the proper Upgrade: websocket header. Update your HTTP client to support the required protocol version. If TLS version is the issue, update your client's TLS library. If these steps do not resolve the issue, consider consulting additional resources or a qualified professional.
This article is part of our HTTP Status Codes collection on Error Codes Wiki. We provide comprehensive, up-to-date information to help you find solutions quickly.
Quick Answer
What protocol upgrade is usually required?
Most commonly upgrading from HTTP to HTTPS (TLS), or from HTTP to WebSocket.
Overview
HTTP 426 Upgrade Required means the server refuses to perform the request using the current protocol and requires the client to upgrade to a different protocol.
Key Details
- Server requires the client to switch to a different protocol version
- The Upgrade header in the response specifies which protocol to use
- Common when a server requires TLS/HTTPS but receives plain HTTP
- Also used for WebSocket upgrade requirements
- Different from 301/308 redirects — 426 requires a protocol change, not a URL change
Common Causes
- Accessing an HTTPS-only endpoint via plain HTTP
- WebSocket endpoint receiving a regular HTTP request without upgrade
- Server requiring HTTP/2 but receiving HTTP/1.1 request
- API requiring a minimum TLS version not met by the client
Steps
- 1Check the Upgrade response header for the required protocol
- 2Switch from HTTP to HTTPS if indicated
- 3For WebSocket connections, ensure you send the proper Upgrade: websocket header
- 4Update your HTTP client to support the required protocol version
- 5If TLS version is the issue, update your client's TLS library