# 103 Early Hints

> https://http-status.org/docs/103

**Family:** 1xx Informational

## Rationale

Interim response: the server sends preload or connection hints before the final response is ready.

## In Plain Terms

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.'

## Description

The HTTP 103 Early Hints status code is an interim response that lets a server send likely useful response headers, especially Link hints, before the final response is ready.

## Server Perspective

### Usage
- 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

### Implementation
- 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

### Common Headers
- 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.

### Body
- Do not include a response body in a 103 response.

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

## Client Perspective

### Pitfalls
- Do not treat 103 as a successful final response
- Early-hint processing must not affect how the final response is processed beyond safe performance optimizations
- Do not assume headers missing from 103 are absent from the final response

## Examples

### HTML page with critical stylesheet

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

**Request:**
```
GET https://api.example.test/dashboard
```

**Response:**
```
103 Early Hints
Link: </styles/dashboard.css>; rel=preload; as=style
200 OK
Content-Type: text/html; charset=utf-8

<!doctype html>
<html><body>Dashboard</body></html>
```

## Related Codes

- [100 Continue](/docs/100.md)
- [200 OK](/docs/200.md)
- [304 Not Modified](/docs/304.md)

