103 Early Hints

An interim response carrying Link headers so the browser can start preloading assets before the final response is ready.

Status

HTTP/1.1 103 Early Hints

Details

103 Early Hints exists to fill the dead time while a server assembles a page. The server flushes a 103 containing Link headers with rel=preload or rel=preconnect, the browser starts fetching stylesheets, fonts, and scripts immediately, and the real 200 with the HTML follows once the backend finishes. On slow backends this can remove hundreds of milliseconds from largest contentful paint.

Hints are advisory. The final response is not required to include the same links, and a client is free to ignore the 103 entirely. Support is real in Chrome and in CDNs such as Cloudflare and Fastly, but any intermediary that does not understand interim responses will drop them, so the technique must degrade cleanly.

Headers

Common causes

How to fix it

As the client

As the server

Examples

GET /product/12345 HTTP/1.1
Host: shop.example.com

HTTP/1.1 103 Early Hints
Link: </css/app.css>; rel=preload; as=style
Link: </fonts/inter.woff2>; rel=preload; as=font; crossorigin

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Link: </css/app.css>; rel=preload; as=style

Notes for proxy users

Early hints reach the client only if every hop forwards interim responses. Scraping through a proxy pool, expect them to be dropped, which is harmless: the final response still carries everything needed.

Specifications

RFC 8297

See also