Skip to main content

Color Theory

Color Palette Generator

Harmonious palettes from one seed color. Use it for rooms, décor mood boards, branding, or the web. Complementary through tetradic. Lock swatches, copy hex or CSS variables, export PNG. Runs offline in your browser.

By Jeff Beem

Color Palette Generator

Pick one seed color and play with harmonies, whether you’re thinking about walls, a website, or both. Drag the wheel, lock anything you want to keep, then copy hex or a full CSS variable block, or export a PNG for your mood board, to send to your contractor, or to bring along to the paint desk. It all stays in your browser.

#

Wheel updates while you drag; typing applies after a short pause (300 ms) or on blur.

Palette

Sometimes you’ll see a plain-English color name under a swatch. We only show it when a standard CSS name is a close match in perceptual color space. It’s just a handy label; trust the hex line above it for the exact color.

Recent palettes

Saved palettes are stored only in this browser on your device (local storage). They are never uploaded to our servers.

Use + Save current to keep a snapshot. Saved entries show up below.

Contrast vs white & black (WCAG AA 4.5:1)

Color Palette Generator: Harmonies, HSL Math, and Export for Designers

Build complementary, monochromatic, analogous, triadic, or tetradic palettes from a single seed color. Use it for paint and décor mood boards, a brand pass, or front-end code. Copy hex codes and CSS variables, export a labeled PNG, spin harmonies on an interactive wheel, and peek at WCAG contrast. The whole thing runs offline in your browser.

What This Color Palette Generator Does

This color palette generator is for anyone who wants a handful of colors that actually belong together: homeowners doodling paint and trim, renters testing accent ideas, folks in marketing nailing a mood, and developers who need tokens without the busywork. Start from one seed color on the wheel or typed as hex. Pick a harmony type next: complementary opposites, a monochromatic ramp, analogous neighbors, a triadic trio, or a tetradic rectangle. How many swatches you get follows the harmony (two for complementary, three for mono, analogous, or triadic, four for tetradic), same story the wheel is telling. Harmony buttons sit up top with tiny wheel doodles so you’re not digging through menus. Each swatch lists its hex in uppercase, picks readable text automatically, and sometimes adds a friendly nearest CSS named color when we’re confident it won’t fib.
  • Outputs you can ship:
    Click any swatch for a single hex. Copy all as CSS variables drops a ready-made :root block (--color-1 onward) into themes or components. Export as PNG saves a 1200 by 400 strip you can chuck into Slack, Notion, a binder, or your pocket at the paint store next to fan decks (still grab real chips under your lights; screens lie kindly). Nothing here phones home.
  • Designed for iteration:
    Lock individual swatches when you like a specific tone but want to experiment elsewhere. Locked positions are preserved when you drag the wheel or change harmony. The main color wheel is your primary control for the seed color. Recent palettes lists snapshots you save with + Save current (stored in this browser only).
  • Accessibility sense-check:
    Below the main grid, each color lists contrast ratios against white and black backgrounds with a simple AA pass or fail at the 4.5 to 1 threshold for normal text. That does not replace a full audit of your typography stack, but it surfaces obvious risks before you promote a shade to primary text or chrome.

How Harmony Math Works in HSL

Behind the scenes, hues relate on a circle (roughly matching how designers talk about “warmer,” “cooler,” or “opposite”). On screen you work with hex and an interactive wheel; the underlying harmony math follows standard color-wheel relationships for each preset mode.
  • Complementary:
    Two hues parked opposite each other on the wheel. Loud contrast when you want accents that actually pop.
  • Monochromatic:
    Same hue, different stops of tint or shade so walls, panels, and type can breathe without hopping hues.
  • Analogous:
    Neighboring hues around your seed for cohesive, low-drama palettes.
  • Triadic:
    Three hues spaced roughly 120 degrees apart. Feels energetic without sliding into chaos.
  • Tetradic:
    Four hues forming a rectangle on the wheel. Nice when you want one hero color and a few loud friends.

How to Use Each Control

Begin with Seed color: drag the interactive wheel or type six hexadecimal digits with or without a hash (updates apply after a short pause while typing). Invalid hex is ignored until complete. Surprise me picks a random seed and harmony and clears locks. Under Harmony, only one mode is active at a time; the active button uses a border tinted by your seed. Swatch count is determined by the harmony type, not a separate control.
  • + Save current:
    Happy with a row? Click + Save current under Recent palettes and it lands in the list. Saved rows stay in this browser’s storage on this machine; we never upload them.
  • Swatch interactions:
    Hover to see a Copy hex hint. Click the swatch area to copy. The lock icon toggles preservation for that index. On small screens the swatch grid adapts so colors stay easy to tap.
  • Exports recap:
    CSS variables arrive ready to paste into global theme files. PNG export draws flat rectangles with centered hex labels in high contrast text for quick stakeholder review. Because rendering uses the Canvas API only, exports remain deterministic for a given palette array.

Nearest Named Colors and Why They Are Approximate

