HTTPfy

103 Early Hints

Interim response carrying Link headers so the browser can preload or preconnect before the final response is ready.

103 at a glance

Code
103
Name
Early Hints
Class
1xx Informational
Status
IANA-registered standard code
Defined in
RFC 8297, Section 2
Cacheable by default
No. Interim (1xx) responses are never stored by caches.

What 103 means

103 Early Hints (RFC 8297) lets a server, or a CDN in front of it, send Link: rel=preload and rel=preconnect headers while the application is still building the page. The browser starts fetching CSS, fonts or connecting to third-party origins during "server think time", which improves Largest Contentful Paint. The final 200 follows on the same request.

What typically causes a 103

  • Cloudflare Early Hints, which caches Link headers from earlier 200 responses and replays them as a 103.
  • Frameworks and servers that support it natively (nginx 1.29+ with early_hints, H2O, Node.js response.writeEarlyHints(), Rails).

Fix it on the server

  • Only hint resources the page really needs; unused preloads waste bandwidth.
  • Chrome acts on 103 for top-level navigations over HTTP/2 and HTTP/3, and only for preconnect and preload hints.
  • Some older HTTP/1.1 clients mis-handle interim responses, so many servers send 103 only over HTTP/2+.

Fix it as a client or visitor

  • Nothing to fix: clients that do not understand 103 must ignore it. In DevTools the hinted requests show "Early Hints" as initiator.

Headers that go with 103

HeaderRole
LinkResources to preload or origins to preconnect, e.g. </style.css>; rel=preload; as=style.

Example response

HTTP/1.1 103 Early Hints
Link: </style.css>; rel=preload; as=style
Link: <https://cdn.example.com>; rel=preconnect

HTTP/1.1 200 OK
Content-Type: text/html

Opens the HTTP headers tool with your URL filled in; it shows the status line and headers of every redirect hop.