Free Performance Tool
Paste your HTML and CSS to identify which rules are critical for above-the-fold rendering, separate them from deferred styles, and get inline-ready critical CSS output. Reduces render-blocking CSS and improves LCP.
Critical CSS is the minimum set of CSS rules needed to render the above-the-fold content of a webpage — the portion visible to the user before any scrolling. When a browser encounters a <link rel="stylesheet"> in the HTML head, it blocks rendering until the stylesheet is fully downloaded and parsed. On a 3G connection, a 100KB stylesheet can delay First Contentful Paint by 2-4 seconds.
The solution: extract the critical CSS rules, inline them directly in a <style> tag in the head (eliminating the blocking network request), and load the full stylesheet asynchronously after the page renders. This technique directly improves LCP (Largest Contentful Paint) and FCP (First Contentful Paint) — two of Google's Core Web Vitals metrics used as SEO ranking signals.
Studies from Google show that eliminating render-blocking CSS reduces LCP by 0.5–2 seconds on average for pages with large stylesheets. For pages using CSS frameworks (Bootstrap, Tailwind, Bulma), the impact is even larger — a full Bootstrap CSS is 180KB, but the critical CSS for a typical landing page is under 5KB.
01 //
Paste HTML and CSSCopy your page's full CSS and HTML into the two panels. The more complete your HTML, the more accurate the selector matching.
02 //
Extract and reviewThe tool classifies rules by above-fold priority: layout rules, typography, structural elements, and visible components come first.
03 //
Inline in <head>Copy the critical CSS output into a <style> tag in your HTML head. Load the full stylesheet asynchronously using the preload pattern.
To load the full stylesheet non-blocking after critical CSS is inlined:
<!-- In <head>: inline critical CSS -->
How much CSS should I inline as critical?
The commonly cited target is under 14KB for all inlined content (HTML + critical CSS combined) — this fits in the first TCP congestion window and is served in a single round-trip. In practice, critical CSS for most pages is 2-8KB before gzip. If your critical CSS is over 20KB uncompressed, you likely have too many above-fold styles or are including framework CSS that could be scoped more tightly.
What's the difference between this tool and Penthouse or Critical (Node.js)?
Penthouse and Critical spawn a headless Chrome/Puppeteer instance, load your actual page at a specific viewport size, and capture exactly which CSS rules apply to visible elements. They give pixel-accurate results but require Node.js and a build step. This tool uses static selector matching and heuristics — no Node.js, no install, instant results. Use this for quick analysis or when you can't run Node tools. Use Penthouse/Critical in your build pipeline for production accuracy.
Should I extract critical CSS for every page or just the homepage?
Start with your highest-traffic pages and pages with the worst LCP scores (check Google Search Console Core Web Vitals report). The homepage, product listing pages, and article templates typically have the most impact. Each page template can have different critical CSS — a product detail page has different above-fold elements than a blog post. Many teams generate critical CSS per-template during the build process using Penthouse or Critical.
Will inlining critical CSS hurt my cache performance?
Yes, slightly — inlined CSS can't be cached separately from the HTML. The trade-off is nearly always worth it: the LCP improvement from eliminating the render-blocking request outweighs the caching cost, especially on first visit. The full stylesheet still loads asynchronously and gets cached after the first visit. For pages where HTML is heavily cached (SSG/CDN), the impact is even smaller.
<link rel="preload" href="styles.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> with a noscript fallback. Alternatively, use media="print" with an onload swap. Both methods load the stylesheet without blocking rendering, applying it after the page is visible. The loadCSS polyfill handles older browser compatibility.