What changes when LESS becomes SCSS?
Three things: variable sigils (@primary becomes $primary), mixin call syntax (.clearfix() becomes @include clearfix()), and a few function-name differences (LESS percentage(), unit() vs Sass equivalents). Nesting, parent-references (&), media queries, and pseudo-classes look the same in both languages, so most of the file stays untouched.
Why migrate from LESS to SCSS at all?
SCSS / Sass is the more actively-developed preprocessor — Dart Sass ships frequent releases, while LESS development has slowed. Most modern frameworks (Bootstrap 4+, Material UI, Tailwind compatibility tooling) target SCSS. If your team is reaching for new frontend tooling, an SCSS codebase has more options. The converter gets you to a working .scss file in seconds.
How does the variable conversion work?
The converter rewrites @name: value declarations as $name: value, and @name references as $name. Trailing colons are preserved (so @primary: #fff becomes $primary: #fff), and bare uses inside expressions like background: @primary become background: $primary. The compiled CSS is identical.
What about LESS mixin calls like .clearfix()?
LESS treats any class with a parameter list as a mixin call — .clearfix() invokes a previously-defined .clearfix() ruleset. SCSS uses explicit @mixin / @include syntax. After conversion, manually rewrite .clearfix() calls as @include clearfix(); the converter highlights candidates but cannot infer mixin definitions perfectly without a full LESS parse.
Does the converter handle parameterised mixins?
Variable references inside mixin definitions are translated (@param becomes $param). The mixin signature itself often needs a small rewrite: LESS .border-radius(@r) becomes SCSS @mixin border-radius($r). After conversion, review each mixin definition and prepend @mixin to make it valid SCSS.
What about LESS color functions like darken() and lighten()?
darken(), lighten(), spin(), saturate(), desaturate(), and mix() exist in both LESS and Sass with the same signatures. These pass through unchanged. Note: modern Dart Sass deprecates darken() / lighten() in favour of color.adjust() and color.scale() — the legacy names still work but consider migrating long-term.
Are LESS @import statements converted?
Yes. @import statements work the same way in SCSS — the converter leaves them as-is. Note that modern SCSS recommends @use and @forward over @import for namespacing, but @import remains supported. If you want to switch to @use during migration, do it as a separate manual pass after conversion.
Is my LESS source uploaded?
No. The conversion runs entirely in your browser as JavaScript. Stylesheets — including legacy Bootstrap 3 customisations or proprietary brand themes — never leave your machine. Open DevTools and verify: clicking Run makes zero network requests.