ABOUT

About Hexroot

A free, browser-only color palette extractor. Every image stays on your device. No uploads, no accounts, no paywall.

How Hexroot fits the image-to-palette category

Coolors.co, Color.adobe.com, Khroma, Swatchery, and HexPickr will all pull colors out of a photograph. Only Hexroot ships a paste-ready CSS :root{} block, a Tailwind v4 @theme token group, and a full pairwise WCAG 2.1 contrast matrix from the same screen, with no account and no upload. The category is crowded. That combination is not.

How browser-based palette extractors are normally built

The standard recipe is three steps. Read the image into an off-screen <canvas>, sample the pixel data, then run a quantization algorithm (k-means, median cut, or octree) to collapse that sample into a small set of dominant colors. Most tools in this space use the same MIT-licensed color-thief library Hexroot uses. What separates one extractor from another is what happens after the quantizer returns its 8 colors.

That's where the category fragments. Coolors locks SCSS, CSS, and code exports behind a Pro paywall. Adobe Color requires an Adobe ID and returns a fixed 5 swatches. Khroma gates the whole tool behind a sign-up wall before you see a single swatch. Swatchery treats single-image extraction as a side feature behind its curated discovery library. HexPickr is the closest analog in spirit: simple drag-and-drop with HEX output. But it stops at the swatch and doesn't generate contrast pairings or framework-native exports.

The three design choices that split this category

When we built Hexroot the design space came down to three forks, and each one cuts out a real slice of the market.

The first is where the pixels go. A server-side extractor can run a beefier quantizer and cache results, at the cost of uploading whatever the user dropped in. A browser-side extractor is bound to the user's CPU and the Canvas API's quirks, but the image never leaves the device. We picked browser-only. The Network tab in DevTools shows zero outbound requests when you drop a JPEG into Hexroot. Designers pulling colors out of unreleased brand work, or product screenshots under NDA, should not have to trust a third-party server to handle the file.

The second is what counts as the output. The thinnest useful answer is a row of HEX strings. The thickest is the full design-token surface a front-end engineer pastes into a codebase. Most tools stop somewhere in the middle and charge for the rest. Hexroot ships 4 export formats from the same palette: a CSS :root{} block with named custom properties, a Tailwind v3 extend.colors config, a Tailwind v4 @theme token block, and a JSON design-token file compatible with Style Dictionary and Token Studio. One Copy All button per tab.

:root {
  --color-primary: #6BA8E8;
  --color-2: #3D6FA3;
  --color-3: #E8C56B;
  --color-4: #A37D3D;
  --color-5: #E87B6B;
}

The Tailwind v4 @theme export maps those same 5 tokens into the new CSS-variable-first system:

@theme {
  --color-primary: #6BA8E8;
  --color-2: #3D6FA3;
  --color-3: #E8C56B;
  --color-4: #A37D3D;
  --color-5: #E87B6B;
}

The third is whether contrast pairing ships with the palette. A palette that looks great in the swatch grid can fail accessibility the moment you put text on it. Hexroot computes the WCAG 2.1 relative-luminance ratio for every ordered pair of colors and grades each combination as AAA (≥ 7.0), AA (≥ 4.5), AA Large (≥ 3.0), or Fail. For a 6-color palette that's 30 graded pairs, shown on the same screen as the swatches.

Q: Why grade contrast pairwise instead of just against white and black?

Because the colors get used against each other in real UI. A --color-accent over --color-surface matters more than --color-accent over #fff, and most palette tools only test against pure black or pure white.

What Coolors, Swatchery, HexPickr, and Adobe Color each do better

Hexroot isn't the right tool for every job. Here's the honest read on the rivals, and the specific feature each one gates or skips.

ToolWhat it does betterWhat it gates or omits
CoolorsBest-in-class palette editor: drag to reorder, lock swatches, generate harmonies.CSS, SCSS, and code exports require a Pro subscription. No WCAG pairwise matrix on the free tier.
Adobe ColorTightest integration with Photoshop and Illustrator via Creative Cloud libraries.Requires an Adobe ID to save. Extraction returns 5 fixed swatches, no :root Copy All.
KhromaPersonalized recommendations: train a model on 50 colors you like, get curated palettes back.Mandatory sign-up before you see any output. No image-drop extraction.
SwatcheryBrowse a curated library of community palettes by mood, brand, or color family.Image extraction is a side feature; output is HEX-only with no framework exports or contrast grading.
HexPickrFastest no-frills drag-and-drop extractor with a clean UI.No CSS :root Copy All, no Tailwind config, no WCAG contrast matrix.

If you live inside Adobe's tools, Adobe Color belongs in your workflow. If you want a palette editor with harmony rules and color-blindness simulation, Coolors is worth the Pro tier. Hexroot competes on a narrower claim: drop a file, walk out with code that compiles.

