RGB, HSL, HSV & LAB Color Spaces Explained (and How to Convert Each to Pantone)

Published

Most designers pick up these four models by osmosis — RGB from CSS, HSL from a color picker, LAB from a Photoshop menu nobody explains. That works right up until two of them disagree, and then it is very unclear which one to believe.

Here is the same color, one blue, written four ways:

ModelValue
RGB29, 79, 145
HSL214°, 67%, 34%
HSV214°, 80%, 57%
LABL* 33.8, a* 8.3, b* −41.2

Same pixel, four descriptions. The hue agrees. Everything else disagrees, including the two numbers that both sound like "how saturated is it". This article is about why, and about which of the four to hand a converter when you want a Pantone match you can trust.


What Is a Color Space, and Why Do So Many Exist?

A color model is a coordinate system for color: a set of axes, so any color becomes a set of numbers. A color space is a model plus a definition of what those numbers physically mean — sRGB is the RGB model pinned to specific primaries and a specific white point.

They multiplied because each one optimizes for a different job:

  • RGB matches how a display physically works — three emitters, added together.
  • HSL and HSV rearrange RGB into axes a human can steer. Nobody thinks "add 40 green"; people think "same color, a bit lighter".
  • LAB models how the human eye actually responds, deliberately ignoring how any device produces the color.

None is more correct than the others. They answer different questions, and the mistake is asking one of them a question it was not built for.

RGB — the Additive, Device-Based Model

RGB describes a color as amounts of red, green and blue light, 0–255 each. It is additive: the channels add together, all three at full gives white, all at zero gives black. That is a direct description of how a screen works, which is why it is the native language of the web, and why #1D4F91 is just those three numbers in hexadecimal.

Its limitation is that RGB is device-dependent. 255, 0, 0 means "drive the red emitter fully" — and what that looks like depends on the panel, its calibration and its color profile. Without an attached profile like sRGB, an RGB triplet is an instruction, not a color.

It is also perceptually lumpy. The numeric distance from #000000 to #0000FF equals the distance from #000000 to #FFFF00, but pure yellow is dramatically brighter to the eye than pure blue. Any matching built on raw RGB distance inherits that distortion — which is why our RGB to Pantone converter converts into a perceptual space before it ranks anything, and why Pantone to RGB is only ever giving you a screen approximation of an ink.

HSL — Hue, Saturation, Lightness

HSL keeps the same colors and re-parameterizes them into axes you can reason about:

  • Hue — position on the color wheel, 0–360°. Red at 0, green at 120, blue at 240.
  • Saturation — 0–100%, from gray to fully vivid.
  • Lightness — 0–100%, where 0% is black, 100% is white, and 50% is where fully saturated colors live.

That last point is the one people miss. In HSL, cranking lightness past 50% does not make a color more vivid; it washes it toward white. hsl(0, 100%, 50%) is pure red, and hsl(0, 100%, 100%) is plain white.

HSL is what CSS uses, and it is genuinely good for building systematic palettes — hold hue and saturation, step lightness, and you get a coherent tint ramp. The HSL to Pantone converter takes these values directly if that is where your design tokens live.

HSV / HSB — Hue, Saturation, Value (Brightness)

HSV shares the hue axis and then diverges. Its third axis is Value (Photoshop calls it Brightness, hence HSB — same model, two names):

  • Value — 0–100%, where 0% is black and 100% is as bright as that hue gets.

The difference is structural, not cosmetic. In HSV, V = 100% is the top of the space, and white is what you get at V = 100% with saturation at zero. Full value with full saturation gives you the pure hue. In HSL, white is a destination of its own that any color reaches at L = 100%, regardless of saturation.

Diagram comparing the HSV cone and HSL double cone — in HSV white and the pure hues share the top edge, while in HSL white is a separate point above the pure hues, which sit at the widest middle at 50% lightness

The practical consequence is that identical numbers produce different colors:

Written asRead as HSLRead as HSV
(0°, 100%, 100%)#FFFFFF — white#FF0000 — pure red
(0°, 100%, 50%)#FF0000 — pure red#800000 — dark red
(210°, 60%, 70%)#85B3E0#477DB3
(0°, 0%, 100%)#FFFFFF#FFFFFF

Only the last row agrees. If you copy three numbers out of a tool that speaks HSV into a field that expects HSL, nothing errors — you simply get a different color. That is the single most common way this pair causes a real problem, and it is why the HSV to Pantone converter is a separate tool rather than a relabeled one.

Tip

A quick way to tell which one you are looking at: drag saturation to zero with the third slider at maximum. If you land on white, it is HSV. If you stay on your color at full brightness, it is HSL. Photoshop's square picker is HSV; the CSS hsl() function is, as the name says, HSL.

LAB — the Perceptually Uniform, Device-Independent Model

CIELAB was built in 1976 to do something neither RGB nor its rearrangements attempt: make numeric distance correspond to perceived difference. Its axes are:

  • L* — lightness, 0 (black) to 100 (white).
  • a* — green to red.
  • b* — blue to yellow.

Two properties make it the model color scientists actually trust.

First, it is device-independent. LAB coordinates are defined against a standard illuminant and a standard observer — our conversions use D65 with the 2° observer, which is exactly what Pantone, RAL and NCS all publish their own LAB values against. A LAB value describes a color, not an instruction to a device.

Second, it is perceptually uniform, and the clearest way to see what that buys you is to compare it against HSL on the one axis they both claim to measure:

ColorHSL lightnessLAB L*
Pure blue #0000FF50%32.3
Pure red #FF000050%53.2
Pure green #00FF0050%87.7
Pure yellow #FFFF0050%97.1

