Color Converter & Picker
Convert colors between HEX, RGB, and HSL with a live picker.
This tool runs entirely in your browser. Your data is never uploaded, never stored, and never leaves your device.
Converts one colour between HEX, RGB and HSL with every field live — type into any of the three and the other two plus the swatch follow immediately.
How to use it
- 1Click the swatch to pick visually, or type a value into HEX, RGB or HSL.
- 2Watch the other two notations rewrite themselves as you type.
- 3Use the Copy button beside whichever notation your stylesheet needs.
Example
- Input
- #abc
- Output
- rgb(170, 187, 204) · hsl(210, 25%, 73%)
Three-digit shorthand expands by doubling each digit, so #abc means #aabbcc. HSL is rounded to whole degrees and percentages, which means the round trip is lossy: typing hsl(210, 25%, 73%) back in gives #a9bacb, not #aabbcc. The RGB and HSL fields also just read the first three numbers they find, so rgba(170, 187, 204, 0.5) is accepted and the alpha is silently dropped.
What happens to your data
This tool runs entirely in your browser. Your input is never uploaded to a server, never stored, and never logged. The conversions are arithmetic done in the page; no colour is ever sent anywhere.
Last updated August 2026
Convert colors between HEX, RGB, and HSL, and pick colors visually. Design tools, CSS, and image editors all speak different color formats; this converts any color between them instantly so you can drop the right value into your stylesheet or design file.
Enter a value in one format and read the equivalents in the others, or use the picker to sample a color.
Two jobs bring people to a colour converter, and they want different things. If you are transcribing a fixed value — a brand colour from a spec into a stylesheet — HEX and RGB are two spellings of the same twenty-four bits and nothing is lost either way. If you are shaping a colour — a lighter hover state, a darker border, a scale built from one seed — HSL is the format that gives you something to turn, and the one that will not hand the value back unchanged.
The common mistake is trusting the L. A saturated yellow and a saturated blue are hsl(60, 100%, 50%) and hsl(240, 100%, 50%) — identical lightness on paper — yet their relative luminance is 0.9278 and 0.0722, so white text is unreadable on the first and comfortable on the second. Lightness here is the midpoint between a colour's strongest and weakest channel, not a measure of light, so a palette built by holding L constant across hues will not look level.
How it works
Toolvore converts colors in your browser with no network requests — instant and private. Every field parses down to a single RGB triple and the other two are re-derived from it, which is why all three boxes rewrite themselves into canonical form the moment what you typed parses: three-digit shorthand expands under your cursor, so a hand-typed 9f0 becomes #99ff00 as soon as the third character lands, and a bare 99, 102, 241 comes back as rgb(99, 102, 241). HSL is rounded to whole degrees and whole percentages on the way out, and that rounding is where colour is lost. Running these same conversions across all 16,777,216 sRGB colours, 89.4% do not come back as the hex they started as after a trip through the HSL box — usually one step on one channel, at worst five. Type something invalid and the last good colour stays on screen with the error beneath it.
Common use cases
- Translating a designer's HEX into RGB or HSL for CSS
- Fine-tuning lightness and saturation via HSL
- Matching brand colors across tools that use different formats
- Building consistent color values for a design system
- Reading the hue angle out of a hex value when building a palette around it
Frequently asked questions
What formats are supported?+
HEX, RGB, and HSL — the formats used across CSS and design tools.
Is it free and private?+
Yes — free, and all conversion runs locally in your browser.
Is #fff the same colour as #ffffff?+
Yes, and the rule behind it is stricter than it looks. Three-digit shorthand is expanded by doubling each digit, so #fff is #ffffff and #369 is exactly #336699 rather than an approximation of it. The consequence is that only 4,096 of the 16.7 million sRGB colours can be written short at all, since every channel has to be a repeated digit. #336698 has no three-digit form, and truncating it to #336 gives you a different colour. Shorthand is a convenience for values that land on those steps, not a rounding of anything.
How do I make a colour lighter or darker without changing the hue?+
Convert to HSL, move L, leave H and S alone, convert back. That is the appeal of the format, and it works well in the middle of the range and badly at the ends. As lightness approaches 0 or 100 the other two numbers stop mattering — hsl(200, 90%, 0%) and hsl(20, 10%, 0%) are both black, anything at 100% is white — so the hue is gone rather than hidden, and no converter can recover it. Equal steps in L across different hues do not read as equal changes either, which is why a tint scale built by stepping L looks even on some hues and lopsided on others.
What is the difference between HSL and HSB or HSV?+
They share the hue angle and diverge after it, which is the shape of problem that produces a wrong colour with no error anywhere. In HSB, brightness at 100% with saturation at 100% is the pure hue. In HSL, 100% lightness is white whatever the other numbers say, and the pure hue sits at 50%. Photoshop and many native pickers report HSB, so pasting those numbers into an HSL field leaves the hue right and the colour wrong, most visibly on anything pale. If your source labels the third number B or V rather than L, go through HEX or RGB instead.
Can a hex colour include transparency?+
Eight-digit hex is real CSS — the last pair is alpha, so #6366f180 is that colour at just over half — but it is refused here, with a message asking for #rrggbb. The modern space-separated syntax deserves the same caution: numbers are read in order, so rgb(99 102 241 / 50%) is taken as the first three and the alpha is dropped without a word, and rgb(50%, 50%, 50%) is read as 50, 50, 50 rather than as mid grey, because the per cent signs are ignored rather than interpreted. Alpha is an instruction for blending with what sits behind, not a property of the colour, so there is no opaque equivalent until you name a background.
How do I convert RGB to CMYK for print?+
Not with a formula, which is the answer nobody wants. The naive conversion — invert each channel, pull the common minimum out as black — is arithmetic rather than colour management, and it ignores the ink, the paper, the press and the profile that decide what those four numbers put on a sheet. Two printers handed the same CMYK will not give you the same colour. Ask whoever is printing which ICC profile they want and convert in an application that can apply it. There is no CMYK field here for that reason, and a screen colour outside a press's gamut has no exact equivalent anyway.
Should I be using oklch or lab instead of HSL?+
For anything where the arithmetic has to match how a colour looks, probably. oklch keeps the same three ideas as HSL — a lightness, a chroma, a hue angle — but its lightness is built to track perception, so holding it steady across hues gives colours that read as the same weight, which is the thing HSL quietly fails at. It can also address colours outside sRGB, which hex cannot express at all. The costs are unfamiliar numbers and fallbacks you have to work out separately. This converter takes HEX, RGB and HSL only, so an oklch value has to come from elsewhere.
Used in these workflows
Related tools
Markdown to HTML
Convert Markdown source into raw HTML you can copy.
Image Compressor
Compress JPG, PNG and WebP images to a smaller file size — or to an exact target size like 100 KB.
CSV to Markdown Table
Turn CSV data into a formatted Markdown table.
Roman Numeral Converter
Convert between Roman numerals and Arabic numbers.