Static Unused CSS Selector Report

Compare supported CSS selectors with a supplied HTML snapshot, separating unmatched candidates from unknown states.

Inputs stay on your device No sign-up Free to use
How this works

The tool runs in this browser. Your file or text is not uploaded to UseFreeTools. Check this tool's limits for anything it may save on your device.

Privacy details

Review selector usage controls

Up to 100,000 characters, 200 rules and 400 selectors. Comments and simple style rules are read; @import is refused and never fetched.

A saved page or a fragment. The detached parser never runs scripts and never requests images or stylesheets.

Processed in your browser. Your inputs stay on this device.

Showing a generated example. Generate again for a new result.

How to use Static Unused CSS Selector Report

  1. Paste the stylesheet and the HTML snapshot to be compared.
  2. Run the bounded static matcher without applying styles or fetching imports.
  3. Review unmatched candidates alongside unsupported/dynamic cases before any removal.

Example: Static Unused CSS Selector Report

Compare supported CSS selectors with a supplied HTML snapshot, separating unmatched candidates from unknown states.

You add
Stylesheet: "body{margin:0;font-family:system-ui,sans-serif}\n.card{border:1px solid #ddd}\n.card .title{font-weight:700}\n.unused-badge{color:#b00}\n#missing-id{color:blue}\na:hover{color:green}\n[data-state=\"open\"] .panel{display:block}\n@media (min-width:600px){.card{padding:1rem}}\n@import url(\"https://example.com/extra.css\");" Static HTML snapshot: "<!doctype html>\n<html lang=\"en\"><head><meta charset=\"utf-8\"><title>Snapshot</title></head>\n<body>\n <main class=\"card\"><h1 class=\"title\">Ready</h1><p>Text</p></main>\n <div data-state=\"open\"><p class=\"panel\">Panel</p></div>\n</body></html>"
You get
Read 9 rules and matched 10 elements; 2 selectors matched nothing and 3 could not be evaluated.

Options

Snapshot evidence
A selector matching nothing in this input can still be used by another page or runtime state.
Unknown selectors
Unsupported syntax, dynamic pseudo states and unevaluated at-rules remain unknown rather than receiving an unused verdict.

Supported inputs and limits

Up to 100,000 CSS characters, 200 rules and 400 selectors with bounded HTML parsing. Supported static matching subset; no stylesheet application, import request, runtime coverage, shadow-state analysis or safe-removal certificate.

Where your input is processed

This tool processes your input in this browser. Your text and files are not uploaded to UseFreeTools. Check this tool's limits for anything it may save on your device.

An unmatched selector is not safe to delete

Scripts, responsive state, forms, shadow trees and pages outside the snapshot can use a rule. Recheck those contexts in a real application and retain the source stylesheet until review is complete. This report never automatically removes CSS.

Questions about Static Unused CSS Selector Report

Will it remove CSS automatically?

It exports findings without editing your stylesheet.

Are hover states called unused?

Dynamic or unsupported states remain unknown.

Does one snapshot cover every page?

No. Review other pages and runtime states separately.

Project manager: Tony Hines · Content updated 4 October 2026 · Report a problem