103 Early Hints
1xx informational
An interim response that lets the browser start preloading resources while the server is still preparing the page.
103 Early Hints arrives before the final response and carries Link headers such as Link: </app.css>; rel=preload; as=style. While the server is still querying the database or rendering HTML, the browser can already open connections and fetch critical CSS, fonts or scripts. The final 200 follows on the same request.
| Class | 1xx Informational |
|---|---|
| Retry? | Not applicable |
| Cacheable by default | No — only with explicit Cache-Control |
| Response body | None |
| Defined in | RFC 8297 — An HTTP Status Code for Indicating Hints |
HTTP/1.1 103 Early Hints
When you'll see it
- A CDN or server configured to send early hints — Cloudflare, Fastly and Akamai support it, and Node.js has
response.writeEarlyHints()since 18.11. - Chromium browsers act on 103 since version 103; Firefox and Safari added partial support later (often preconnect only).
What to do
- Only hint resources the final page will definitely use; unused preloads waste bandwidth and trigger console warnings.
- Early hints only help when there's server think-time to fill. For a fast static page the gain is close to zero.
- Browsers only honour 103 over HTTP/2 or HTTP/3.
Check what a URL returns
Print just the status line from the command line, or check a whole list of URLs at once, with their response headers, in the HTTP Status Checker.
curl -sI https://example.com/your-path | head -n 1
Frequently asked questions
Is 103 Early Hints the same as HTTP/2 server push?
No. Push sent resource bytes unasked and was removed from Chrome in 2022 because it often wasted bandwidth. Early Hints only tells the browser what to fetch; the browser decides, and can use its cache.
How do I send 103 from Node.js?
Call response.writeEarlyHints({ link: '</style.css>; rel=preload; as=style' }) before writing the final response (Node 18.11 or later).