How to Fix ERR_HTTP2_PROTOCOL_ERROR in Chrome
What ERR_HTTP2_PROTOCOL_ERROR means
HTTP/2 is the fast, multiplexed protocol almost every modern website uses to talk to your browser — instead of opening one connection per file, the browser and server hold a single connection and stream many files through it at once. ERR_HTTP2_PROTOCOL_ERROR means that conversation broke down: Chrome started an HTTP/2 exchange, something violated the protocol's rules mid-stream, and Chrome abandoned the page rather than continue with corrupted data.
The violation can come from either side. On your side, the usual suspects are a stale or corrupted cache entry, an extension that rewrites network requests, an outdated browser that speaks an old HTTP/2 dialect, a VPN or proxy that reshapes traffic, or security software filtering the connection. On the server side, it is a misconfigured web server — a malformed response header, a broken SSL certificate chain, or an HTTP/2 setup in Nginx, Apache, or IIS that does not follow the spec. The troubleshooting below works from your side inward, which is where most cases get fixed.
Common causes
- Corrupted browser cache or cookies: a stale cached response or cookie can produce an HTTP/2 stream Chrome can no longer parse.
- Outdated Chrome version: older Chromium builds have HTTP/2 protocol bugs that are fixed in newer releases.
- Extensions rewriting network traffic: ad blockers, privacy tools, VPN extensions, and security scanners can alter headers in ways Chrome rejects.
- QUIC protocol conflicts: Chrome's Experimental QUIC transport sometimes clashes with HTTP/2 handling on certain networks.
- VPN, proxy, or security software interference: anything that filters or rewrites traffic between you and the server can break the HTTP/2 stream.
- Server-side misconfiguration: malformed headers, a broken SSL setup, or a wrongly configured HTTP/2 module on the site's web server.
How to fix ERR_HTTP2_PROTOCOL_ERROR — step by step
Work through these fixes in order. Most cases are fixed by step 1, 2, or 4.
- Hard-refresh the page and retry. Start with the simplest fix: hold Ctrl (or Cmd on a Mac) and click the refresh button to force a hard refresh. This makes Chrome fetch the page from scratch instead of reusing a broken connection. If the error came from a temporary hiccup on the server, the page often loads on the second try. Also try closing the tab and reopening the site fresh.
- Update Chrome to the latest version. Outdated browsers speak an outdated version of the HTTP/2 protocol, which is one of the most common triggers for this error. Open Chrome's menu in the top-right corner, go to Help, then About Google Chrome. Chrome checks for updates automatically and installs any it finds. Restart the browser when it asks, then reload the page. Edge, Opera, and other Chromium browsers have the same update flow.
- Clear your cache and cookies, then test in incognito. Corrupted cached files or a bad stored cookie can break the HTTP/2 stream. Press Ctrl + Shift + Delete (Cmd + Shift + Delete on a Mac), set the time range to All time, check Cached images and files and Cookies and other site data, and click Clear data. Then open an Incognito window with Ctrl + Shift + N and try the site there — incognito disables extensions and ignores cached data, so if the page loads, an extension or cached entry was at fault.
- Disable extensions, VPN, and the QUIC protocol. Type chrome://extensions in the address bar and toggle every extension off, then reload the site. If it works, re-enable extensions one by one until the error returns — the last one enabled was interfering with network requests. Disconnect your VPN or proxy as a test too, since either can rewrite traffic in ways Chrome's HTTP/2 parser rejects. Finally, type chrome://flags/#enable-quic in the address bar, set Experimental QUIC protocol to Disabled, and restart Chrome. QUIC conflicts with HTTP/2 handling on some networks, and disabling it fixes this error outright for many people.
- Fix your date and time, then flush DNS. An incorrect system clock breaks the TLS verification that HTTP/2 depends on. On Windows, right-click the clock in the system tray, choose Adjust date/time, and make sure Set time automatically is on. On a Mac, open System Settings, go to General, then Date & Time, and turn on automatic time. Then flush your DNS: open Command Prompt as Administrator and run ipconfig /flushdns, and run netsh winsock reset followed by a restart if the error persists.
- Check security software, then contact the site owner. Third-party antivirus and firewall software sometimes filter HTTP/2 traffic in ways Chrome rejects. Temporarily pause your antivirus web shield and reload the page as a test — if the site loads, add the site's address to the software's allowlist and re-enable protection immediately. If the error happens on only one website and everything above failed, the problem is server-side: a misconfigured web server (Nginx, Apache, or IIS), a broken header, or a bad SSL certificate. Contact the site owner and tell them Chrome reports ERR_HTTP2_PROTOCOL_ERROR on their site so their hosting support can check the HTTP/2 configuration.
Did this fix it? Quick checklist
- The site loads within a few seconds
- No broken-cache or conflicting extension remains enabled
- The error is gone in an incognito window
- The Experimental QUIC flag is set to Disabled if needed
If the site loads in incognito but not in a normal window, an extension or a piece of cached data is still the problem — leave extensions off and clear browsing data once more with All time selected. If the error happens on every website, your browser installation itself may be broken: reset Chrome at chrome://settings/reset and, as a last resort, uninstall and reinstall it fresh. And if it is only one website, do not spend more time on your side — save the checklist results, send them to the site owner with a screenshot, and try Firefox in the meantime, since its more forgiving HTTP/2 handling often loads the same page without complaint.
Frequently asked questions
What does ERR_HTTP2_PROTOCOL_ERROR mean?
It means Chrome tried to talk to the website using the HTTP/2 protocol and the conversation failed partway — the protocol handshake or one of the data streams broke the rules. HTTP/2 is the faster, multiplexed connection method most modern sites use. When anything corrupts that exchange — a bad cache entry, a conflicting extension, a misconfigured server — Chrome gives up and shows this error.
Why does ERR_HTTP2_PROTOCOL_ERROR appear in Chrome but not in Firefox?
Chromium-based browsers (Chrome, Edge, Opera, Brave) are stricter about HTTP/2 protocol violations than Firefox. A malformed header or a small protocol rule violation that Firefox tolerates can make Chrome reject the whole stream. That is also why disabling the Experimental QUIC flag or updating Chrome — both Chromium-specific behaviors — often fixes it when Firefox never shows the error.
Can an extension cause ERR_HTTP2_PROTOCOL_ERROR?
Yes. Extensions that modify, block, or inspect network traffic — ad blockers, privacy tools, VPN extensions, security scanners — can alter HTTP/2 headers or streams in ways Chrome rejects. Testing in an incognito window (where extensions are off) is the fastest way to check: if the page loads there, an extension is the cause.
Does ERR_HTTP2_PROTOCOL_ERROR mean the website is down?
Not usually. A down server produces errors like ERR_CONNECTION_REFUSED or a timeout. This error specifically means the protocol exchange failed, which points to your browser's handling or the server's configuration rather than the server being offline. If the error appears on every website, the cause is on your side; if it is one site only, the site's server configuration is the likely suspect.
Will disabling QUIC break anything?
No. Disabling the Experimental QUIC flag in chrome://flags just makes Chrome use regular TCP-based connections instead of Google's QUIC transport. Sites load slightly differently but keep working normally. It is a widely used workaround for HTTP/2 errors and you can re-enable the flag any time from the same page.