Every colour format, one picker

Pick a colour and get all 44 formats at once — including GLSL, HLSL and WGSL vectors in both gamma and linear space. Paste any format back in and it converts to everything else.

Hue
Alpha
100%
Current colour #4287f5

Hex, CSS functions, shader vectors, engine constructors or raw numbers.

Contrast6.02:1 AA
AaAa

How white and black text read on this colour.

Contrast of this colour against white and black
AgainstWCAG 2APCAUsable for
White3.49:1 AA LargeLc 62Headings and large text
Black6.02:1 AALc 40Non-text elements only

Saved swatches

Save colours you want to revisit.

Colour formats

Common The formats you reach for most often.

  • Hex
    #4287f5
  • RGB
    rgb(66 135 245)
  • HSL
    hsl(216.9 89.9% 61%)
  • HSV / HSB
    hsv(216.9, 73.1%, 96.1%)
  • OKLCh
    oklch(63.521% 0.17906 259.418)
  • CMYK
    cmyk(73.1%, 44.9%, 0%, 3.9%)

Shaders GLSL and HLSL vectors, gamma or linear.

  • GLSL vec3
    vec3(0.259, 0.529, 0.961)
  • HLSL float3
    float3(0.259, 0.529, 0.961)

Game engines Unity, Unreal and Godot at a glance.

  • Unity
    new Color(0.259f, 0.529f, 0.961f, 1.0f)
  • Unreal
    FLinearColor(0.0545f, 0.2423f, 0.9131f, 1.0f)
  • Godot Color
    Color(0.259, 0.529, 0.961, 1)

Every format

Web & CSSThe everyday formats for stylesheets and design tools.10
  • Hex
    #4287f5
  • RGB
    rgb(66 135 245)
  • RGB legacy
    rgb(66, 135, 245)
  • RGB percent
    rgb(25.88% 52.94% 96.08%)
  • HSL
    hsl(216.9 89.9% 61%)
  • HSL legacy
    hsl(216.9, 89.9%, 61%)
  • HSV / HSB
    hsv(216.9, 73.1%, 96.1%)
  • HWB
    hwb(216.9 25.9% 3.9%)
  • Nearest name
    dodgerblue (approx.)
  • CMYK
    cmyk(73.1%, 44.9%, 0%, 3.9%)
Perceptual & wide gamutModern CSS colour spaces for uniform scales and P3 displays.8
  • OKLCh
    oklch(63.521% 0.17906 259.418)
  • OKLab
    oklab(63.521% -0.03288 -0.17602)
  • CIE LCh
    lch(56.204% 63.033 276.032)
  • CIE Lab
    lab(56.204% 6.623 -62.684)
  • Display P3
    color(display-p3 0.3279 0.5231 0.9309)
  • Rec. 2020
    color(rec2020 0.3737 0.4757 0.917)
  • srgb-linear
    color(srgb-linear 0.0545 0.2423 0.9131)
  • CIE XYZ (D65)
    color(xyz-d65 0.2739 0.2508 0.8979)
ShadersGLSL, HLSL and WGSL vectors in both encoded and linear form.9
  • GLSL vec3
    vec3(0.259, 0.529, 0.961)
  • GLSL vec4
    vec4(0.259, 0.529, 0.961, 1.0)
  • GLSL ivec3
    ivec3(66, 135, 245)
  • HLSL float3
    float3(0.259, 0.529, 0.961)
  • HLSL float4 — sRGB
    float4(0.259, 0.529, 0.961, 1.0)
  • HLSL half4 — sRGB
    half4(0.259, 0.529, 0.961, 1.0)
  • WGSL vec3f — sRGB
    vec3f(0.259, 0.529, 0.961)
  • WGSL vec4f — sRGB
    vec4f(0.259, 0.529, 0.961, 1.0)
  • WGSL vec3<f32> — linear
    vec3<f32>(0.054, 0.242, 0.913)
Engines & appsConstructors for Unity, Unreal, Godot, Flutter, SwiftUI and Android.7
  • Unity
    new Color(0.259f, 0.529f, 0.961f, 1.0f)
  • Unreal
    FLinearColor(0.0545f, 0.2423f, 0.9131f, 1.0f)
  • Godot Color
    Color(0.259, 0.529, 0.961, 1)
  • Flutter Color
    Color(0xff4287f5)
  • Android Color
    Color.rgb(66, 135, 245)
  • SwiftUI Color
    Color(red: 0.259, green: 0.529, blue: 0.961)
  • UIKit UIColor
    UIColor(red: 0.259, green: 0.529, blue: 0.961, alpha: 1)
Raw valuesPacked integers and plain arrays.5
  • 0x hex
    0x4287f5
  • 0x hex (ARGB)
    0xff4287f5
  • Array 0–1
    [0.259, 0.529, 0.961]
  • Array 0–255
    [66, 135, 245]
  • Decimal integer
    4360181

Built for the cases other pickers miss

Gamma and linear, always labelled

A vec3 destined for a lighting calculation is not the same as one written straight to the framebuffer. Both are shown, both are labelled, and the exact piecewise sRGB transfer function is used rather than a pow(2.2)approximation.

Paste anything

Hex, rgb(), oklch(), vec4,FLinearColor, Color(0xFF…), or three bare numbers. When the input genuinely could mean two things, you get to choose instead of being guessed at.

Correct by construction

Conversions follow CSS Color 4. Matrix inverses are derived rather than transcribed, out-of-gamut colours are mapped in OKLCh instead of clipped, and the test suite checks that every format round-trips through its own parser.

Questions

Why are there two different vec3 values?

Because the same three numbers mean different colours depending on where they are used. The sRGB row holds encoded values, which is what you want when writing a colour straight to the screen. The linear row has the sRGB transfer function removed, which is what you want when the value takes part in lighting, blending or filtering. Most tools only give you the first one, which is why shader colours so often come out too bright.

What formats can I paste in?

Hex in every shape including 0x and 8-digit ARGB, all the CSS colour functions, HSV, CMYK, shader constructors like vec3, vec4, float3, half4 and vec3f, engine types like Unity Color, Unreal FLinearColor, Godot Color, Flutter Color, SwiftUI Color and Android Color.rgb, plus bare number triples in 0–1, 0–255 or percentages.

What happens if my input is ambiguous?

You get told. A bare “1, 0, 0” could be normalised floats or a 0–255 triple, so the tool picks the most likely reading, shows you which one it chose, and offers the alternatives as one-click buttons. No silent guessing.

Is the conversion maths accurate?

Every conversion follows the CSS Color 4 specification, using the exact piecewise sRGB transfer function rather than an approximate 2.2 power curve. Reference values from the specification are checked in the test suite, and every format is verified to parse its own output back to the same colour.

What happens to colours outside sRGB?

Colours from Display P3, Rec. 2020, Lab or OKLCh can fall outside what sRGB can show. Rather than clipping each channel, which shifts hue badly, the tool holds lightness and hue and walks chroma down until the colour fits. Formats that can hold the original value, such as color(display-p3 …), still show it untouched.

Keep going