CMYK to HSV converter
Turn a print ink recipe into hue, saturation and value: C0 M50 Y100 K0 becomes RGB 255, 128, 0, an orange with 100 % saturation and 100 % value. Every step is shown, so you can check it. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- C
- 0
- M
- 50
- Y
- 100
- K
- 0
- Hue degrees
- 30.1176470588
- Saturation percent
- 100
- Value percent
- 100
This CMYK to HSV converter turns a print-oriented color into hue, saturation, and value through a visible, deterministic RGB intermediate. Enter cyan, magenta, yellow, and key ink percentages from zero to one hundred. The converter validates every channel, calculates rounded red, green, and blue values from zero to two hundred fifty-five, and then derives hue in degrees plus saturation and value as percentages. It is useful when a print palette must feed a hue picker, sorting rule, visualization, or design-token workflow.
Enter a valid CMYK print color
Provide four required fields: c for cyan, m for magenta, y for yellow, and k for key or black. Each field represents ink coverage as a finite percentage from zero through one hundred, inclusive. Decimal percentages are accepted, as are numeric strings with surrounding whitespace, because real palette exports do not always serialize numbers in the same way.
The converter never clamps an illegal percentage, because silently turning one hundred and five percent into one hundred would conceal a broken source file or spreadsheet formula. Zero for all four inks represents paper white in this device-independent approximation, while a key value of one hundred produces black regardless of the other three channels. CMYK describes physical ink behavior imperfectly without a press and ICC profile, so the result should be understood as a stable mathematical preview rather than a contract for an exact printed appearance.
That distinction makes the tool appropriate for data conversion, interface logic, education, and approximate screen previews while leaving press proofing to calibrated production software.
Follow the deterministic route through RGB
The conversion deliberately exposes its RGB intermediate so you can audit how a print color becomes HSV. First, each ink percentage is divided by one hundred. Red is calculated as two hundred fifty-five multiplied by one minus cyan and one minus key; green substitutes magenta; blue substitutes yellow.
Each result is rounded to the nearest integer from zero through two hundred fifty-five. The HSV stage then normalizes those three integers to unit channels, finds their maximum, minimum, and difference, and chooses a hue sector according to which channel is largest. Hue is zero for a neutral color whose difference is zero; otherwise the standard red, green, or blue sector equation produces a degree value wrapped into the interval from zero inclusive to three hundred sixty exclusive.
Saturation is the channel difference divided by the maximum, except that black has saturation zero. Value is simply the maximum normalized RGB channel. Because HSV is calculated from the rounded RGB object that appears in the response, a caller can reproduce every stage exactly.
No hidden color profile, network service, current time, random seed, or mutable cache changes the answer between calls.
Use hue and value in practical workflows
Hue and value make print palette data easier to organize for interfaces and automation. A design-system importer can accept CMYK colors from a brand guide, convert them, and sort swatches around a hue wheel without maintaining a second hand-edited palette. A product catalog can group approximate print colors into warm and cool families while using value to choose readable labels or order variants from dark to light.
Classroom demonstrations can show why adding key ink reduces RGB brightness and therefore HSV value, while changes to cyan, magenta, and yellow shift the dominant channel and hue. Use an ICC-aware application when a conversion must simulate a particular paper, ink set, rendering intent, or printing device. For deterministic application logic and transparent educational math, this capability provides a small contract: one validated print color in, one reproducible screen approximation and HSV description out.
What you can do with it
Sort print swatches by hue
Convert CMYK brand colors into hue degrees so a palette browser can arrange them around a consistent color wheel.
Estimate darkness for interface rules
Read HSV value from a print color before choosing labels, ordering variants, or applying approximate light and dark classifications.
FAQ
Which input ranges are valid?
Cyan, magenta, yellow, and key must each be a finite percentage from 0 to 100 inclusive. Decimals and numeric strings are accepted.
Why does the conversion go through RGB?
HSV describes an RGB-derived cylindrical model. Exposing rounded 0–255 RGB makes the conversion route deterministic, familiar, and reproducible.
What units does the HSV result use?
Hue is in degrees from 0 inclusive to 360 exclusive. Saturation and value are percentages from 0 to 100.
Will the HSV color exactly match a commercial print?
Not necessarily. This is a device-independent mathematical approximation, not an ICC-profile transform for a particular press, ink, or paper.
What is C0 M50 Y100 K0 in HSV?
It passes through RGB 255, 128, 0 and comes out at a hue of just over thirty degrees, with saturation and value both at 100 %. That is a fully saturated, bright orange.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/color/cmyk-hsv \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"c":0,"m":50,"y":100,"k":0}'const res = await fetch("https://api.kit.forhosting.com/color/cmyk-hsv", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"c": 0,
"m": 50,
"y": 100,
"k": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/cmyk-hsv",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"c": 0,
"m": 50,
"y": 100,
"k": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/cmyk-hsv", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"c":0,"m":50,"y":100,"k":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"c":0,"m":50,"y":100,"k":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/cmyk-hsv", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"c": 0,
"m": 50,
"y": 100,
"k": 0
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.cmyk_hsv",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
The same pure arithmetic runs for every request without a network call, random value, device profile, or clock dependency. Run it free in the browser, or use the API for $0.002 per successful request.
Enter a valid CMYK print color
The longer aliases cyan, magenta, yellow, key, and black are also supported. Validation is strict: a missing channel, nonnumeric text, Infinity, NaN, or any number below zero or above one hundred produces an invalid_input error.
Use hue and value in practical workflows
The response includes the validated c, m, y, and k percentages, a nested rgb object, a nested hsv object, explicit hue_degrees, saturation_percent, and value_percent fields, plus a method label documenting the two-stage route. Browser use is free, while each successful API request costs $0.002; invalid input is rejected before a useful conversion is returned.
Integration use cases
Teach two-stage color conversion
Show the exact CMYK-to-RGB intermediate and the subsequent HSV result in lessons, exercises, and deterministic grading fixtures.
Technical questions
What does the CMYK to HSV converter cost?
It runs free in the browser. A successful API request costs $0.002; invalid input is rejected.