Informational
103

Early Hints

The server sends preliminary response headers before the final response to help the client start loading resources sooner.

# Quick Definition

The 103 Early Hints status code is an informational response that allows a server to send preliminary headers (most commonly Link headers with rel=preload) before the final response is ready. This lets the browser begin fetching critical resources like stylesheets, fonts, and scripts while the server is still generating the full response.

# When Does a 103 Response Occur?

A 103 Early Hints response is sent when the server knows which resources the client will need but hasn't finished preparing the final response body. This is common when the server needs time for database queries, API calls, or template rendering, but already knows the page will require certain CSS, JavaScript, or font files.

Defined in RFC 8297, this is a relatively new status code. The server sends one or more 103 responses followed by the actual final response (typically a 200 OK). CDNs and edge servers like Cloudflare can also generate 103 responses on behalf of origin servers.

# Common Use Cases

# Best Practices

  1. Only hint critical resources -- Limit Early Hints to render-blocking CSS, key fonts, and essential JavaScript. Too many hints can overwhelm the browser's preload scanner.
  2. Use with HTTP/2 or HTTP/3 -- Early Hints work best over multiplexed connections. Some HTTP/1.1 intermediaries may not handle multiple informational responses correctly.
  3. Pair with CDN support -- Services like Cloudflare can automatically send 103 responses from the edge, saving the round trip to your origin server.
  4. Test across browsers -- Verify that your target browsers support 103 Early Hints. Unsupported clients will simply ignore the informational response.
  5. Match hints to final response -- Ensure the resources hinted in 103 match what the final HTML actually references. Mismatched hints waste bandwidth.

# HTTP Example

Request
GET /page HTTP/1.1
Host: example.com
Accept: text/html
Early Hints Response
HTTP/1.1 103 Early Hints
Link: </styles/main.css>; rel=preload; as=style
Link: </scripts/app.js>; rel=preload; as=script
Link: </fonts/inter.woff2>; rel=preload; as=font; crossorigin
Final Response
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Link: </styles/main.css>; rel=preload; as=style

<!DOCTYPE html>...

# Related Status Codes

# Frequently Asked Questions

Which browsers support 103 Early Hints? +
Chrome (version 103+), Edge, and other Chromium-based browsers support 103 Early Hints. Firefox has partial support. Safari does not yet fully support it. Server support is available in Cloudflare, Fastly, and Apache. Always test your implementation across target browsers.
Is 103 Early Hints the same as HTTP/2 Server Push? +
No, they are different mechanisms. HTTP/2 Server Push sends the actual resource data without the client requesting it, while 103 Early Hints only sends headers hinting that the client should start fetching certain resources. Early Hints is lighter-weight, easier to implement, and works well with CDNs. HTTP/2 Server Push has been deprecated in Chrome due to its complexity and performance issues.
Can 103 Early Hints be used with HTTP/1.1? +
Technically the RFC allows it, but in practice 103 Early Hints works best with HTTP/2 and HTTP/3. Some HTTP/1.1 clients and intermediaries may not handle informational responses correctly, which can cause issues. Most implementations target HTTP/2+ connections for Early Hints.

Monitor your WebSocket connections

Track uptime, performance, and response times for all your endpoints around the clock.

Start Free Monitoring