Last verified

Can Claude Code see images?

Yes.
Genuine vision · tested on PNG

Yes, and we designed the test so a lucky guess wouldn't pass. We generated a solid magenta PNG — colour stated nowhere in the filename or metadata — and asked for the dominant colour. It answered "Magenta" in 9.7 seconds on CLI 2.1.170. A second probe returned correct pixel dimensions. Point at a file in your prompt; no flags, no upload step.

Named a colour it could only have seen — magenta, 9.7 s Correct dimensions on a second probe — 100×50 No setup — name the image file in the prompt PNG only in our runs — other formats untested by us It doesn't generate images — reading and making are different jobs
§ 01 / PROOF

We actually ran it.

Methodology →
TEST RUN · AUG 01, 2026 · 2 PROBES

One probe proves nothing; the second one is the test.

The first probe was a 100×50 PNG, and Claude Code returned those dimensions correctly. That result is weaker than it looks: width and height sit in the PNG header as plain bytes, so a tool that merely parsed the file would answer the same. We kept the run for the record and treated it as inconclusive.

The decisive probe was a solid magenta image, 120×80, generated on the spot. The colour appears nowhere in the filename (colour.png), nowhere in metadata, and cannot be inferred from anything but the pixels. Asked for the dominant colour, it replied "Magenta" in 9.7 seconds. That is vision, not parsing.

Scope, so you can judge the claim: both probes were PNG files on CLI 2.1.170. We did not test JPEG, WebP, SVG, screenshots of text, or diagrams — all plausible, none measured here.

Decisive probe: solid magenta PNGSize: 120×80 · 222 bytesAnswer: "Magenta"Elapsed: 9.7 sSecond probe: dimensions, correctFormats tested: PNG only
# colour.png — generated solid magenta, 120x80
# colour named nowhere in the file or its name
$ claude -p "Look at colour.png. Reply with ONLY
the dominant colour name."
Magenta
→ 9.7 s
$
§ 02 / WHY

What this is good for.

2.1
The everyday use is a screenshot

Reading a generated image is a party trick; the practical version is handing over a screenshot of something broken. A stack trace in a terminal you can't copy from, a rendering bug, a design mock next to your implementation, a chart in a spec — all become describable inputs rather than things you have to transcribe.

The workflow is the same as any file: name the image in the prompt, or drop it into the session where the surface supports that.

2.2
Seeing is not generating

Two capabilities get conflated. Claude Code can look at an image you give it; it does not produce images. If you need a diagram or an asset generated, that's a different tool entirely — and if you want a chart from your data, the realistic route is asking it to write the code that renders one.

2.3
Images cost more than they look

An image becomes input tokens like everything else, and a full-resolution screenshot is not a small input. One or two in a session is unremarkable; feeding a folder of screenshots is a decision with a price. On metered credits, check the usage counter the first time you do it at volume.

Frequently asked.

Quick follow-ups people search after this question.

Q · 01 How do I give Claude Code an image? +
Name the file in your prompt, the same way you would a source file — "look at screenshot.png and tell me what's failing". Surfaces that support drag-and-drop accept that too; the terminal route needs a path.
Q · 02 Can it read text inside a screenshot? +
Our probes tested colour and dimensions, not text recognition, so we won't state a result. It's the most common real use, and it's worth a 30-second test of your own: screenshot an error, ask what it says, compare.
Q · 03 Can Claude Code create images? +
No — reading and generating are separate capabilities, and this is a coding agent. For a chart or diagram, the practical answer is to have it write the code that renders one.
Q · 04 Which image formats work? +
We only ran PNG. JPEG and other common formats are widely used with Claude and would be reasonable to expect, but we didn't measure them and won't put them in the verdict.