A palette extractor ranks area, not the accent your eye finds
Versely's extractor buckets pixels by occupancy, so a tiny neon logo can be missing from the hex list even when it is the only colour anyone remembers.
Versely's extractor buckets pixels by occupancy, so a tiny neon logo can be missing from the hex list even when it is the only colour anyone remembers.
Colour Palette Extractor does not ask what pops. It asks what occupies. Pixels are grouped into similar-colour buckets and those buckets are ranked by how many pixels land in each. The hex list is the top of that ranking. A two-percent neon mark on a cream pack shot loses to the cream, the wood, and the shadow, even though every viewer will swear the brand is the neon.
That is not a bug in the swatch UI. It is the job the histogram is for.
Occupancy is the rank, salience is not
The eye is a salience detector. A small saturated accent against a quiet field wins attention. A canvas histogram is an occupancy detector. It does not know the logo is the product. It knows 38% of counted pixels are oatmeal, 22% are warm grey, 14% are the counter, and the remaining slices are skin, bowl, and window. The neon can sit at 1.4% and never make the eight swatches the tool returns.
The grouping is coarse on purpose. Each RGB channel is quantised to five bits — 32 levels — so near-identical photograph noise collapses into one bucket instead of 40,000 unique “colours.” Without that, a phone still of a kitchen returns a list of almost-creams and the top of the ranking is meaningless. The swatch you see is not the bucket centre. The tool averages the real RGB values that fell into the bucket, then emits that average as hex and a share of counted pixels.
Transparent pixels do not count. Alpha below 128 is skipped, so a logo PNG on a checkerboard is not 50% fake grey. Occupancy is of the painted area, not of the canvas padding.
Do not treat the missing neon as “the extractor failed to see the brand.” It saw it. The brand did not occupy enough area to rank.
Why the sample is 160 pixels on the long edge
Full resolution buys nothing for this ranking. A 4000px plate is millions of pixels that still cluster into the same five-bit buckets. The tool draws the image to a sampling canvas whose long edge is 160 pixels, then reads that. The occupancy order is stable. The hex values stay averages of the sampled pixels, not of a different file.
That is also why a tiny mark disappears more aggressively than you expect. At 160px, a logo that was 80px on a 4000px master is a handful of samples. Those samples still join a bucket. The bucket still loses to the wall.
Eight swatches is the published top of the sort, not a promise that the brand is among them. The share under each hex is n / counted after transparency is dropped. Read the percentages. If the eighth colour is already 4% of the frame, anything smaller than that was never going to appear.
Catch the accent without inventing a palette
When the remembered colour is missing, change the crop, not the algorithm.
- Crop to the mark. Export a tight still of the logo, the cap, the stitch, the LED. Run the extractor on that crop. Occupancy inside the crop is occupancy of the accent. The hex that comes back is the one the full-frame histogram buried.
- Eyedropper the pixel. A histogram will never beat a single-pixel read when the job is “this exact neon.” The extractor is for the world the frame actually lives in — the creams and woods you will have to match if a later generate is going to sit next to this still.
- Do not prompt a model to “extract the brand palette.” That is a generate. You get a cousin image and a hallucinated swatch card. You do not get occupancy of the file you already have.
The full-frame list is still useful. It is the plate’s real atmosphere. Feed those dominant hexes into a prompt if the next shot has to live in the same kitchen. Feed the cropped-logo hex if the next shot has to hit the mark. Those are two different inputs. Mixing them is how a generate “has the vibe” and misses the logo.
Hex is input to a later generate
Hex-locked colour is the other half. Pulling #C4A574 from a locked still is free and local. Asking a model to land that value is a generate, and only some rows treat hex as a spec rather than a hint. Bind the code to an object (“the strap is #C4A574”) instead of floating it. Verify a pixel on the output. Do not trust that a prompt containing the right string produced the right paint.
A brand kit is how the value stops being retyped. Set the kit with the occupancy hexes you actually intend to keep — including the accent you cropped for, if the brand is the accent. The kit is a merge, not a wipe. Adding the neon later does not delete the oatmeal.
None of that makes the extractor a grade, a LUT, or proof two clips match. If two series land three hex values apart in the same hue family, you do not have a second channel. Sample the frames you will ship. The free-tools shelf is Canvas and the File API. The catalog is the meter that spends credits. Count first. Generate second.
FAQ
Why is the neon logo missing when it is the only colour I remember?
Because the list is ranked by area. A small accent occupies few pixels. Crop to the mark and extract again, or read one pixel with an eyedropper. Do not generate a “better” palette to force it onto the list.
Can I paste these hex codes into a video prompt?
Yes. Models respond more consistently to an explicit hex than to “warm beige.” Pull from a locked still, bind the code to an object, then generate. The extract is occupancy of the file. The generate is a later bill.
Does a higher-resolution upload give a better palette?
No. The ranking is computed on a 160px-long sample with five-bit buckets. Extra source pixels do not change occupancy order. A tighter crop does.
Is this the same as asking an image model to describe the colours?
No. A describe-the-colours generate is a caption of a cousin image. This tool returns the top eight occupancy buckets of the file you chose, with share percentages. Different objects, different jobs.