Can Claude Code see images?
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.
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.
What this is good for.
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.
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.
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.
Other inputs we put to the test.
Same method each time — a probe with a value nothing could guess, and the timing recorded.
Frequently asked.
Quick follow-ups people search after this question.
Q · 01 How do I give Claude Code an image? +
screenshot.png and tell me what's failing". Surfaces that support drag-and-drop accept that too; the terminal route needs a path.