Summary
Parser-blocking scripts without defer/async, blocking CSS, sync font loading delay FCP/LCP. media attribute on link tags scopes CSS blocking. Module scripts defer by default. Move analytics/ads below fold or load after idle. Every blocking resource in <head> extends critical path.
Code example
<link rel="stylesheet" href="/styles.css" media="print" onload="this.media='all'" />
<script src="/analytics.js" async></script>
<script type="module" src="/app.js"></script>
Key points
- Parser-blocking scripts without
defer/async, blocking CSS, sync font loading delay FCP/LCP. mediaattribute on link tags scopes CSS blocking.- Module scripts defer by default.
- Move analytics/ads below fold or load after idle.
- Every blocking resource in
<head>extends critical path.