Color planning

Miniature Photo Palette Extractor

You have a photo of a painted miniature, a color scheme card, a piece of artwork or a poster, and you want the colors out of it in a form you can paint from. Drop it in and the page reads the pixels on a local canvas and hands back the dominant colors as hex codes, with how much of the picture each one covers and a rough hue family to hunt for on your rack.

  • Four to ten swatches with hex codes and coverage
  • Rough hue families — reds, browns, teals and the rest
  • A starting plan: base, shade, highlight, spot color
  • Read on your device — the photo is never uploaded

This reads pixel colors only. It does not identify paints and does not match hex codes to pots from any brand.

Load a photo

Drop a photo in here

PNG, JPEG, WebP, GIF, BMP or AVIF, up to 20.0 MB. The file stays on this device — nothing is uploaded and nothing is stored.

No file chosen — the built-in sample photo is loaded.

Four gives you the broad shapes. Ten starts pulling out trim, lenses and eyes — and starts splitting one color into near-twins.

The sample photo is loaded. Drop in your own photo, or press Extract the palette to read the sample again.

Dominant colors

Read from 2,666 sampled pixels, cut into 6 boxes.

Source: the built-in sample photo

These 6 colors land within a near match of 89.0% of the sampled pixels.

  • #8A8D9ANeutrals, grays & blacks · mid-tone · 26.3%
  • #68472DBrowns & tans · shade · 18.9%
  • #8D9296Neutrals, grays & blacks · mid-tone · 16.6%
  • #684B32Browns & tans · shade · 16.2%
  • #4C5159Neutrals, grays & blacks · shade · 12.9%
  • #8E2D35Reds · shade · 9.0%

A starting plan

  • Base coat#8A8D9AThe biggest single area in the photo at 26.3% of the sampled pixels, and a mid-tone in the Neutrals, grays & blacks family — a sensible color to cover the largest surfaces with.
  • Shade#68472DThe darkest color in the extract (#68472D, shade). Mix it into the base or run it into the folds where the light does not reach.
  • Highlight#8D9296The highest value left (#8D9296, mid-tone). Save it for edges and upward-facing planes — in a photo it is usually glare, so use less of it than the pixels suggest.
  • Spot color#8E2D35The most saturated color still unused (#8E2D35) at 9.0% of the photo. Good for gems, lenses, trim and anything you want the eye to catch.

