HSL to HSV Converter
Convert HSL color values to HSV without touching raw formulas. This tool is useful when you design palettes in HSL but need to match a color picker, graphics library, or API that works in HSV space.
Enter a color in HSL notation and you will see the corresponding HSV values right away. You can tweak hue, saturation, and lightness, then copy the result as hue, saturation, and value percentages for your implementation.
On this page you will find a short explanation of HSL and HSV, a practical version of the conversion algorithm, a step by step walkthrough, a reference table, and answers to common questions about moving between these two models.
What Is HSL
HSL stands for Hue, Saturation, and Lightness. It describes colors in terms that are close to how people talk about them in design work.
Hue selects a position on the color wheel from 0 to 360 degrees. Saturation and lightness are percentages from 0% to 100%. At 0% saturation a color becomes gray, and at 0% or 100% lightness the color collapses to black or white.
Thanks to this structure HSL is convenient for building tone scales, theming, and semantic palettes. You can keep hue constant across related colors and use saturation and lightness to express depth, states, and emphasis.
What Is HSV
HSV stands for Hue, Saturation, and Value. Like HSL it uses a hue angle, but instead of lightness it focuses on value, which is tied more directly to how bright a color appears relative to black.
Hue in HSV is measured in degrees from 0 to 360. Saturation and value are percentages from 0% to 100%. Low saturation pushes the color toward gray, while low value makes the color look darker and closer to black.
HSV is common in color pickers, painting tools, and interfaces where users adjust color intensity and brightness. It often feels more intuitive than raw RGB channels when exploring variations of a base color.
HSL to HSV Conversion Formula
hsl(h, s_l, l) -> hsv(h, s_v, v)
Given:
h in [0, 360)
s_l in [0, 100] // HSL saturation
l in [0, 100] // lightness
1) Normalize HSL values:
s_l' = s_l / 100
l' = l / 100
2) Convert to RGB (intermediate representation):
a) Compute chroma:
c = (1 - |2 * l' - 1|) * s_l'
b) Helper value:
x = c * (1 - |((h / 60) mod 2) - 1|)
c) Temporary triple based on hue sector:
if 0 <= h < 60 then (r1, g1, b1) = (c, x, 0)
else if 60 <= h < 120 then (r1, g1, b1) = (x, c, 0)
else if 120 <= h < 180 then (r1, g1, b1) = (0, c, x)
else if 180 <= h < 240 then (r1, g1, b1) = (0, x, c)
else if 240 <= h < 300 then (r1, g1, b1) = (x, 0, c)
else (r1, g1, b1) = (c, 0, x)
d) Add the offset:
m = l' - c / 2
r' = r1 + m
g' = g1 + m
b' = b1 + m
3) Convert RGB to HSV:
a) Find max and min:
max = max(r', g', b')
min = min(r', g', b')
delta = max - min
b) Value:
v = max
c) HSV saturation:
if max == 0 then s_v' = 0
else s_v' = delta / max
4) Convert to final units:
H = h
S_v = s_v' * 100
V = v * 100In many workflows the converter does not change hue at all. It interprets saturation and lightness as HSL parameters, temporarily computes an RGB color, and then derives saturation and value according to the HSV rules.
Example for hsl(196, 47%, 54%)
1) Normalize and compute chroma for HSL
2) Derive the intermediate RGB color
3) Compute max, min, delta, and v for HSV
4) Final HSV (rounded) might look like:
hsv(196, 59%, 76%)How HSL to HSV Conversion Works Step by Step
Under the hood, converting from HSL to HSV is mostly about changing how you describe the same color. You keep hue in degrees but reinterpret the other two values so they match the value based model instead of the lightness based one.
hsl(210, 39%, 17%)
-> rgb(r, g, b)
-> hsv(h, s, v)Here is a sketch of the process for hsl(210, 39%, 17%).
- Step 1 — Interpret HSL as an RGB color
Turn HSL into an intermediate RGB triplet using the common HSL to RGB formula. At this stage you are still representing exactly the same color, but now in three numeric channels.
h = 210, s_l = 39, l = 17 rgb(26, 43, 60) after rounding - Step 2 — Derive HSV from RGB
Compute the maximum and minimum channel values, then use the spread between them to calculate value and saturation in HSV terms. The hue angle is reused from the original HSL value.
max = max(r', g', b') min = min(r', g', b') delta = max - min v = max if max == 0 then s_v = 0 else s_v = delta / max - Step 3 — Express the result as hsv(h, s, v)
Finally, scale saturation and value to percentages. The resulting HSV triplet describes exactly the same visual color as the starting HSL value, just in a different format.
hsv(210, 57%, 24%)
Once you understand this flow, you can confidently move between HSL and HSV using converter utilities or library helpers instead of repeating the math manually.
When to Use HSL and When to Use HSV
HSL and HSV are two related ways to organize the same color space. They share hue and saturation concepts but use different definitions for the third value.
Where HSL Shines
- Theme and palette design: lightness gives you predictable control when building sets of tints and shades from a single hue.
- Readable specifications: values like
hsl(210, 40%, 20%)are easy to interpret in design documents and code reviews. - Aligning light and dark modes: changing lightness ranges while keeping hue stable helps keep themes visually coherent.
Where HSV Is a Better Fit
- Interactive color pickers: sliders for hue, saturation, and value map directly onto how many tools let users explore colors.
- Fine tuning brightness and intensity: value can feel more natural than lightness in some painting and 3D workflows.
- Working with existing tooling: many graphics and UI libraries expose HSV as their main color adjustment model.
Summary
Use HSL when you design and reason about a system of colors. Use HSV when you integrate with tools, pickers, or APIs that manipulate value and saturation directly.
Practical Tips for Using HSL and HSV Together
In many projects you do not need to pick only one model. It is entirely possible to plan colors in HSL and then convert them to HSV wherever a specific tool requires it.
Define a Clear Workflow
- Keep HSL for design tokens: store brand colors and semantic roles as HSL values that are easy to read and adjust.
- Convert to HSV at integration points: perform conversion only where a picker or engine expects HSV, not across the entire codebase.
Combine With Other Formats When Needed
- Use RGB or HEX for final storage: after adjusting colors in HSL or HSV you can freeze the final values as RGB triplets or HEX strings in CSS.
- Handle alpha as a separate concern: base colors usually work best without transparency; add alpha only for overlays, shadows, or focus states.
Watch for Common Pitfalls
- Mixing many models without a plan: decide where HSL, HSV, RGB, and HEX are used so that future changes stay manageable.
- Relying only on one slider for depth: better palettes often adjust both saturation and the third value (lightness or value) instead of changing just one.
- Forgetting about accessibility: when switching between HSL and HSV, keep an eye on contrast for text and key UI elements.
With a consistent strategy you can combine HSL and HSV without confusion and still keep your color system predictable and easy to maintain.
HSL to HSV Conversion Table
The table below lists several familiar colors with matching HSL and HSV values. Numbers are rounded for readability, so use the converter at the top of the page for precise work.
| Description | HSL | HSV |
|---|---|---|
| White | hsl(0, 0%, 100%) | hsv(0, 0%, 100%) |
| Black | hsl(0, 0%, 0%) | hsv(0, 0%, 0%) |
| Red | hsl(0, 100%, 50%) | hsv(0, 100%, 100%) |
| Green | hsl(120, 100%, 50%) | hsv(120, 100%, 100%) |
| Blue | hsl(240, 100%, 50%) | hsv(240, 100%, 100%) |
| Yellow | hsl(60, 100%, 50%) | hsv(60, 100%, 100%) |
| Cyan | hsl(180, 100%, 50%) | hsv(180, 100%, 100%) |
| Magenta | hsl(300, 100%, 50%) | hsv(300, 100%, 100%) |
| Gray 1 | hsl(0, 0%, 7%) | hsv(0, 0%, 7%) |
| Gray 2 | hsl(0, 0%, 20%) | hsv(0, 0%, 20%) |
| Gray 3 | hsl(0, 0%, 33%) | hsv(0, 0%, 33%) |
| Gray 4 | hsl(0, 0%, 47%) | hsv(0, 0%, 47%) |
| Gray 5 | hsl(0, 0%, 60%) | hsv(0, 0%, 60%) |
| Gray 6 | hsl(0, 0%, 80%) | hsv(0, 0%, 80%) |
| Orange | hsl(39, 100%, 50%) | hsv(39, 100%, 100%) |
| Purple | hsl(300, 100%, 25%) | hsv(300, 100%, 50%) |
| Teal | hsl(180, 100%, 25%) | hsv(180, 100%, 50%) |
For any other HSL color you can use the converter at the top of the page to compute the matching HSV values using the standard algorithm.
FAQ: HSL to HSV
- Why would I convert HSL to HSV
Some tools and libraries expose HSV sliders or APIs, while your design system may prefer HSL. Conversion lets you use whichever model is more comfortable at each stage without losing consistency.
- Do HSL and HSV describe different color spaces
No. Both models are different coordinate systems for the same underlying RGB color space. The difference is in how they define the third axis, not in which colors they can represent.
- Does the hue change when converting
In typical conversions the hue angle is preserved. What changes are the saturation and the third value, which are reinterpreted from lightness based parameters to value based parameters.
- Can I go back from HSV to HSL without loss
Yes. As long as you stay within valid ranges, moving between HSL and HSV through RGB is reversible up to rounding differences. The visual color remains the same.
- Is one model better than the other
Neither model is strictly better. HSL often works well for design tokens and documentation, while HSV fits interactive color pickers and some graphics workflows. It is normal to use both in one project with clear conversion rules.
Related Converters:
HEX to RGB Converter
Instantly calculate hex to rgbHEX to HSL Converter
Instantly calculate hex to hslHEX to HSV Converter
Instantly calculate hex to hsvRGB to HSL Converter
Instantly calculate rgb to hslRGB to HSV Converter
Instantly calculate rgb to hsvHSV to HSL Converter
Instantly calculate hsv to hsl