The trade-offs you inherit with Hexroot

Choosing browser-only and free has costs worth naming.

The quantizer is color-thief's median-cut implementation. It's fast and good enough for most photographic input, but it's not as perceptually tuned as a server-side k-means run in Lab color space would be. On images with subtle gradient regions you may pull a slightly noisier palette than a paid tool with a heavier algorithm.

Hexroot doesn't save your palettes. No accounts, no history, no collections. If you want a palette later, copy the JSON token export and keep it in your repo. That's a real difference from Coolors and Adobe Color, both of which build their long-term value on the saved-library side of the product.

The contrast matrix grades pairs, not full UI scenarios. WCAG 2.1 ratios are computed against solid backgrounds; they don't model semi-transparent overlays, gradient text, or backdrop-filter blur. For those, you still need to spot-check in a real layout.

Q: Can I run Hexroot on a folder of images at once?

No. The tool is single-image by design. Batch extraction was the first feature we cut, because the WCAG matrix only makes sense per palette, and we'd rather ship one disciplined workflow than a batch endpoint that produces 100 ungraded swatch grids.

We'd switch back to Coolors the day we needed a harmony generator, and to Adobe Color the day we needed to push a palette into Illustrator without leaving the suite. For everything between “I have a hero image” and “I have a usable :root{} block with contrast ratings,” Hexroot is the shorter path.

FAQ

Frequently asked questions

Q.01

How do I extract a color palette from an image?

Open Hexroot at appcrib.com/hexroot, then drag a JPEG, PNG, WebP, or GIF onto the drop zone (or click to browse). Hexroot reads the file locally via the Canvas API, runs a median-cut extraction using the MIT-licensed color-thief library, and returns 3–12 dominant colors in under two seconds. Each color is shown as HEX, RGB, and HSL. No file is uploaded to any server.

Q.02

How do I turn an image into CSS variables?

After dropping an image into Hexroot, open the CSS Vars tab in the Export panel. Hexroot generates a ready-to-paste :root{} block with a --color-N custom property for every extracted color. Click Copy :root{} to copy the whole block to your clipboard, then paste it into your stylesheet.

Q.03

How do I generate a Tailwind config from an image?

Drop your image into Hexroot, then switch the Export panel to the Tailwind tab. Hexroot generates both Tailwind v3 (extend.colors) and Tailwind v4 (@theme) outputs from the extracted palette. Copy the block and paste it into your tailwind.config.js (v3) or your CSS entrypoint (v4).

Q.04

Is Hexroot really free? How does it make money?

Yes — Hexroot is 100% free with no account and no paywall. It is funded by display ads shown around the tool. There are no premium tiers, no feature gates, and no upsell. All exports — CSS, Tailwind v3, Tailwind v4, JSON tokens, and the WCAG 2.1 contrast matrix — are available to every user.

Q.05

Does Hexroot upload my image anywhere?

No. Hexroot processes every image entirely in your browser using the Canvas API. Your file is read by JavaScript, drawn to an off-screen canvas, and analyzed in your device's memory. You can verify this yourself: open your browser's DevTools Network tab before dropping an image — you will see zero upload requests. Closing the tab discards everything.

Q.06

How do I check WCAG contrast for an extracted palette?

After Hexroot extracts your palette, open the Contrast Matrix section. Hexroot computes the WCAG 2.1 contrast ratio for every pair of colors and grades each pair as AAA (≥7.0), AA (≥4.5), AA Large (≥3.0), or Fail. The matrix updates live whenever your palette changes, so you can rework the palette until every pairing you care about passes.

Q.07

What image formats does Hexroot support?

Hexroot accepts JPEG (.jpg/.jpeg), PNG (.png), WebP (.webp), and GIF (.gif). Any image format supported natively by your browser's Canvas API will work. For GIFs, Hexroot samples the first frame.

Q.08

Does Hexroot support Tailwind v4 @theme syntax?

Yes. Hexroot exports a Tailwind v4 @theme token block alongside the legacy Tailwind v3 extend.colors format. The v4 output uses the new @theme directive with --color-* tokens so you can paste it directly into your CSS entrypoint. Both v3 and v4 outputs are always generated.

Q.09

How is Hexroot different from Coolors?

Coolors is a palette editor that gates CSS variable export, Tailwind config export, and WCAG contrast checking behind a paid Pro plan. Hexroot focuses on image-to-palette extraction for developers and offers all of those exports — CSS :root, Tailwind v3/v4, JSON tokens, and a pairwise WCAG 2.1 contrast matrix — for free, with no signup. Hexroot is also browser-only: your images are never uploaded.

Q.10

How many colors can Hexroot extract from an image?

Hexroot extracts between 3 and 12 dominant colors from any image. The default palette size is 6. You can adjust the count using the palette-size control — fewer colors for a tight brand palette, more for a detailed design system.