# HTTP 103 Early Hints — Status Code Meaning & Examples

> 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
- Defined in: [RFC 8297 — An HTTP Status Code for Indicating Hints](https://www.rfc-editor.org/rfc/rfc8297)

## Example response

```http
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

1. Only hint resources the final page will definitely use; unused preloads waste bandwidth and trigger console warnings.
2. Early hints only help when there's server think-time to fill. For a fast static page the gain is close to zero.
3. Browsers only honour 103 over HTTP/2 or HTTP/3.

## FAQ

### 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).

## Related status codes

- [100 Continue](https://www.devkult.com/http/100.md)
- [200 OK](https://www.devkult.com/http/200.md)
- [101 Switching Protocols](https://www.devkult.com/http/101.md)

Open the interactive page: https://www.devkult.com/http/103