103

Early Hints

1xx Informational

ELI5

The server is giving the browser a head start: 'You’ll probably need these files, so start getting them while I finish the real response.'

Server perspective

Use 103 when you can safely send helpful headers, especially Link hints, before the final response is ready.

When to use

  • Return 103 to advertise critical preload or preconnect work early
  • Use it only for hints that remain sensible even before the final response arrives
  • Use it as a performance optimization, not as part of the application's success or error contract
  • Sending Link preload or preconnect hints before the final HTML response is ready
  • Helping browsers start fetching critical assets earlier
  • Reducing page load time when the server already knows which subresources will be needed

How to respond

  • Send the early hint headers first, then follow with the normal final response
  • Hint only headers the client can safely evaluate speculatively, and keep them broadly consistent with the eventual representation
  • You may send multiple 103 responses as new hints become available before the final response, but most browsers only process the first one; additional 103 responses are ignored by browser clients

Headers to consider

  • Link is the common choice for preload or preconnect hints; only send other headers when clients can safely treat them as speculative hints rather than final-response metadata.

Response body

  • Do not include a response body in a 103 response.

Server-side pitfalls

  • Do not expose sensitive or misleading hints before the final response is known
  • Do not overuse preloads that waste bandwidth or contention on the client
  • Do not rely on 103 to carry semantics that must affect how the client interprets the final response
  • Do not send 103 responses over HTTP/1.1 unless every client and intermediary in the chain is verified to handle informational responses correctly; RFC 8297 recommends using HTTP/2 or later for Early Hints
  • Do not send hints when the request may result in a cross-origin redirect; clients must discard 103 hints received before a cross-origin redirect, wasting any preload work already started
  • As a replacement for the final response
  • When the hinted resources are speculative enough to waste bandwidth
  • For application semantics that depend on the final status code or full response body

Examples

HTML page with critical stylesheet

Request:GET https://api.example.test/dashboard
Response 1:103 Early Hints # Headers Link: </styles/dashboard.css>; rel=preload; as=style
Response 2:200 OK # Headers Content-Type: text/html; charset=utf-8 # Body <!doctype html> <html><body>Dashboard</body></html>

The browser can start fetching the stylesheet before the server finishes rendering the page.

References

Related Status Codes