Unused CSS/JS checker:How much of your CSS and JavaScript is never used?
Load the page in Chromium with code coverage on and see, file by file, how much of each script and stylesheet the page actually used.
- Free, no account
- Results in under a minute
- Every script and stylesheet on the page
example-shop.hr
WordPress 6.8Sample shop · homepage · mobile Chrome · the same check you get for your own site
5 passed · 0 failed · 0 warnings. Nothing to fix here.
Lab data from Google PageSpeed Insights (Lighthouse 12.8.2) · desktop score 100 · no field data: not enough real Chrome users visit this page yet
Lab (Lighthouse 12.8.2)
| Metric | Value | Rating |
|---|---|---|
| First Contentful Paint | 0.8 s | good |
| Largest Contentful Paint | 0.8 s | good |
| Total Blocking Time | 0 ms | good |
| Cumulative Layout Shift | 0 | good |
| Speed Index | 4.3 s | needs work |
| Time to First Byte | Root document took 30 ms | good |
LCP element: <p>
Field (Core Web Vitals)
Filmstrip
0.4 s
0.8 s
1.2 s
1.6 s
2.0 s
2.4 s
2.8 s
3.2 s
Waterfall · top 1 of 1 requests
- example.com/0 KB
These numbers count every byte that went unused while the page loaded in Chromium, on this page only. The findings below come from Lighthouse, which flags unused code only when removing it would save noticeable load time, so small or late files can pass there and still show up here.
Files by unused code
11 largest · 0 third-party · decoded sizes| File | Type | Size | Unused |
|---|---|---|---|
| example-shop.hr/assets/bundle.js | JS | 125 KB | 123 KB · 99% |
| example-shop.hr/assets/framework.css | CSS | 98 KB | 98 KB · 100% |
| example-shop.hr/assets/style.css?elementor=1 | CSS | 1 KB | 1 KB · 55% |
| example-shop.hr/assets/style.css | CSS | 1 KB | 1 KB · 55% |
| example-shop.hr/assets/style.css?woocommerce=1 | CSS | 1 KB | 1 KB · 55% |
| example-shop.hr/assets/jquery-1.12.4.min.js | JS | 1 KB | 1 KB · 12% |
| example-shop.hr/assets/app.js | JS | 1 KB | 1 KB · 0% |
| inline code in the page | JS | 1 KB | 1 KB · 0% |
| example-shop.hr/assets/app.js?gtm=1 | JS | 1 KB | 1 KB · 0% |
| example-shop.hr/assets/app.js?fbq=1 | JS | 1 KB | 1 KB · 0% |
| example-shop.hr/assets/app.js?hotjar=1 | JS | 1 KB | 1 KB · 0% |
What we found
Everything this tool checks passed.
Show 5 passed checks
What this tool checks
Chromium code coverage for every file, plus the time Google estimates you would save.
Unused JavaScript
Measures JavaScript that downloads but never runs, which costs time and data on phones.
Unused CSS
Measures CSS that downloads but is never used on the page, delaying the first render.
Third-party code weight
Measures the size and blocking time of tags, widgets and embeds from other companies.
Render-blocking files
Finds stylesheets and scripts in the head that stop the browser drawing anything until they load.
Main-thread work
Total time the browser spends parsing and running your code, when it cannot respond to visitors.
Long main-thread tasks
Finds scripts that freeze the page for over 50 ms and make taps and scrolls feel unresponsive.
Page builder weight
Measures how much of the page's CSS and JavaScript comes from the page builder.
WordPress plugin weight
Measures how much each plugin adds to the page, since heavy plugins load on every page.
Show 4 more checks
Main-thread work
Total time the browser spends parsing and running your code, when it cannot respond to visitors.
Long main-thread tasks
Finds scripts that freeze the page for over 50 ms and make taps and scrolls feel unresponsive.
Page builder weight
Measures how much of the page's CSS and JavaScript comes from the page builder.
WordPress plugin weight
Measures how much each plugin adds to the page, since heavy plugins load on every page.
How it works
Load with coverage on
The page loads in Chromium with the browser's own code coverage switched on, the same tool the Coverage tab in Chrome DevTools uses.
Count what ran
For every script we count the bytes of functions that ran; for every stylesheet the bytes of rules that matched something on the page. Inline code counts too.
Rank the waste
Files are listed by unused bytes, first party and third party apart, next to Google's estimate of how many milliseconds removing it would save.
Coverage covers one page load without clicks. Code for menus, forms, checkout or other pages shows as unused here even though it is needed later, so treat big shares as a hint to split code, not to delete it.
Questions
Is this really free?
Yes. getReport is funded by donations, not plans. This tool runs the full report and shows you the part it is about; the complete report with all seven modules is one click away, also free.
Can I just delete the unused code?
Rarely all of it. Most unused code on a page is used somewhere else: on another template, after a click, in the checkout. The fix is to load each piece only where it is needed. Split bundles per route, load a component's CSS with the component, delay third-party tags until interaction, and remove plugins and apps nobody uses any more. A theme that ships one giant stylesheet for every page is the classic case: 80 to 95 percent unused on any single page is normal, and splitting it often saves more than any other speed change.
Why do your numbers differ from Chrome DevTools?
We use the same coverage data, but count characters of decoded code during load and settle only. DevTools keeps counting while you click around, so its unused share goes down as you use the page.
What does the third-party column mean?
Files from another company's domain, such as tag managers, chat widgets, video embeds and ad scripts. You cannot shrink them, only decide whether they load and when.
Do you store my results?
The report is kept for 12 months at its shareable link so you can come back to it. Reports are not listed publicly and carry a noindex tag; nothing about your visitors is collected.
Related free tools
All 41 tools →Free, funded by the people who use it
€0 of €75 this month. At €75, site crawl up to 500 pages + weekly re-check switches on for everyone.