HSLuv implementation for Emacs ELisp
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.




This package provides an Elisp implementation of the HSLUV colorspace conversions as created by Alexei Boronine (@boronine), and documented on http://www.hsluv.org/

HSLuv is a human-friendly alternative to HSL.

CIELUV is a color space designed for perceptual uniformity based on human experiments. When accessed by polar coordinates, it becomes functionally similar to HSL with a single problem: its chroma component doesn't fit into a specific range.

HSLuv extends CIELUV with a new saturation component that allows you to span all the available chroma as a neat percentage.

The reference implementation is written in Haxe and released under the MIT license. It can be found at https://github.com/hsluv/hsluv The math is available under the public domain.


The recommended way is to use MELPA. If either is in your package-archives, do

M-x package-install RET hsluv RET

or you could use something like use-package:

(use-package hsluv)

No further configuration is needed.


The following functions provide the conversions from RGB to/from HSLUV and HPLUV:

(hsluv-hsluv-to-rgb (list H S Luv))

(hsluv-hpluv-to-rgb (list H P Luv))

(hsluv-rgb-to-hsluv (list R G B))

(hsluv-rgb-to-hpluv (list R G B))


If you want to run the tests, checkout this repository. Then, on a command-line near you, do:

$ make clean test

which will run the tests defined in test/hsluv-test.el.

Test results will be collected in the file test-results.log