scss-to-css
What scss-to-css actually does
This is a flattener, not Sass. It resolves nesting into full selectors, expands the parent selector including the BEM forms, substitutes variables it has seen, and inlines a mixin body at the include. What it cannot do is evaluate: a color function, an @if branch, an @each loop and a user @function are arithmetic, and arithmetic needs the compiler. The difference matters because the common failure in this category is silent. A converter that meets something it cannot handle and quietly emits nothing hands back a stylesheet with rules missing, exits successfully, and gives the reader no reason to look. That is a real defect this tool carried until 2026-08-22: a declaration written without its final semicolon, which is legal CSS and is what every minifier emits, was dropped along with everything after it, so a single-line stylesheet came back empty with a success status. A declaration now ends at a semicolon or at the closing brace, whichever comes first, which is what the CSS Syntax specification says. Beside the result there is a line diff and a checks panel that counts braces and colons in the produced text with code that never saw the converter, so a stylesheet that lost half its rules shows the loss as a number rather than as a feeling.
How to use it
- Paste the SCSS, or drop a .scss file on the left pane. It is read in this tab and nothing is uploaded.
- Press Convert, or cmd+enter. The script that runs is the same file the command line runs, executed here.
- Read the result on the right. It is a text field, not a display, so an adjustment can be made before anything is copied.
- Switch to Diff to see which lines the flattening removed and which it added, counted per line.
- Switch to Checks for the brace balance, the declaration count and the ratio of output lines to source lines.
- Copy or download what is in the pane. Restore puts back exactly what the converter produced, edits and all discarded.
Useful for
- Take one component out of a Sass codebase and drop it into a page that has no build step.
- Read what a nested block actually compiles to, when a selector is winning or losing a specificity argument and the nesting is hiding why.
- Check a stylesheet a converter already processed, by pasting the output back and reading the brace and colon counts.
- Flatten a snippet from documentation or an answer site that assumes a Sass pipeline you do not have.
Limits worth knowing
- Color and maths functions are copied through unevaluated. darken($c, 10%) arrives in the CSS as darken(#0a7, 10%), which is not a valid CSS value; it is left visible rather than guessed at.
- @if takes its first branch and marks the @else as skipped in a comment. @for and @each emit one iteration, also marked. Neither is evaluated.
- A @function is reported as unsupported rather than called.
- @import is passed through as a statement; no file is fetched.
- @extend and placeholder selectors are handled structurally, not by the Sass unification rules, so the output may differ from a real compiler on a shared placeholder.
- The checks panel counts structure. It does not know whether a property name is real or whether a value is valid for it.
Questions people ask
undefined
undefined
undefined
undefined
undefined
undefined
undefined
undefined