How to Mix Colors
Blend two or more colors in different color spaces with adjustable ratios.
Problem
You need to blend two colors to create an intermediate color, such as for a hover state or transition.
Prerequisites
- Understanding of color models
- Knowledge of blending modes
Steps
-
1. Choose the color space for mixing
Mixing in RGB averages each channel independently, which can produce muddy midpoints. Mixing in HSL preserves hue and saturation better. Mixing in OKLCH (a perceptual space) produces the most natural-looking gradients. Choose based on the desired visual result.
Inputmix in OKLCHOutputperceptually uniform -
2. Set the mix ratio
Specify how much of each color to use: 50/50 for an even blend, 70/30 for a bias toward the first color. The ratio determines the position of the result between the two colors. Some mixers support multiple colors with weighted ratios.
Inputred + blue, 50/50Outputpurple -
3. Compute and output the result
Convert both colors to the chosen color space, interpolate at the specified ratio, and convert back to the output format (HEX, RGB, HSL). Verify the result visually. For CSS, use the color-mix() function: color-mix(in oklch, red, blue).
Inputcolor-mix(in oklch, #FF0000 50%, #0000FF)Output#800080 (approx)
Expected result
A blended color that represents the specified mix of the input colors.
Common errors
- Muddy midpoint in RGB mixing
- RGB mixing can produce grayish midpoints for complementary colors. Mix in HSL or OKLCH for more vibrant results.
- Hue wraps incorrectly
- When mixing in HSL, hue is circular (0° and 360° are the same). Interpolate along the shorter arc to avoid going the long way around.
Troubleshooting
- If the mixed color looks wrong, try a different color space.
- CSS color-mix() is modern; check browser support or precompute the value.
Security limits
- Color mixing is a pure calculation with no security implications.
Related tools
Related tasks
Ready to run it?