Skip to content
A node+express JSON API to interact with the colorvert module.
Branch: master
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.


An easy-to-use color conversion API written in node and using Express.

It uses the colorvert to perform color conversions. If you need the color conversion modules only, that's where you should look.

If you only need conversions between ICC profiles (CMYK, Lab, XYZ, RGB) and don't need the math-based conversions, you should take a look at the transicc node module, which colorvert uses to perform those.


Colorvert uses a tiny command line utility called transicc. It's installed by the script in the root of this repo. Roughly, the commands below will get everything installed.

git clone
cd node-colorvert-api
npm install --production

Note: If you're on Debian/Ubuntu, you can install the lcms2 package instead of the last step.

Once you've installed that dependency, you're ready to run node server.js from the same directory, or use a tool like forever to keep the server running in the background. It binds to port 3000 by default - you can change it at the bottom of server.js file.

API Usage

There are currently 7 endpoints for the colorvert API.


Expects 0-100 values for each component. Example: /cmyk/100/0/0/0


Expects [l] to be between 0-100. There are no bounds on [a] or [b] so they can be any positive or negative number (integer or decimal). Example: /lab/52/-68/23


Expects 0-100 for [x], [y], and [z]. Assumes a luminance level of D65.


Expects 0-255 for [r], [g], and [b]. Example: /rgb/0/172/136


Expects 0-360° value for [h] (hue), and 0-100 values for both [s] and [l].


Expects 0-360° value for [h] (hue), and 0-100 values for both [s] and [v] (sometimes also called HSB - 'B' being brightness).


Expects [hex] to be a valid hex color without the '#'. Example: /hex/00ccff or /hex/AACCFF.

I plan to post more documentation with regard to end points as I continue developing the module. In the meantime, post an issue if you have a question or would like clarification!

Warning! :)

This and the colorvert module are still under development. They currently function for perfect input, but as soon as an empty/invalid value is passed, things fall apart, so I have to do some input testing/error reporting and write thorough tests before anyone should use it. You've been warned :) Otherwise, feel free to run it locally if you need to batch convert colors and you know the input will be valid!

You can’t perform that action at this time.