How to audit Resource Hints
An effective hint starts the required connection or fetch earlier, is reused by its real consumer, and does not take bandwidth from CSS, LCP, or other critical requests.
Quick Chrome check
- In DevTools → Network, enable Disable cache and use the same mobile network and CPU profile.
- Show Priority and Initiator, clear the log, and reload.
- For
preconnect, compare DNS, Initial connection, and SSL timing with the first request to that origin. - For
preload/modulepreload, verify an early start, correct type, and reuse by the same URL without another download. - Open Console and wait for warnings about a preload not used soon after page load.
- Record several traces without and with the hint on mobile and desktop; compare LCP and other critical-resource starts.
Good result
The critical connection or resource starts earlier, the consumer reuses the request, there are no duplicates or warnings, and LCP and neighboring critical requests do not regress.
Classify the result
| Observation | Rating | Action |
|---|---|---|
| Hint is used, request starts earlier, no contention | No issue | Keep it and save the trace |
dns-prefetch/preconnect has no measurable benefit at little cost | Low | Remove or retest on a slow network |
Unused preload, wrong as/CORS, or duplicate fetch | High | Correct the match or remove the hint |
| Many hints delay CSS/LCP or break loading | Critical | Roll back and restore a minimal set |
Inventory the DOM
[...document.querySelectorAll('link[rel]')]
.filter(link => /^(preconnect|dns-prefetch|preload|modulepreload|prefetch)$/.test(link.rel))
.map(link => ({ rel: link.rel, href: link.href, as: link.as,
type: link.type, crossOrigin: link.crossOrigin, media: link.media }));This lists hints in the current DOM only. Also inspect HTTP Link headers and source HTML: a dynamically inserted hint may have arrived too late.
Evidence to save
- Exact URL, viewport, network/CPU profile, and cache state.
- Hint source: source HTML, DOM, or HTTP Link header.
- Request URL, Priority, Initiator, start time, and connection timing.
- Reuse or duplicate evidence and exact Console warning.
- LCP and waterfall before/after under identical conditions.
- Decision, owner, and retest date.
False conclusions and scope
A warm cache hides DNS/TCP/TLS; HTTP/2 and HTTP/3 may coalesce connections; same-origin preconnect is generally useless. Browsers may ignore prefetch, while Service Workers, extensions, and network variance alter traces. One lab run is insufficient.
An unused warning can indicate a mismatched URL, destination, CORS mode, or media condition, not merely an unnecessary tag. This audit does not replace font, image, LCP, CDN/TTFB, or bundle-architecture analysis.
Next step
If the issue is confirmed, follow the implementation guide. For implementation with metric validation, use the configuration service.