SCSS to CSS Converter
Compile SCSS to plain CSS right in your browser. This converter handles the SCSS features you reach for most: it resolves $variable declarations (including variables used inside values), expands nested rules and the & parent reference into full selectors, strips // line comments, and inlines simple @mixin definitions wherever they are @included. The result is standards CSS you can paste straight into a stylesheet. It is a fast, dependency-free compile — no Dart Sass, no build step, nothing uploaded.
How to use the SCSS to CSS Converter
Paste your SCSS into the input and click Compile — the CSS also refreshes as you type. Use Example to load a snippet with a few $ variables, a nested rule, a &:hover and a mixin, then Copy to grab the output. The compiler runs four passes over your source: it strips // comments, collects every $variable and @mixin, inlines each @include, substitutes the variable values, and finally flattens the nesting.
Nesting is the feature that changes shape the most. A rule written inside another becomes a descendant selector — .card { .title { … } } compiles to .card .title { … } — while the & parent reference is replaced in place, so &:hover under .card becomes .card:hover and &.active becomes .card.active. Variables resolve everywhere they appear, including inside values and other variable declarations, and @mixin name(args) { … } blocks are inlined at each @include name(args); with positional arguments substituted for the parameters. @media blocks are preserved and their inner rules flattened against the surrounding selector. Anything the compiler does not recognise is kept verbatim with a short /* note */ so you can spot it, rather than having the compile fail.
What SCSS adds on top of CSS
SCSS is the most widely used syntax of Sass, a CSS preprocessor that adds programming-language features to stylesheets. Three of those features carry most of the day-to-day value. Variables, written with a $ prefix ($brand: #3b82f6;), let you name a value once and reuse it, so a palette or spacing token lives in one place. Nesting lets you write child and state rules inside their parent, mirroring the structure of your markup and cutting repetition of the parent selector. The & parent reference makes nesting precise: it stands in for the full compiled selector of the enclosing rule, which is how you attach pseudo-classes (&:hover), modifier classes (&.is-open), or BEM-style suffixes without breaking out of the nest.
Mixins go a step further, packaging a group of declarations under a name you can reuse with @include, optionally parameterised so the same pattern adapts to different inputs. Together these features make large stylesheets more maintainable, but browsers do not understand any of them — SCSS must be compiled down to the plain CSS rules a browser can parse. That compile step is normally handled by the Dart Sass toolchain in a build pipeline.
This tool is a deliberately lightweight, in-browser compiler for the common subset above, not a full Sass implementation. It is ideal for quickly seeing what a snippet expands to, converting a small file, or learning how nesting and the & reference resolve, without installing a toolchain. It does not implement the full language — control directives like @if/@each/@for, functions, @use/@forward modules, maps, @extend and operators are out of scope — so for production builds of a large codebase you still want real Dart Sass. If you only need to flatten or re-nest already-plain CSS, the CSS nesting converter handles that both ways.
Common use cases
- Inspecting a snippet — see exactly what some SCSS compiles to without spinning up a build or installing Sass.
- One-off conversions — turn a small SCSS file or component into plain CSS to drop into a project that has no preprocessor.
- Learning nesting and & — watch how nested rules and parent references flatten into real selectors as you edit.
- Debugging selector output — confirm that a deeply nested rule resolves to the descendant selector you expect.
- Extracting computed values — resolve a chain of
$variablesto the literal colors and lengths they produce. - Sharing portable CSS — hand someone plain CSS from your SCSS source when they cannot run your toolchain.