Don't like ads? Go Ad-Free Today

CSS Custom Property Extractor

DeveloperText
ADVERTISEMENT · REMOVE?
Defined: 0  ·  Used but never defined: 0
Each entry shows the variable name and where it was referenced.
ADVERTISEMENT · REMOVE?

Guide

CSS Custom Property Extractor

CSS Custom Property Extractor

Paste any CSS or SCSS stylesheet and instantly get a clean, sorted, deduplicated list of every --custom-property declared in it — along with the selector scope it was declared in. The extractor also surfaces variables that are referenced via var(--name) but never declared anywhere, which are a common cause of broken styles in large design systems.

How to Use

  1. Paste your stylesheet into the CSS / SCSS Input box (or click Try an example to load a sample).
  2. Pick an Output Format: a plain-text table, a JSON object, or a ready-to-paste :root { } block.
  3. Use the Filter field to narrow the result by variable name, value, or scope.
  4. Toggle Include selector scope to control whether the table shows where each variable was declared.
  5. Review the Undefined Variables panel for any var(--name) references that have no matching declaration.
  6. Copy or download the extracted list with the buttons on the output panel.

Features

  • Brace-aware parser – walks the stylesheet character by character so it correctly handles nested selectors, media queries, and quoted values.
  • Scope tracking – each variable is paired with the selector or at-rule it was declared in, so you can tell a :root token apart from a component-scoped override.
  • Three output formats – plain-text table for review, JSON for programmatic use, and a clean :root { } block you can paste back into a stylesheet.
  • Undefined variable detection – flags any var(--name) that has no matching declaration anywhere in the input.
  • Live filter – type to narrow the result by variable name, value, or selector scope in real time.
  • Dedupe and sort – duplicate declarations within the same scope are collapsed and the list is alphabetised for quick scanning.
  • Runs entirely in your browser – nothing is uploaded; works on private and unfinished stylesheets.

When to Use This Tool

  • Auditing a design-system stylesheet to build a master list of tokens.
  • Migrating SCSS variables to native CSS custom properties.
  • Tracking down a broken style caused by a misspelled var() reference.
  • Generating a starter :root { } block from a third-party theme.
  • Exporting tokens as JSON for use in a documentation site or Storybook entry.

FAQ

  1. What is a CSS custom property?

    A CSS custom property (also called a CSS variable) is an author-defined identifier prefixed with two dashes (for example, --color-primary) whose value can be reused anywhere in the stylesheet through the var() function. Unlike preprocessor variables, custom properties are resolved at runtime by the browser, which means they cascade and inherit just like any other CSS property and can be updated dynamically with JavaScript.

  2. How does selector scope affect a custom property?

    A custom property exists only within the subtree of the element that declares it. Declaring it on :root makes it effectively global because :root matches the html element, while declaring it inside a component selector like .card limits its value to that component and its descendants. The same name can hold different values in different scopes, which is the mechanism behind theming, dark mode toggles, and component-level overrides.

  3. Why does CSS not error when var() points to an undefined custom property?

    The CSS Custom Properties specification requires the browser to fall back silently when a referenced variable has not been declared. If var() has no fallback argument, the entire property is treated as if it has the value unset, which often leaves an element with its initial or inherited style. Because no error is reported in the console, undeclared references are easy to miss, and surfacing them up front prevents subtle visual regressions.

  4. Are SCSS variables and CSS custom properties the same thing?

    They share a similar role but live at different stages of the pipeline. SCSS variables, written with a dollar sign such as $color-primary, are resolved when SCSS is compiled to CSS and disappear from the final output. CSS custom properties prefixed with two dashes survive compilation and are evaluated by the browser at render time, which is what enables runtime theming and JavaScript-driven updates.

  5. Can a custom property be redeclared and what happens then?

    Yes. When the same custom property is declared more than once for the same element, the normal CSS cascade decides which declaration wins, taking specificity, source order, and importance into account. Inside a single rule the last declaration overrides the earlier ones, which is the same conflict-resolution behaviour that applies to any other CSS property.

Want To enjoy an ad-free experience? Go Ad-Free Today

Install Our Extensions

Add IO tools to your favorite browser for instant access and faster searching

Add to Chrome Extension Add to Edge Extension Add to Firefox Extension Add to Opera Extension

Scoreboard Has Arrived!

Scoreboard is a fun way to keep track of your games, all data is stored in your browser. More features are coming soon!

ADVERTISEMENT · REMOVE?
ADVERTISEMENT · REMOVE?
ADVERTISEMENT · REMOVE?

News Corner w/ Tech Highlights

Get Involved

Help us continue providing valuable free tools

Buy me a coffee
ADVERTISEMENT · REMOVE?