HSL Color Picker
Drag hue, saturation, lightness, and alpha sliders to dial in a color — copy HEX, RGB, HSL, or a Tailwind arbitrary value.
- HEX#209FDF
- RGBrgb(32, 159, 223)
- HSLhsl(200, 75%, 50%)
- Tailwind[color:#209fdf]
How to use
- Drag the sliders. The big preview panel reflects the current color; a checkerboard shows through when alpha is below 100%.
- Hit Random for inspiration — it picks reasonable saturation and lightness, not full-bright neon.
- Copy whichever output format you need into your CSS or Tailwind utility class.
About this tool
ShowHide
A slider-driven picker for HSL — the color model most CSS designers think in. Each rail visualizes what the slider varies along, so it's easy to see what saturation 0 looks like at your current hue, or how lightness flips between black, your color, and white. Output is offered in HEX (with optional 8-digit alpha), rgb() / rgba(), hsl() / hsla(), and a Tailwind arbitrary-value wrapper.
HSL is convenient because its axes match the words designers already use, but its lightness is not perceptual lightness. Yellow at 50% reads as a bright colour and blue at 50% reads as a dark one, even though the number is identical, so a palette built by holding L constant across hues comes out visibly uneven. That is the specific problem the newer CSS colour spaces address: OKLCH keeps a fixed lightness looking fixed. If you are generating a scale rather than picking one colour, it is worth knowing which of the two you need.
Saturation in HSL is also not the same quantity as saturation in HSV, though the sliders look alike. HSL reaches pure white at L 100 and pure black at L 0 regardless of the other two values, which means both ends of the lightness rail collapse: every hue looks the same there, and the hue and saturation you set are still stored but no longer visible.
The conversion to and from hexadecimal is lossy in one direction. Whole-number H 0–359, S 0–100 and L 0–100 give 360 × 101 × 101 ≈ 3.67 million triplets, far fewer than the ~16.7 million sRGB colours, so rounding a colour to HSL merges many hex values into one triplet, and converting back cannot always return the original. Typing a hex value, reading the HSL and typing it back can therefore land you one step away from where you started. The hex output is the authoritative value. In the 8-digit form the alpha byte comes last, which is the CSS order and the reverse of the convention some design tools use.
Frequently asked questions
Why HSL instead of RGB?
HSL maps onto how designers usually think: hue (which color), saturation (how vivid), lightness (how bright). To tweak just one axis — "same color, a bit darker" — you only move one slider. The same change in RGB requires touching all three channels.
What does the 8-digit HEX mean?
When alpha drops below 100%, the HEX output extends to #RRGGBBAA. The last two hex digits encode the alpha channel (00 = transparent, FF = opaque). Modern browsers and design tools all support this form.
Why is lightness 50, not 100, the most saturated point?
In HSL, lightness 0% is pure black and lightness 100% is pure white — both kill saturation. The most saturated rendering of any hue sits at 50% lightness.
Why do two colours at the same HSL lightness look different in brightness?
Because HSL lightness is arithmetic on the RGB channels, not a measure of perceived light. The eye is far more sensitive to green than to blue, so a yellow and a blue that share a lightness value are visibly unequal — one can pass a contrast requirement against white while the other fails. Use HSL to reason about relationships and a contrast checker to decide anything about legibility.
What is a safe way to build a shade scale in HSL?
Change lightness in even steps and expect to hand-correct: the same step gives more visible change in some hues than in others, and highly saturated colours drift towards grey as they lighten. Pull saturation up slightly at the light and dark ends to compensate, and check the ramp as a strip rather than one swatch at a time — an uneven step is obvious in sequence and invisible in isolation.
Guides on this topic
Related tools
Color Format Converter
Convert any color between HEX, RGB, HSL, HSV, OKLCH, and a CSS custom property.
Color & CSS
Random Color Generator
Generate a grid of random colors in HEX, RGB or HSL — pick how many, copy any value with one click, and regenerate instantly for design inspiration.
Random
Wavelength to Color Converter (nm → sRGB)
Convert a light wavelength in nanometres (380–780 nm) to an approximate sRGB color, with a clickable rainbow bar and Fraunhofer reference lines.
Color & CSS
CMYK ↔ RGB Color Converter (Print Color Space)
Convert between RGB / hex screen colors and CMYK percentages for print — simple, GCR and UCR black generation, plus a total ink coverage readout.
Color & CSS
Tailwind Color Palette
The full Tailwind CSS v4 default palette — 22 hues × 11 shades, 50 through 950 — with click-to-copy as Tailwind class, HEX, or rgb().
Color & CSS
Color Brightness Compare (HSL vs Lab L* vs WCAG vs HSP)
Compare seven different brightness metrics — HSL Lightness, HSV Value, WCAG Relative Luminance / LRV, CIE Lab L* perceived lightness, Rec.
Color & CSS