ForHosting KIT · Developer Utilities

Generate color tints

Generate a dependable tint palette from a single base color without guessing intermediate values or adjusting sliders by eye.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

This tool mixes the supplied hexadecimal color toward white in equal percentage steps, returning precise HEX and RGB values for every tint. The calculation is deterministic, so the same color and step count always produce the same palette. Use it to prepare interface states, backgrounds, charts, illustrations, or design tokens that need a clear progression from the original color to white.

Choose a base color and useful number of steps

Start with a hexadecimal base color in three-digit or six-digit form, such as #36c or #3366cc. The short form is expanded before calculation, so both examples represent exactly the same color and produce identical results. Next, choose between one and twenty steps. The step count describes the number of generated tints, excluding the original base color and including pure white as the final result. Four steps therefore mix the base with white at 25%, 50%, 75%, and 100%. A small count works well for a compact interface hierarchy, while a larger count provides finer choices for data visualization, illustration, or token exploration. The result separately reports the normalized base and every generated tint, making it clear which value was supplied and which values were calculated. Because the progression always ends at white, adjacent swatches have equal changes in mixing percentage even when their visible differences vary with the base color and display.

Understand the deterministic mixing formula

Each red, green, and blue channel is mixed independently toward 255, the channel value for white. For tint number k in a palette of n steps, the tool calculates base + (255 − base) × k/n and rounds the channel to the nearest integer. Applying the same ratio to all three channels preserves the relationship to the original color while steadily reducing its distance from white. The response includes a one-based index, the exact white-mix percentage, normalized lowercase HEX, individual channel numbers, and an RGB string. This is direct sRGB interpolation; it does not change HSL lightness, perform gamma-corrected optical blending, or attempt perceptual equalization. That distinction matters when comparing this output with graphics software that offers several blending spaces. The formula is intentionally simple, documented, and stable, which makes it suitable for build scripts, snapshots, automated token generation, and systems where repeatability is more valuable than subjective visual adjustment.

Apply the palette safely in a design system

Treat the generated values as a consistent starting scale, then test them in their real context. Lighter tints are useful for selected rows, notification backgrounds, subtle borders, chart fills, hover surfaces, and decorative regions, but a mathematically regular palette does not automatically guarantee accessible contrast. Check foreground text and icons against each chosen tint using the contrast requirements that apply to your product. Preserve the base color as a separate token and name generated values according to their role or mixing percentage, such as brand-tint-25 or info-background, rather than relying only on array positions. Percentage-based names remain understandable if a later palette uses a different number of steps. In automated workflows, store the returned HEX values directly and keep the input color and step count alongside them so the palette can be reproduced. Invalid colors, alpha-bearing hex forms, fractional counts, and counts outside the supported range are rejected instead of silently corrected, preventing accidental token changes from passing unnoticed.

Build interface surface tokens

Create repeatable light backgrounds, borders, and selected states from one established brand or semantic color.

Prepare chart color variants

Generate predictable lighter fills that remain visibly related to the primary series color.

Automate palette documentation

Produce stable HEX and RGB values for design-system pages, code generation, tests, and handoff files.

What does one request cost?

Each API request costs $0.002. The output contains the complete requested tint palette.

Does the palette include the base color?

The response reports the normalized base separately. The tints array contains only progressively lighter mixtures, ending in white.

Why is the final tint always white?

The steps divide the complete path from the base color to a 100% white mixture into equal intervals.

Which color formats are accepted?

Use three or six hexadecimal digits, with or without a leading hash. Alpha channels and other CSS color syntaxes are rejected.

Are these tints guaranteed to meet accessibility contrast requirements?

No. Contrast depends on the foreground, size, weight, and applicable standard, so test every tint in its intended context.

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/tints-palette

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/tints-palette \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"color":"#3366cc","steps":4}'
{
  "color": "#3366cc",
  "steps": 4
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "color.tints_palette",
  "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.

Read the full KIT documentation →