Get Exact Hex Colour Codes from a Photo | Tinta
Frequently asked questions
- What format are the colour values in?
- Exact HEX on every swatch, written as uppercase #RRGGBB, so a value can be pasted straight into a design tool rather than eyeballed off an image.
- Why not just use an eyedropper on the photo?
- An eyedropper gives you whatever pixel you touch, which in most photographs is the background. Tinta clusters the colours and weights them toward the subject, so the values describe the colour you actually meant.
- Can I get a matching scheme instead of single colours?
- Yes. Tinta suggests harmonies when you want a coordinated set rather than isolated samples.
- How many colours does Tinta pull from one photo?
- Up to six by default, ordered by how much of the frame each colour occupies once the subject is weighted. They arrive as draggable paint chips, each with its own HEX value.
- Is the HEX the same kind of value as a Pantone or a CMYK build?
- No. It is an sRGB screen value — an exact coordinate, not a named colour. Converting it to a spot or print colour is downstream work you still have to do.
- Do the values need an account or a subscription?
- No. Extraction is entirely on-device with no account, and the free tier pulls palettes from any photo. Pro adds every mount style, harmony colours, custom typography and watermark-free 4K export.
The short answer
Tinta puts an exact HEX value on every colour it pulls from a photo. Point it at a picture and
each swatch in the palette arrives with its own #RRGGBB — uppercase, six digits, ready to paste
into a stylesheet, a design file or a paint bucket without a second trip back to the image. It
reaches those numbers through subject-aware clustering: it reads the colours belonging to what you
actually shot, not the largest flat region in the frame, which in most photographs is the
background. Extraction runs entirely on your phone, so getting the values costs nothing and uploads
nothing.
If you would rather just try it, Tinta is on the App Store. The rest of this page is about what the number means once you have it, and where it stops being useful.
Why you are here
Nobody wants a hex code as an end in itself. You want it because something downstream has to agree: a developer reproducing a look, a paint order, a mockup that has to sit next to a real object. It fails in two different ways.
The value came from the wrong pixel. An eyedropper returns whatever is under the cursor, and in most photographs the biggest, flattest, easiest-to-hit region is the backdrop. Sample a portrait against a wall and you get the wall; sample a product on a seamless sweep and you get the sweep. The tool worked perfectly and the answer is still wrong, which is the worst combination.
The value is an approximation nobody flagged. You looked at the jacket, decided it was rust,
wrote #C98B5E into a stylesheet, exported a layout, and handed it to someone. Every artefact from
that point on inherits your guess. It will never look obviously wrong — it is close enough to read as
correct — and it will never quite match the photograph either. The second failure is the expensive
one, because it is invisible. That is the entire case for extracting a value instead of composing it.
What "exact HEX" actually means here
HEX is a coordinate, not a name. #RRGGBB is six hexadecimal digits describing a position in the
sRGB cube — 24 bits of address, about 16.7 million positions. It carries no meaning on its own:
#C05A2E tells you a precise location in colour space and nothing about what the colour is called,
what it looks like next to #C05A3D, or whether it works on the surface you have in mind.
It is exact in a specific sense. Exact means this is the real value of the colour Tinta selected in your photograph — not a value re-read off a compressed thumbnail, not a colour you adjusted until it looked plausible. Six hex digits is the full precision of an sRGB colour; there is no fourth digit of truth hiding behind it.
Exact is scoped to the photograph. A photo is a measurement of light, not of an object. The green on a wall at golden hour is an exact reading of what that wall reflected at that hour — not a measurement of the paint on the wall, and no on-device tool can make it one.
How the number is derived
A photograph contains thousands of distinct colour values, and "the colours in this photo" is not a well-posed question until something decides which of them count.
Tinta's pipeline is three steps. The image is downsampled so the work stays fast on a phone. Pixels belonging to the subject are then weighted using the system's saliency analysis, so colours in the thing you photographed count for more than colours in the scenery. Finally the resulting pixel set is quantised by median-cut — colour space is split recursively along its longest axis until the requested number of clusters exists.
That last step is what keeps a rust jacket and a beige wall from collapsing into one average tan. Picking the most frequent pixel, or averaging nearby colours together, fuses two colours that differ in hue and are only neighbours in space. Splitting along the longest axis separates hues first, which is why the palette reads as rust and beige rather than mud.
Up to six colours come back, ordered by how much of the frame each occupies once the subject weighting is applied — so the first swatch is the one the photo is actually about. Each carries a semantic role alongside its value: dominant, secondary, accent or neutral. On the card, the text printed over each chip flips between black and white according to the colour's relative luminance, so you are always reading the number and never squinting at a chip that has swallowed it.
Why the value beats the one you would have written down
An eyeballed value is a claim about a picture; an extracted value is data. You can diff two palettes, sort them, check one against another, and find which step broke when something looks wrong. And it stops travelling badly — paste it into CSS and it is the same value on every machine that loads the stylesheet, so nobody downstream has to re-interpret a photograph to find out what you meant.
Where the number stops being useful
Worth being blunt about, because the failure is expensive when it comes late.
- It is a screen value. sRGB only. A Pantone reference, a CMYK build and a fabric or paint chip are different colour systems with different numbers, and converting between them is work Tinta does not do. If your next step is a printer, you still owe that conversion.
- It is a measurement of light. Golden-hour green is not the colour of the paint. Tungsten, overcast daylight and a phone's white-balance correction all move the number, and each of those readings is internally consistent.
- Flat images have no right answer. Six-way median-cut on a low-variation frame — a blank wall, a foggy field, a plain gradient — will return six clusters that are arbitrary partitions of the same beige. The number stays exact; the premise was thin.
- Phone processing happened first. Noise reduction and sharpening in the camera pipeline reshape detail before any extraction tool sees it. Nothing on the device undoes that.
None of this is a reason not to extract. It is a reason to know you are copying a coordinate for what is on your screen, and deciding separately what to do with it.
How it compares to the obvious alternatives
The other common route is a web colour picker: several will return a full palette from an uploaded image, and uploading the photo is the whole cost. For a tool whose entire input is your camera roll, that is a trade most people make once and then regret on a photo they would rather not have sent anywhere.
Designer tools can sample too, but only at a desktop with the file already open, and the sample still has to be placed by hand. Tinta does the selection on the phone, at the moment the colour is in front of you — and the value stays attached to something real: a mountable card you can reframe, save at up to 4K and share, rather than a string in a notes file with no record of where it came from. See saving a colour card as an image for the export side, and building a colour scheme from a photo when you want the values to agree with each other rather than merely exist.
What Tinta does differently
Tinta is built around the assumption that a palette is only as good as the selection behind it, and that the selection has to happen on the device the photo lives on.
- Subject-aware extraction, not frequency counting — the values describe what you shot
- An exact
#RRGGBBon every swatch, in uppercase, no guessing - Up to six colours as draggable paint chips, ordered by weight, each with a semantic role
- Harmony suggestions when isolated values are not enough
- Twelve editorial mount styles — instant, film strip, arch window, diptych, spread, deckle edge and more — so the same values can be re-presented without changing
- Tiered export to 2K, 4K and lossless PNG, with P3 wide-gamut colour management
- Fully on-device: no account, no ads, no tracking SDKs, and photos never leave the phone. Even the place a photo was taken is resolved with an offline gazetteer, so no location is sent to a server either.
The free tier pulls palettes from any photo and exports a card at a standard size with a small watermark — enough to see whether the extraction reads correctly on your own pictures. Tinta Pro unlocks every mount style, harmony colours, custom typography, and watermark-free print-grade export up to 4K lossless PNG in P3, as a monthly or yearly subscription, with the price shown live in the app.
Its honest limits are the ones above: sRGB only, no Pantone or CMYK output, no brand-library matching, and no way to turn a photograph into a reading of a physical object. Tinta is a precise extractor of what a picture contains, not a colour-management system.
What to decide now
If a developer or designer has to reproduce the value without re-eyeballing it, extracting it beats composing it. If it is going into print, into a paint order or onto a physical object, treat it as the starting coordinate for a conversion rather than the answer. And if the photo is flat and the palette looks arbitrary, the problem is the photo, not the number.