Hue families in this photo

  • Neutrals, grays & blacks55.8%#8A8D9A · #8D9296 · #4C5159Metal, stone, cloth and backdrop all land here. Near-whites and near-blacks carry the lightest and heaviest values in the photo.
  • Browns & tans35.2%#68472D · #684B32The leather, wood and hair end of the photo. Deep browns double as a shading color under almost any warm base.
  • Reds9.0%#8E2D35Warm and strong. On a miniature a straight red rarely sits on a whole surface, so keep the mid-tone as the base and darken it for folds.
  • The backdrop trim dropped 72.2% of the sampled pixels that matched the flat color in the corners (#2E5C8A).
  • 89.0% of the sampled pixels sit within a near match of one of these colors, so the list covers the photo rather than just the loudest parts of it.

How the palette gets read

1. Pick a photo of the thing you want to paint

A model on a plain background gives the cleanest read: daylight, no flash, and the figure filling most of the frame. A phone shot on a blue cutting mat works, but tick the backdrop trim so the mat does not become your palette.

2. The browser scales it down and reads the pixels

The photo is drawn onto a canvas no bigger than 480 pixels on its longest edge, then sampled on an even grid. That is why a 12-megapixel photo is not slower than a small one, and why nothing has to be sent anywhere to be counted.

3. The colors are cut, not guessed

The page splits the sampled colors into boxes, always halving the box with the widest spread of color, and repeats that until it has as many boxes as you asked for. Each swatch is then a real pixel from your photo — the one sitting closest to its box's average, not a blend — and its share is counted by assigning every sampled pixel to whichever swatch is nearest. That is what makes the percentage a coverage figure instead of a guess.

4. Read the families, then plan the paint

The hue families tell you which part of your rack to look at, and the starting plan turns the list into a base, a shade, a highlight and a spot color. From there it is your eyes and your own paint — this page never guesses a pot number.

A worked example, with real numbers

Everything below was calculated by the same functions the page runs in your browser, from the built-in sample photo — a small painted figure in steel armor and a crimson cloak, photographed on a blue cutting mat. It is the palette the tool shows before you load anything of your own, so you can check the arithmetic against what is on screen.

The sample photo cut into 6 swatches.
SwatchCoverageFamilyValue
#8A8D9A26.3%Neutrals, grays & blacksmid-tone
#68472D18.9%Browns & tansshade
#8D929616.6%Neutrals, grays & blacksmid-tone
#684B3216.2%Browns & tansshade
#4C515912.9%Neutrals, grays & blacksshade
#8E2D359.0%Redsshade

`Read it like a photo, not a paint list. The biggest swatch came back at $#8A8D9A with $26.3% of the pixels, and the smallest at $#8E2D35 with $9.0%. Before you decide to buy a pot for a color, look at that share: it is how much of the model that color actually has to cover.`

`The crimson cloak is the useful lesson here. It is the color your eye goes to, and it still only owns $9.0% of the pixels — $#8E2D35 — because a cloak is a small part of a figure standing on a big mat. A photo palette rewards whatever covers the most area, so pick your spot colors on purpose instead of by share.`

`The backdrop trim was on for that run, and it dropped $72.2% of the sampled pixels — the blue cutting mat — before any color was counted. Turn the trim off and the mat comes back as the biggest swatch in the palette, which is exactly what you want when the “backdrop” is a color you plan to copy.`

`One more honest note on the numbers: $89.0% of the sampled pixels sit within a near match of one of the $6 swatches. The rest are the gradients between them — the shading down the armor, the fold in the cloak. That is expected, and it is why a palette is a starting point rather than a stencil.`

What this page will not do

I would rather tell you the edges of a tool than have you find them halfway through a project.

  • It reads pixel colors only. It does not identify paints, match a hex code to a pot, or know which brand you own — a color-equivalence claim would need a dated cross-brand database, and that is not something this page can honestly keep up to date.
  • Photo lighting is in the palette. Warm indoor light, a cast shadow or a white-balance miss will shift every swatch, so treat the hex codes as a starting point rather than a color reference.
  • The near-match coverage figure uses one fixed distance for the whole photo. It is a rough usefulness check on the extract, not a color-science measurement.
  • Backdrop trim is a simple corner-color test with a fixed tolerance. It handles a flat paper, mat or studio background; it will not cut a figure out of a busy scene.
  • Pale highlights are usually glare rather than paint. The brightest swatch in a photo is often lighter than the paint actually on the model.
  • Your browser has to be able to decode the file. PNG, JPEG, WebP, GIF, BMP and AVIF are the formats the page offers; a RAW file or a CMYK TIFF will not open.
  • Nothing is stored, so closing the tab loses the palette — copy or download it first.

Where to take a palette next

If you want the whole beginner workflow — what to buy, in what order, and how to stop a first squad from looking like a test piece — that is what The Miniature Painting Level Up Guide is for. $17, 60+ pages, and no, you do not need it to use this page.

Questions I get about reading colors from a photo

Does this tell me which paint pots to buy?

No, and it is worth being blunt about that. The page reads the colors of the pixels in your photo and nothing else: it has no paint database, no brand catalog and no idea what is on your rack. Use the hex codes and the hue families to narrow down where to look, then eyeball your own paints — or a paint rack chart — against the swatches.

Where does my photo go when I use this tool?

Nowhere. The file is read by your own browser, drawn onto a canvas in the page and sampled in memory. It is never uploaded, never written to a URL, never stored in local storage and never sent to an analytics service. Close the tab and the pixels are gone.

Why does the palette change when I ask for more swatches?

Because the colors are cut into a fixed number of boxes. With four swatches the whole photo is described by four averages; with ten, the page keeps halving the widest-spread box, so narrow bands — a stripe, an eye lens, a gold trim — get their own box instead of being averaged away. More swatches is not more accurate, it is more detail.

What does the percentage next to each swatch mean?

It is the share of sampled pixels that ended up in that color's box. A swatch at 32% means roughly a third of the picture is that color. It is a coverage figure, so a backdrop or a large cloak will always outrank a gemstone, however interesting the gemstone is.

Can I use a color scheme card or a piece of artwork instead of a miniature?

Yes — any photo works, and a painted color-scheme card is actually the cleanest input because the lighting is even and the swatches are flat. Artwork is harder: a painting has shadows, highlights and reflected color baked in, so the extract will describe the light in the picture as well as the local colors.

What is the backdrop trim doing?

It averages the four corners of the photo and, if they agree with each other, treats that color as the surface the model is standing on and drops the pixels that match it before counting. It is why a miniature photographed on a blue cutting mat does not come back as a blue palette. If the corners disagree, nothing is trimmed.

Are the hex codes usable outside the hobby?

They are ordinary sRGB hex values, so you can paste them into a design tool, a painting app or a notes file. What they are not is a print specification: this page does not do CMYK conversion, color management or ink matching, so do not treat them as press-ready values.