All four are "50% lightness" in HSL. To the human eye they run from quite dark to nearly as bright as white — a span of 65 points in LAB. HSL's lightness is a geometric position in a cylinder; LAB's L* is a measurement of what you see. Any calculation about how different two colors look has to happen in a space like the second one, which is why the LAB to Pantone converter is the most precise entry point on this site.

This is also where ΔE*00 comes from — the color-difference figure shown beside every match here is computed in LAB, because it is the only one of these four spaces where such a number would mean anything.

CSS now has a perceptual model for screen color too, OKLCH; the HEX to OKLCH converter shows any hex code's lightness, chroma and hue.


Comparison Table

ModelDevice-Dependent?Best Used ForHuman-Perceptual Accuracy
RGBYes — needs a profile such as sRGBScreen output, web and UI code, image dataPoor — equal numeric steps look very unequal
HSLYes — a re-parameterization of RGBBuilding tint and shade ramps, CSS, design tokensPoor — "50% lightness" spans black-dark to near-white
HSV / HSBYes — a re-parameterization of RGBColor pickers, painting and illustration softwarePoor — same limitation, plus value ≠ brightness
LABNo — defined against a standard observerMeasuring difference, matching across media, ΔEHigh — built so numeric distance tracks what you see

Why None of These Are "Native" to Pantone

Every model above is a computed space: give it coordinates and it defines a color mathematically. Pantone is not that. A Pantone color is a physical library — a specific ink, mixed to a published recipe from a set of base inks, printed on a specified paper, with a physical chip as the reference standard.

There is no formula that turns coordinates into a Pantone number, because a Pantone number is not a point in any space. It is an index into a catalog of manufactured objects. Every conversion on this site is therefore a nearest-neighbor search: convert your color into a perceptual space, convert every Pantone ink into the same space, and rank by distance.

This is the same reason converting between CMYK and RGB is lossy in a different way — CMYK is a computed space, but a much smaller one, so colors fall outside it and get clipped. With Pantone, nothing gets clipped; you simply land on the nearest manufactured ink and get told how far away it was.

Warning

The sRGB values shown for Pantone colors — here and everywhere else online — are approximations of an ink under one set of viewing conditions. Many Pantone inks, particularly the neons and metallics, sit outside what any screen can display at all. The chip is the standard; the hex code is a label for it.


Which Model Should You Convert From for the Most Accurate Pantone Match?

LAB, whenever you have it. The reasoning is short: matching means ranking by perceived difference, that ranking happens in LAB, and every other model has to be converted into LAB first. Starting in LAB skips a conversion and, more importantly, skips a guess — an RGB triplet without a profile has to be assumed to be sRGB before it can go anywhere.

In practice the hierarchy runs:

  1. LAB — if your value came off a spectrophotometer, a brand guideline's technical appendix, or a measured sample, use it directly.
  2. RGB or HEX — the realistic default. Fine, as long as you know the value is sRGB, which for web colors it essentially always is.
  3. HSL or HSV — perfectly usable, but they convert to RGB first, so they carry the same assumption with an extra step. Use them when that is genuinely where your value lives.

What matters more than the entry point is reading the ΔE figure that comes back. A match found from a pristine LAB value is still only as good as the nearest available ink, and the number tells you which of those two things you are looking at.


Frequently Asked Questions

They share a hue axis but treat the third one differently. In HSV, 100% value with 100% saturation gives the pure hue, and white requires saturation at 0%. In HSL, 50% lightness is where fully saturated colors sit, and 100% lightness is white no matter what saturation says. The consequence is that the same three numbers mean different colors: (0°, 100%, 100%) is pure red in HSV and plain white in HSL. HSB is simply another name for HSV — Photoshop calls the third axis Brightness.
Measuring and comparing color independently of any device. LAB is defined against a standard illuminant and standard observer rather than a screen or printer, and it is built so that numeric distance corresponds to perceived difference. That makes it the space color difference is calculated in — every ΔE*00 figure on this site is computed from LAB values — and the reason Pantone, RAL and NCS all publish LAB coordinates for their colors.
LAB, if you have a LAB value. Matching means ranking candidates by perceived difference, that calculation happens in LAB, and every other model has to be converted into it first. RGB and HEX are fine in practice — they just carry an assumption that the value is sRGB. HSL and HSV work too, but they convert to RGB on the way, so they inherit the same assumption one step further along.
Not more accurate — it is the same set of colors with more useful controls. HSL is a re-parameterization of RGB, so it is equally device-dependent and equally non-uniform perceptually. What it buys you is intent: holding hue and saturation while stepping lightness produces a coherent tint ramp, which is awkward to do by editing three RGB channels. Use HSL to author, and remember it is still sRGB underneath.
Because a Pantone color is a physical ink rather than a point in a computed space. The sRGB value shown for a PMS color is an approximation of how that ink looks under one set of viewing conditions, and many Pantone inks — the neons and metallics especially — fall outside what a screen can display at all. The printed chip in a fan deck is the standard; the hex code is a convenient label for it.
ΔE*00 is the perceived difference between your color and the matched Pantone ink, calculated in LAB. Under 1 is imperceptible, 1 to 2 is a commercial match, 2 to 5 is visible side by side but acceptable for most work, and above 5 reads as a different color. Because Pantone is a fixed catalog rather than a continuous space, the figure tells you how much of a compromise the nearest available ink represents.

Related Tools

Convert from whichever model you have

Start from LAB if you have it, RGB if you do not. Every result is ranked by ΔE*00 and runs entirely in your browser.