ForHosting KIT · Images

Simulate protanomaly color

Preview a color as seen with weakened red sensitivity: vivid red #e74c3c becomes #416f3e at the default severity of 0.6. Move from 0, unchanged, to 1, close to full protanopia, before locking brand or chart colors. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon

Runs in your browser. Free, unlimited — your data never leaves this page.

Protanomaly is a common form of anomalous trichromacy in which the long-wavelength (L) cones of the retina have reduced sensitivity to red light. Designers, accessibility auditors, and educators often need a quick, deterministic preview of how a brand color, chart series, or UI state might look when red discrimination is weakened—not full protanopia, but a partial blend between normal vision and a protan projection. This simulate protanomaly color tool accepts a hex or RGB color plus an optional severity from zero to one, converts the color into LMS cone space, partially applies a Viénot-style protan transform that rebuilds the L channel from M and S, converts back to RGB, and returns the simulated hex, channels, and CSS string. Severity zero leaves the color unchanged; severity one approximates full protanopia; the default of zero point six models a typical moderate protanomaly.

What protanomaly simulation means and how the partial protan transform works

Normal human color vision is trichromatic: three cone types (L, M, and S) sample the spectrum at long, medium, and short wavelengths. In protanomaly the L cone photopigment is shifted or less effective, so reds look darker or less saturated and red–green pairs are harder to separate than under normal vision, yet three cone classes still function—unlike protanopia, where the L channel is effectively missing.

A practical engineering model does not need a full physiological spectrum: it maps display RGB into LMS, replaces the L coordinate with a linear combination of M and S that approximates the protanopic plane (classically L equals two point zero two three four four times M minus two point five two five eight one times S after Viénot, Brettel, and Mollon-style matrices), then maps LMS back to RGB. Full dichromatic simulation uses that replacement alone.

Protanomaly is modeled by blending original LMS with the protan LMS using a severity weight s in the unit interval: L-prime equals (one minus s) times L plus s times L-protan, while M and S stay on the original path before the inverse transform. That partial application is deterministic, cheap, and good enough for UI previews, palette audits, and teaching demos. It is not a clinical diagnosis tool and does not replace user testing with people who have color vision deficiency.

Design system and brand token audits

Preview how primary, danger, and chart colors shift under moderate protanomaly before locking hex tokens into a component library.

Teaching color vision deficiency

Show students a deterministic side-by-side of original versus protanomaly-simulated swatches with adjustable severity from mild to full protan.

What is protanomaly and how is it simulated here?

Protanomaly is reduced L-cone (red) sensitivity. This tool maps RGB to LMS, rebuilds L from M and S as in a protan projection, blends with the original LMS by severity, and converts back to RGB.

What does the severity parameter do?

Severity is a blend weight in [0, 1]. 0 returns the original color; 1 applies full protanopia projection; the default 0.6 models a typical moderate protanomaly.

Which color formats are accepted?

Hex (#RGB or #RRGGBB), CSS rgb()/rgba(), bare r,g,b text, or separate r, g, b integers 0–255.

Is this a medical or diagnostic test?

No. It is an engineering approximation for design and education previews, not a clinical assessment of color vision.

How is protanomaly different from protanopia?

In protanomaly the red-sensitive cones still work but respond weakly, so reds look darker or duller and red–green pairs are harder to tell apart. In protanopia that cone type is effectively missing; a severity of 1 approximates it.

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.

POSThttps://api.kit.forhosting.com/color/sim-protanomaly

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.

curl -X POST https://api.kit.forhosting.com/color/sim-protanomaly \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"color":"#e74c3c","hex":"valor-ejemplo"}'
{
  "color": "#e74c3c",
  "hex": "valor-ejemplo"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "color.sim_protanomaly",
  "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.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Input contract, response shape, and error behaviour

Provide color as a hex string such as #e74c3c or #e74, as CSS rgb(r,g,b), as bare r,g,b text, or as separate integer fields r, g, and b in zero through two hundred fifty-five. Channels are rounded to integers zero through two hundred fifty-five after clamping so clients can paint swatches without further scaling. Example: a vivid red near #e74c3c at default severity shifts toward a duller, less red-dominant hue that still retains some long-wavelength difference compared with full protanopia at severity one. POST a JSON body with a source color and an optional severity. Aliases hex, value, text, input, and code are accepted for the string form; red, green, and blue alias the channel fields. Severity defaults to zero point six when omitted and must be a finite number between zero and one inclusive when present; aliases amount, strength, and severity are accepted. Missing color entirely, empty strings, non-hex garbage, channel values outside zero through two hundred fifty-five, fractional channels, and severity outside the unit interval fail with invalid_input and a message that names the problem. Those validation failures are not billed. On success the body includes input_hex and input_rgb for the resolved source, the numeric severity used, simulated_hex and simulated_rgb for the filtered color, individual simulated_r, simulated_g, and simulated_b channels, a css rgb() string, method protanomaly_partial_lms, deficiency protanomaly, a short formula string describing the LMS blend, and a human-readable message.

Where a protanomaly color simulator earns its keep

Education platforms teaching color vision deficiency can show side-by-side normal versus simulated swatches without embedding heavy image filters. Failed validation does not consume balance. Accessibility reviewers can batch brand tokens and chart series through the API and flag pairs that collapse under reduced red sensitivity before shipping. Pair results with contrast checks on both original and simulated colors when you need WCAG-oriented workflows; this endpoint only transforms a single color sample and does not score contrast ratios or image regions.

Accessibility CI for palettes

Batch-filter palette JSON in pipelines and fail builds when critical states become too similar after the partial protan transform.

What does the protanomaly color simulator cost?

The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.

Read the full KIT documentation →