See what you pick

A color picker designed for human eyes, not computer math.
Equal values = equal brightness. Finally.

Zero dependencies 2-min setup Production-ready

↑ Click a color to see the magic

Your color picker is lying to you

Traditional pickers use RGB or HSL — math designed for computers, not humans.
Yellow at "50% brightness" blazes while blue at "50% brightness" looks dim. Same numbers, completely different perception.

RGB is gaslighting your users

Yellow and cyan blaze. Blue looks dim. Your users waste time fighting their own perception. HSL lightness doesn't mean brightness.

HSL — all S=100%, L=50%
Same numbers. Wildly different brightness.
OKLCH — all L=0.75, C=0.20
Equal numbers. Equal brightness. As it should be.

Hue shifts ruin gradients

HSL blue-to-white passes through purple. OKLCH keeps the hue constant.

HSL: Blue → White
Unexpected purple shift
OKLCH: Blue → White
Pure blue all the way

Muddy transitions

HSL blue-to-yellow passes through dark gray zones. OKLCH stays vibrant.

HSL: Blue → Yellow
Dark muddy middle
OKLCH: Blue → Yellow
Natural vibrant transition

A color picker that finally makes sense

Customize the picker options and see the changes in real-time. No more guessing, no more trial and error.

Configuration

Live Preview

JavaScript

Beautiful colors, zero hassle

Colors That Match Human Perception

Built on color science, not convention. L=0.5 looks 50% bright for every hue. Equal numbers = equal perception.

Zero Dependencies

Pure vanilla JavaScript. No bloat. No build step.

2-Minute Integration

Copy two files. Write three lines of code. You're done. The color picker you can be proud of forever.

160 Expertly Curated Colors

Perceptually harmonious palette spanning the full spectrum. Instant conversion to OKLCH, RGB, HEX, and HSL.

Integrate in 2 minutes

HTML
<link rel="stylesheet" href="oklume.css">
<script src="oklume.js"></script>

<div id="picker"></div>

<script>
  const picker = new Oklume('#picker', {
    onChange: (color) => {
      document.body.style.backgroundColor = color.oklch;
    }
  });
</script>

Frequently asked questions

What is OKLCH?

OKLCH is a perceptually uniform color space based on Oklab. Unlike RGB or HSL, OKLCH ensures that equal numeric values produce equal perceived brightness and saturation across all hues. This makes color selection intuitive and predictable.

What browsers are supported?

Oklume requires modern browsers with OKLCH support: Chrome 111+, Safari 15.4+, Firefox 113+, Edge 111+. The library automatically checks for browser support and displays a warning if OKLCH is not available.

Can I use my own color palette?

Yes! You can provide a custom palette array when initializing Oklume:

const picker = new Oklume('#picker', {
  palette: [
    { l: 0.5, c: 0.2, h: 0 },
    { l: 0.6, c: 0.25, h: 130 },
    // ... your colors
  ]
});
Does it work with React, Vue, or Angular?

Yes! Oklume is framework-agnostic. Just mount the component to any DOM element. For React, use useEffect. For Vue, use onMounted. For Angular, use ngAfterViewInit.

What's the license?

MIT License with attribution requirement. You're free to use Oklume in any project, but please include attribution to "Oklume by Anton Ipatov" in your documentation or UI.