That little subtitle is the nearest official CSS keyword when we’re sure it isn’t embarrassing. We match in CIELAB (ΔE) and bail out when the fit is weak so oddball grays don’t park on greens or blues. Eyes still beat formulas, so treat names as chatter at the coffee machine; hex wins arguments. Need industrial-grade tolerances for print runs? Polish these hex values elsewhere. Here we stay small, fast, and browser-only.

Contrast Ratios and Responsible Color Choice

WCAG contrast compares relative luminance of foreground and background using the standard sRGB gamma correction curve. This generator evaluates each generated color against pure white and pure black to bracket common extremes. Real interfaces rarely use pure white or pure black alone, so your component backgrounds may produce different ratios in practice. Use passes as a green light for rough typography pairing and fails as a prompt to lighten, darken, or shift hue before setting body copy atop decorative fills. Decorative icons and oversized headings have looser thresholds under WCAG, but the 4.5 to 1 badge keeps expectations aligned with body text defaults.
  • When a favorite color fails:
    Do not discard it outright. Layer it behind glass overlays, pair it with off-white ink, or reserve it for illustrations while choosing a slightly darker variant from the same harmony row for text containers.
  • Working with locked swatches:
    If a locked brand color fails contrast on your planned background, unlock adjacent swatches and regenerate analogous or monochromatic neighbors until one passes while staying on brief.

Workflow Ideas for Teams and Briefs

Product folks drop PNG snapshots into decks, then lift the same hex codes into Figma variables. Engineers paste the CSS chunk into tokens or Storybook without retyping a digit. If you’re repainting, share that PNG with your partner or contractor so everyone sees the same vibe, then confirm with real samples in your house. Teachers can spin the wheel live because swatches chase along. Nothing uploads to our servers, so palettes for your living room or a hush-hush brand stay on the device you’re using. Tap + Save current when you want a keepsake row in Recent palettes; clear history when your list gets messy.
  • Pair with conversion tools:
    After locking a palette, translate key colors into HSL or CMYK using a dedicated converter when print vendors require alternate spaces.
  • Random inspiration:
    Surprise me is intentionally playful: it breaks creative block by forcing unfamiliar seeds and harmonies.

Rooms, Trim, and Paint Shopping (Not Just Web and CSS)

Harmony rules don’t care if you’re staring at a hero banner or a hallway wall. Complementary and analogous palettes still feel deliberate in real rooms. Try monochromatic rows when you want ceiling, walls, and trim whispering the same hue, or tetradic sets when you crave a gutsy pillow, tile stripe, or door pop against quieter paint. We can’t beam your bedroom lighting into the screen or bottle pigment chemistry here; we can give you a sane thread so you’re not drowning in unrelated chips.
  • Translate screen to store:
    Bring the PNG export or written hex list when you shop. Staff can often suggest in-stock lines near your direction; large shifts in undertone usually show up once you compare printed or phone screens to paper samples under daylight and lamps at home.
  • Same palette, many materials:
    Once the relationships click, keep using that same hex row while you scroll upholstery, tile, or cabinets. Vendor names will change; the relationships you liked stay put.

Color Palette Generator FAQ

What is a complementary color palette?

Complementary colors sit across from each other on the wheel (about 180 degrees in HSL), so you get real contrast. This tool still gives you a full row of swatches, with tints and shades in the mix, not just two flat opposites, which is handier for apps, slides, or a wall color story.

How do triadic and tetradic harmonies differ?

Triadic means three hues roughly 120 degrees apart. It usually feels bright and bouncy but still organized. Tetradic (rectangle) means four hues stepped 90 degrees around the wheel, so you get two complementary pairs. Both are great when you need more than one accent. Triadic leans playful; tetradic can feel lush and seasonal.

Why does the tool use HSL instead of RGB?

HSL keeps hue, saturation, and lightness in separate knobs, which is how most of us talk about “a bit warmer” or “a touch lighter.” Nudging hue in HSL is predictable; the same nudge in RGB can look like a random jump. All the math to and from hex runs in your browser with the usual conversions.

What does locking a swatch do?

A locked swatch keeps its hex when you change harmony or spin the wheel. Everything else still updates. Clear the locks for a full do-over, or hit Surprise me if you want a random seed and a clean slate on the rules.

How accurate are the CSS named color labels?

If you see a name, we picked the closest standard CSS keyword using perceptual distance (CIELAB ΔE), and we hide the label entirely when the fit would be lame. Treat names as shorthand; the hex on the swatch is always the actual color we generated.

Can I use this palette for house paint or room design (not just websites)?

Sure. Plenty of folks start from the PNG or copied hex codes when they’re hunting paint, trim ideas, or a renovation mood board. Your screen isn’t the same as a wet wall under your bulbs, so use this as a direction. Bring the PNG or jotted hexes to the desk, grab chips or samples, and sanity-check before you commit.

What do the WCAG contrast badges mean?

We park each color next to pure white and pure black and read the contrast ratio. 4.5:1 or better hits WCAG AA for normal text. A “fail” is a nudge, not a ban. It just means you should pick a calmer background, a different text color, or a slightly shifted swatch for long reading.

Can I use the PNG export in commercial work?

Yes. The image is built right in your tab from the swatches and labels, no watermark, no extra service. You can use it however you like. For a real brand system, still file the official hex values in your tokens instead of eyedropping the PNG later on.