saturate($color, $amount) increases a legacy color’s HSL saturation by a fixed percentage (0%–100%) and returns a new color. It is a global built-in — there is nocolor.saturate().
Risky when saturation is already high (see Example 2).
Example 2 — High Saturation + Large Amount → Full (Official Docs)
Saturation 80% plus 30% clamps to fully saturated.
SCSS
// #0e4982 has saturation 80%, so when saturate() adds 30% it just becomes
// fully saturated.
@debug saturate(#0e4982, 30%); // #004990
.deep {
color: saturate(#0e4982, 30%);
}
Compiled CSS
.deep {
color: #004990;
}
How It Works
#0e4982 saturation is 80%.
Add 30% → past 100% → fully saturated #004990.
You asked for “a bit punchier” and maxed the dial.
Classic reason official docs discourage saturate.
Example 3 — Prefer color.scale() (Official Docs)
Relative saturation keeps headroom; compare the full-sat trap side by side.
SCSS
@use "sass:color";
// scale() instead makes it 30% more saturated than it was originally.
@debug color.scale(#0e4982, $saturation: 30%); // #0a4986
.report {
--saturate: #{saturate(#0e4982, 30%)};
--scale: #{color.scale(#0e4982, $saturation: 30%)};
}
Deprecated: fixed HSL saturation addition on legacy colors.
Prefer color.scale for “percent more saturated.”
Use color.adjust when you must match old pixels.
No module form — there is no color.saturate().
One line: learn saturate to read legacy SCSS; write scale (or adjust) in new code.
Migrate
Migrate Notes
Conceptual flow:
flow.txt
1. Find saturate($color, $amount)
2. Want "% punchier"? → color.scale($color, $saturation: $amount)
3. Need same pixels? → color.adjust($color, $saturation: $amount, $space: hsl)
4. @use "sass:color"
5. Delete the global saturate() call
Frequently Asked Questions
saturate($color, $amount) increases a legacy color’s HSL saturation by $amount (0%–100%). Example: saturate(#c69, 20%) is #e05299; saturate(#0e4982, 30%) is fully saturated #004990.
Yes. Official Sass docs list it under Deprecated Functions and omit it from the sass:color module. Prefer color.scale() for relative saturation, or color.adjust($color, $saturation: $amount, $space: hsl) to keep the old math.
Because saturate() is usually not the best way to raise saturation, it is not included in the new module system. Use color.scale or color.adjust instead.
saturate adds a fixed saturation amount (80% + 30% becomes fully saturated). color.scale($c, $saturation: 30%) makes the color 30% more saturated than it was, which is usually what designers want.
No for modern spaces. Official docs require a legacy color space (rgb, hsl, or hwb). Convert first, or use color.scale / color.adjust with an explicit $space.
For the same fixed addition: color.adjust($color, $saturation: $amount, $space: hsl) on Dart Sass 1.79+. For better relative saturation: color.scale($color, $saturation: $amount).