Picked a colour as hue, saturation and lightness — say a pure green at hsl(120, 100%, 50%) — but the canvas code, image library or API wants RGB numbers? This free hsl to rgb converter returns rgb(0, 255, 0), ready to use wherever decimal channels are expected. Everything runs in your browser, so nothing is uploaded and no signup is needed.

How to use this hsl to rgb converter

Three quick steps — enter, check, copy.

1Enter hue, saturation and lightness

Type hue in degrees (0–360) and saturation and lightness as percentages (0–100).

2Check the swatch

Confirm the preview matches the colour you imagined; hue errors are the most common mistake.

3Copy the RGB value

Paste rgb(R, G, B) into your canvas code, script or image tool.

Why this hsl to rgb converter is the bridge to code

Built to be free, private, and exact — right in your browser.

Code speaks RGB

Canvas drawing, image processing and most programming libraries take decimal RGB channels, not HSL, so this is the step before implementation.

Whole numbers, no decimals

The output is rounded to whole channels from 0 to 255, which is exactly what RGB APIs accept.

Pure colours land cleanly

Full saturation at 50% lightness gives a pure colour — hsl(0, 100%, 50%) is rgb(255, 0, 0) and hsl(120, 100%, 50%) is rgb(0, 255, 0).

No colour lost

HSL and RGB describe the same sRGB colour, so the conversion rewrites the notation without changing the colour, apart from rounding to whole channels.

HSL to RGB Converter FAQs

Short, direct answers to the questions readers ask most.

Hue selects the colour segment on the wheel, saturation and lightness set the chroma and midpoint, and those are combined into red, green and blue channels from 0 to 255.

White is rgb(255, 255, 255) at 100% lightness, and black is rgb(0, 0, 0) at 0% lightness, whatever hue and saturation you enter.

The HSL-to-RGB maths is continuous, but RGB channels are whole numbers, so the tool rounds each channel to the nearest integer.

Yes, it wraps to 0°, so both describe red; values outside 0–360 are rejected rather than silently wrapped.

No. It converts opaque colours only; for transparency, take the RGB result and add an alpha value in rgba() yourself.