# Your server knows what the browser needs before the HTML arrives. Early Hints tells it.

HTTP 103 Early Hints lets your server push preload and preconnect directives while it&#39;s still building the response. Most servers support it. Almost nobody uses it.

Author: J.A. Watte
Published: April 30, 2026
Source: https://jwatte.com/blog/blog-tool-early-hints/

---

When a browser requests a page, your server starts building the HTML response. That takes time. Database queries, template rendering, API calls. During that entire window, the browser is sitting idle, waiting.

HTTP 103 Early Hints changes that. Your server can send a preliminary response with Link headers before the final 200 response is ready. The browser sees those Link headers and immediately starts fetching critical resources like stylesheets, fonts, and preconnect targets.

This is dead time recovered. The browser was going to wait anyway. Now it's warming up connections and downloading assets while your server finishes its work.

## How it works

The flow is simple:

1. Browser sends GET request
2. Server immediately returns `103 Early Hints` with `Link: </style.css>; rel=preload; as=style`
3. Browser starts fetching style.css
4. Server finishes building the page, returns `200 OK` with the HTML
5. When the HTML references style.css, it's already downloaded or in progress

RFC 8297 defined this in 2017. Chrome supported it in 2022. Cloudflare, Fastly, and nginx all support sending 103 responses. But adoption is still minimal because most frameworks don't surface it and most developers don't know it exists.

## The performance difference

The gains are proportional to your server think time. If your server takes 50ms to build a response, Early Hints saves you very little. If it takes 300-500ms (common for dynamic pages hitting databases and APIs), that's 300-500ms of browser idle time converted into parallel asset fetching.

For pages with render-blocking CSS and web fonts, that's often the difference between a 2.0s and a 1.5s LCP. No code changes. No architecture overhaul. Just a configuration change on your server or CDN.

## What the tool checks

The [Early Hints 103 Audit](/tools/early-hints-103-audit/) probes your URL and checks whether your server sends 103 responses, what Link headers it includes, and whether those links match the critical resources your page actually needs. It also checks for `Link: preload` and `Link: preconnect` in your final 200 response headers, since those accomplish similar goals without the 103 dance.

If your server doesn't send Early Hints, the tool shows you what the configuration would look like for common setups: Cloudflare, nginx, Apache, Caddy, and Node.js.

It pairs well with the [Preconnect Hints Hygiene Audit](/tools/preconnect-hints-hygiene-audit/) for validating that the connections you're warming up are ones the page actually uses.

If you're spinning up sites on a budget and want to know which performance optimizations are worth the setup cost, *The $97 Launch* ranks them by impact per hour of effort.

## Fact-check notes and sources

- RFC 8297 "An HTTP Status Code for Indicating Hints": [IETF RFC 8297](https://www.rfc-editor.org/rfc/rfc8297)
- Chrome 103 Early Hints support shipped in Chrome 103 (June 2022): [Chromium blog](https://developer.chrome.com/blog/early-hints/)
- Cloudflare Early Hints support: [Cloudflare docs](https://developers.cloudflare.com/cache/advanced-configuration/early-hints/)
- Shopify reported 1-4% LCP improvement from Early Hints: Chrome Dev Summit 2022

## Related reading

- [Preconnect hints hygiene](/blog/blog-tool-preconnect-hints-hygiene-audit/)
- [Edge cache effectiveness](/blog/blog-tool-edge-cache/)
- [CrUX field data and real-user performance](/blog/blog-tool-crux-field-data/)
- [Critical CSS and render-blocking resources](/blog/blog-tool-critical-css/)

*This post is informational, not performance-consulting advice. Mentions of Chrome, Cloudflare, Shopify, and IETF are nominative fair use. No affiliation is implied.*

---

Canonical HTML: https://jwatte.com/blog/blog-tool-early-hints/
RSS: https://jwatte.com/feed.xml
JSON Feed: https://jwatte.com/feed.json
Hero image: https://jwatte.com/images/blog-tool-early-hints.webp
