All projects

Figma plugin

Design systems

2026

Acquire Color: turn any image into a colour system.

A Figma plugin that extracts colours from any image and turns them into ready-to-use design tokens (shade scales and accessible semantic roles) exported as Variables, Styles or a canvas board.

Project

Figma plugin

My role

Product Designer: UX, UI & handoff

Timeline

2026

Tools

Figma · Plugin API

4 steps

Source → Colors → System → Export

Material 3

Semantic tokens mapped to M3 roles

WCAG 2.1

Auto-tuned contrast in one click

Overview

Designers often start a palette from a photo or moodboard. Acquire Color does the slow part: it extracts the colours, builds full shade scales, assigns accessible semantic roles and creates the Variables or Styles, in four calm steps, without leaving Figma.

Acquire Color case study image

The problem

  1. Manual eyedropping: Picking colours from an image is slow and inconsistent.

  2. Scales by hand: Building 9–11 shades per colour and naming them takes hours.

  3. Contrast found late: Accessibility issues surface after screens are designed.

  4. Tedious setup: Dozens of variables and styles created one by one.

Design decisions

Calm in a small panel

A four-step stepper

The decision: Source → Colors → System → Export; completed steps are clickable, upcoming ones locked.

Why it matters: A complex job stays focused inside a 400px panel.

Start where you are

Source from file or canvas

The decision: Upload or drag in an image, or use a selected image layer, processed locally.

Why it matters: Works with existing moodboards and reassures privacy-conscious teams.

Curate, don’t dump

A named, ranked palette

The decision: 5, 8 or 12 colours sorted by coverage with names like Blush Sand; Refine merges near-duplicates; pick 2–3.

Why it matters: A focused palette is a usable palette.

Keep the image’s colour

Primitives built around the source

The decision: 5–11 shade scales keep the extracted hex at its closest step, plus an auto warm-grey neutral.

Why it matters: The system feels like the image, not a generic ramp.

Accessible by default

Semantic tokens with live contrast

The decision: Tokens alias primitives and map to Material 3 roles, with WCAG 2.1 badges and an Auto-tune button that fixes failing contrast.

Why it matters: Contrast is checked while choosing, not after.

Export where you work

Variables, Styles or canvas

The decision: Aliased Variables with correct scopes, colour styles or a documented board, with live counts and a success screen.

Why it matters: Tokens land ready to use in any workflow.

Acquire Color case study image

Export

One click creates 52 variables (primitives plus aliased semantic tokens), 52 colour styles, or a documented board on the canvas. The success screen shows exactly what was created.

Acquire Color case study image

Built & shipped

The working plugin runs in light and dark, with a theme toggle in the header, and semantic sets for both modes.

Acquire Color case study image

Developer handoff

  • Local k-means / median-cut extraction on a ≤ 512px downsample

  • Smart refine with ΔE thresholds for keeping and merging colours

  • Variables API: primitives as COLOR, semantic tokens as aliases with scopes

  • Implementation notes on every screen

Impact

  • 4: steps from image to tokens

  • 16: semantic roles mapped to M3

  • 1 click: to WCAG 2.1 compliance

  • 3: export destinations

What took hours of eyedropping, naming and manual setup now takes a few clicks, an accessible colour system lands straight in Figma Variables or Styles.

What I learned

  1. Constraints sharpen UX: A 400px panel forced one clear decision per screen.

  2. Design for the builder too: Notes on every screen made the handoff faster.

“Processed locally, your image never leaves Figma.”

Acquire Color source screen

Next project

Wobble Club: huggable friends have arrived.

SCORE0000000/30/8

Create a free website with Framer, the website builder loved by startups, designers and agencies.