Start a project

Tool 55 of 194 · CSS

CSS Custom Property Graph

See how your CSS custom properties depend on each other, and find the cycles, missing tokens and dead variables before they bite.

CSS Custom Property Graph

Your CSS

Paste your design tokens and the rules that use them. Everything is analysed in your browser.

Dependency graph

    Every custom property

    PropertyValue at :rootUsesDefined inStatus

    Overrides by theme and context

    PropertyContextValueWhere

    Resolved tokens

    Resolved values (JSON)

    01

    What it does

    Draws every custom property and the var() references between them, flags cycles, undefined and unused properties, and lists each override by theme or media query.

    • Graph of var() references, laid out in layers from base tokens to the properties that use them
    • Cycles found the way browsers do: every property in a cycle becomes invalid
    • Undefined properties, and fallbacks that are actually being used
    • Unused properties, and overrides by theme class, attribute or media query

    02

    Private by design

    Everything happens in your browser. Nothing you type, paste or upload is sent anywhere, and it keeps working offline once the page has loaded.

    03

    What you get

    A dependency graph, a table of every property, overrides by context and resolved tokens as JSON, with a Copy and a Download button on every result.

    • CSS variables
    • Custom properties
    • Design tokens
    • CSS

    Why it matters

    Custom properties make a design system easy to change, but the chain of var() references grows quietly. A colour defined in terms of another, a spacing token that refers to one that was renamed, two themes that each point at the other: none of these throw an error. The browser just treats the property as invalid and the declaration falls back to its initial value, so a button loses its background with no warning.

    This tool reads your CSS and builds the graph behind it. Each custom property is a node and each var() is an edge, laid out from base tokens at the top to the properties that consume them. Cycles are found with the same rule the CSS spec uses (every property in the cycle is invalid at computed-value time). References to properties that are never defined are flagged, with a note when a fallback value saves them. Properties that are defined but never read are listed as dead weight. Overrides inside theme selectors, attribute selectors and media queries are shown per context, and the resolved :root values download as JSON tokens.

    How to use it

    1. Paste your CSS: tokens plus the rules that use them.
    2. Read the summary for cycles, undefined and unused properties.
    3. Follow the graph to see what depends on a token before you change it.
    4. Check the overrides table for each theme, and download the resolved tokens.

    FAQ

    What happens when CSS variables form a cycle?

    Every property in the cycle becomes invalid at computed-value time, so any declaration that uses one behaves as if it were unset. Browsers don't log an error, which is why cycles are easy to miss.

    Does it understand fallbacks like var(--a, red)?

    Yes. If --a is never defined the fallback is used, and the tool shows that the fallback is doing the work.

    Can it see variables set from JavaScript or inline styles?

    No. It reads the CSS you paste. Properties set by script or in style attributes will show as undefined, so treat those as a prompt to check.

    Is my CSS uploaded?

    No. It's parsed in your browser and nothing is sent anywhere.

    Work with me

    Want a site that gets these right?

    I build fast, accessible websites and web apps that pass these checks from day one. Tell me about your project and I'll reply personally with honest next steps.

    All developer tools · Back to leej.uk