103 Early Hints
An interim response that sends Link headers early so the browser can start preloading assets while the server is still building the real response.
At a glance
- Status code
- 103 Early Hints
- Class
- 1xx, informational, an interim response before the real one
- Defined in
- RFC 8297
- Cacheable by default
- no
- Response body
- No body. Carries Link headers only.
In detail
The server has not decided the final status yet, but it already knows which stylesheets, fonts or scripts the page will need. Those go out as Link: rel=preload headers in a 103, and the browser begins fetching them during the server think time.
Worth it when server processing time is measurable and the critical assets are known in advance. It is wasted effort on a response that is already fast, and actively harmful if the hinted assets turn out not to be needed.
Measure before and after. The win shows up in Largest Contentful Paint, not in time to first byte, because time to first byte is measured from the final response in most tools.
Examples
HTTP/1.1 103 Early Hints
Link: </app.css>; rel=preload; as=style
HTTP/1.1 200 OK
Content-Type: text/htmlThings that catch people out
- Hints sent for assets the page does not end up using cost bandwidth and can delay the assets it does use.
- Support depends on the whole chain. A CDN or reverse proxy that buffers the response will drop the 103 and you get no benefit at all.
Try it: HTTP Request Builder
Build a request with any method, headers and body, send it, and read the status line the server returns.
HTTP Request Builder
LOCAL · Browser-OnlyBuild and test HTTP requests with custom headers and body
Authentication
Headers
Generate Code
curl -X GET 'https://api.example.com/endpoint' \
-H 'Content-Type: application/json'Showing a sample URL. Enter your endpoint above to update the snippet.
Related HTTP status codes
All http status codes →100 Continue
The server has read the request headers, is willing to accept the body, and the client should now send it.
200 OK
The request succeeded. What the body contains depends on the method: a GET returns the resource, a POST returns the result of the action.
425 Too Early
The server refuses to process a request sent in TLS 1.3 early data, because early data can be replayed by an attacker.
201 Created
The request succeeded and created one or more new resources. The Location header carries the URL of the primary one.
202 Accepted
The request was accepted for processing but is not finished, and may still fail. Nothing has necessarily happened yet.
203 Non-Authoritative Information
The request succeeded, but a proxy between you and the origin server altered the response body or headers.
Tools for this
- HTTP Request Builder Free online HTTP request builder - build and test HTTP requests with custom headers and body
- HTTP Headers Checker Free online HTTP headers checker - view HTTP response headers for any URL