How we curate every palette

ihatecolors is a curated library of 2,700+ color palettes for web, brand, product and print design. Every palette in the library passes the same pipeline before it ships: theory scoring, accessibility testing, uniqueness checks and periodic re-review. This page documents that process — because a color library is only useful if you can trust what's in it.

Last reviewed: October 2026

1. Sourcing & naming

New palettes come from three places: our own design work, community submissions through the upload page, and gaps we identify in the library's coverage — for example, adding depth to categories with fewer than a certain number of quality entries. Nothing is scraped from other tools.

Every palette carries a specific, human-readable name ("Santorini Sunset", not "Palette 1731") chosen to describe what the combination actually evokes. A palette only earns a place in the library if it can be described in a sentence: where it would live, what it communicates, and why the four colors belong together.

Rejections are common: near-duplicates of existing schemes, combinations with no discernible use case, and "technically harmonious but ugly" ramps all get cut. Volume is never the goal — the library grows only when a new entry is genuinely worth a designer's time.

2. Color-theory scoring

Each palette is scored against the five classical harmony rules — complementary, analogous, triadic, split-complementary and tetradic — by measuring the hue positions of its colors on the color wheel. Palettes that don't sit close enough to one of these relationships are flagged and either re-tuned or rejected.

The harmony rule a palette follows is displayed on its detail page, along with a hue wheel showing the exact relationships, so you can judge the structure yourself rather than taking our word for it.

3. Accessibility testing (WCAG 2.1)

Every palette is tested for WCAG 2.1 contrast compliance before publication. We compute relative luminance for each color and score the background/text pairing that the palette's design roles imply, then publish the grade — AAA, AA, or Fail — on the palette's page alongside the exact contrast ratio.

Every palette page also shows a full contrast matrix: each color tested as text on every other color as background, with the safe use cases for each ratio. We would rather tell you a palette fails for body text than let it ship as a "dark mode" scheme that isn't readable.

4. Uniqueness enforcement

The library's build pipeline rejects any new palette whose exact color ramp already exists under a different name. Slugs are unique across all 2,700+ entries, and every category page (by mood, dominant color, or use case) is checked for thin coverage before each release so the library stays balanced instead of lopsided.

5. Ongoing maintenance

The library is a living thing, not a one-time dump. Each release cycle we:

  • Re-check contrast data and fix any values that no longer match our scoring pipeline;
  • Deduplicate slugs and color ramps flagged by the build's uniqueness checks;
  • Review category pages for thin or overlapping coverage;
  • Refresh examples, pairings and usage guidance on existing palette pages.

Tool pages evolve too — the AI palette generator and Palette Studio are re-tested with every release of the scoring engine so their output stays consistent with the library's standards.

6. Corrections & feedback

If you find a wrong hex value, a mislabeled mood, or an accessibility claim that doesn't hold up, tell us via the contact page and we'll fix it — corrections to factual data (hex codes, contrast ratios) take priority and usually ship within a release cycle.

For anything else about how the library works — licensing (all palettes are free for commercial use; individual colors can't be copyrighted), bulk access, or attribution — the FAQ covers the common cases.

Skip to content