Image Palette Extractor

Extract a dominant color palette from any image.

Upload Image

Pick an image to extract its dominant colors.

8

Examples

Extract a brand logo palette

Input
Image: 1024×1024 PNG logo
Max Colors: 5
Output
[
  { "name": "color-1", "hex": "#0a2540" },
  { "name": "color-2", "hex": "#0070f3" },
  { "name": "color-3", "hex": "#ffffff" },
  { "name": "color-4", "hex": "#5ac8fa" },
  { "name": "color-5", "hex": "#1a1a1a" }
]

A 5-color logo yields a compact palette covering the dominant background, accent, neutral, and supporting tints — ready to drop into a design system.

Pull a landscape photo palette

Input
Image: 1920×1080 JPEG of a beach
Max Colors: 8
Output
[
  { "name": "color-1", "hex": "#5fa8d3" },
  { "name": "color-2", "hex": "#e7d8a7" },
  { "name": "color-3", "hex": "#2a4a5e" },
  { "name": "color-4", "hex": "#f4ecd6" },
  { "name": "color-5", "hex": "#8a6a4a" }
]

A natural scene yields a balanced palette spanning sky, sand, water, and shadow tones — useful for designing a complementary UI theme.

About this tool

The Image Palette Extractor pulls the dominant colors out of any image (PNG, JPEG, WebP, GIF) and presents them as a copy-ready palette. Drop in a logo, photo or screenshot and the tool returns up to 12 perceptually distinct colors, ranked by area coverage.

All processing happens locally in your browser — the image is read into an offscreen <canvas>, downscaled to fit a 100-pixel long edge, and pixel-bucketed into an RGB histogram with a step size of 8. Distinct colors are then filtered using CIEDE2000 with a ΔE threshold of 15, so visually similar buckets collapse into one entry instead of producing near-duplicate swatches. The result is exported as both an interactive swatch grid and a JSON object keyed `color-1` … `color-N`.

How to use

  1. Upload an image

    Click or drop a PNG / JPEG / WebP / GIF into the upload area. The image is loaded via an Object URL into an offscreen canvas and never sent to a server.

  2. Set the color count

    Use the Max Colors slider (3–12) to choose how many swatches the tool should return. Higher counts surface secondary colors but may include near-duplicates.

  3. Wait for extraction

    Extraction runs on the main thread and typically finishes within a second for typical images. The button label briefly switches to 'Extracting…' while it runs.

  4. Read and copy the result

    Click any swatch to copy its HEX value. Click Copy JSON to grab a ready-to-paste array of `{ name, hex }` objects for design tokens or a `tailwind.config.js` block.

Use cases

Designing a matching UI theme

Extract the palette from a hero photo or brand mark and use it as the basis for a website theme — colors are already visually coherent because they came from one source image.

Auditing a brand's color usage

Run the tool on every logo variant or marketing asset to confirm the brand colors actually dominate, and to discover accidental secondary colors.

Building inspiration boards

Drop in a mood-board image and lift the palette directly — the JSON output is ready to paste into Figma variables, Tailwind config, or CSS custom properties.

Common mistakes

Mistake:Assuming the image is uploaded to a server.

Fix:The image is loaded with URL.createObjectURL and never transmitted. Pixel data is read locally from a <canvas> and discarded when you reload the page.

Mistake:Cranking the color count too high.

Fix:Setting Max Colors to 12 on a small palette yields near-duplicate swatches. Start at 5 and only increase if your image clearly has more than five distinct colors.

Mistake:Trusting the result on highly compressed JPEGs.

Fix:Heavy JPEG compression introduces noise that the tool may pick up as a separate color. For the cleanest result, upload PNG or WebP when possible.

Frequently asked questions

References & standards