AI image caption generator

Get a written caption for every image in your batch — automatically, in bulk, and without uploading a single file. Review the captions, fix the ones that are off, export the lot.

Open PicsTag — free

No account. No upload. Runs in your browser.

The problem with an uncaptioned library

A folder of ten thousand images with no descriptions is not a library, it is a haystack. You cannot search it, you cannot filter it, and the person who needs one specific photo will scroll for twenty minutes and then give up and use a different one. The asset was there. It just could not be found.

Captions are what make images findable, and they are also what make them usable downstream — in a CMS description field, a product feed, an image database, an accessibility audit, or an AI search index that reads text and not pixels.

They also never get written, for the most boring reason in the world: writing one is trivial, and writing four hundred is a day of your life.

How PicsTag captions your images

PicsTag runs an image-to-text model that looks at each picture and writes a sentence describing it. It does this for every image in your batch, one after another, and shows you the result next to the image so you can judge it at a glance.

  1. Add your images. Drag in a folder, or upload a CSV with the URLs of images you already host.
  2. Press Start. Nothing runs until you ask it to, and you can press Stop at any time.
  3. Review one image at a time. The caption sits in an editable field — fix it, rewrite it, or accept it and move on.
  4. Export. CSV or JSON, with the caption, the tags you accepted, the dimensions and the file size.

Alongside the caption, PicsTag also proposes keyword tags for each image, each with a confidence score. Caption and keywords come out of the same pass, so you get both for the price of one.

What the captions look like

The local model writes plain, literal descriptions — "a plate of food on a wooden table", "a man riding a skateboard down a street". That is deliberately unglamorous, and for a catalogue it is exactly right: you want the words a colleague would type into a search box, not prose.

Two honest limits, so you know what you are getting:

  • It describes, it does not identify. It will not know that the building is your headquarters or that the man on the skateboard is your CEO. Proper nouns are yours to add.
  • It is sometimes confidently wrong. It will occasionally call a cat a dog with total conviction. This is why the tool makes you look at every caption before it can be exported — the review step is not friction, it is the point.

If you need richer captions — full sentences with context, style, mood, and colour — switch to a cloud model in the settings with your own OpenRouter key. You get better output, you send the image to that provider, and you pay them. It is a real trade-off and the tool lets you make it consciously.

Nothing is uploaded

The captioning model is downloaded to your browser once (roughly 250 MB, then cached) and runs locally using WebGPU where available and WebAssembly everywhere else. Your images are read from your disk into your browser's memory and stay there. There is no server in this product, so there is nowhere for them to go.

That matters if you are captioning anything you cannot legally hand to a third party — client work, unreleased products, medical or legal imagery, or the private photo archive of an organisation that would rather not appear in someone else's training set.

Frequently asked questions

What kind of captions does it write?

One factual sentence describing what is in the image — the kind of line you would put under a photo in a catalogue, a CMS description field, or an image database. It is not a witty Instagram caption, and it does not try to be.

Can it caption hundreds of images at once?

Yes. Drop in a folder, or upload a CSV of image URLs. The images are processed one after another and you can stop the run at any point — everything captioned so far is kept.

Is there a limit?

No. The model runs on your machine, so there is no per-image cost and no quota. A large batch simply takes longer, and the speed depends on your hardware — a machine with WebGPU support is considerably faster than one falling back to WebAssembly.

Can I get better captions?

Yes, at a price. In the settings you can switch to a cloud vision model through OpenRouter using your own API key. Those models write noticeably richer captions and understand context the local model misses — but the image (or its URL) is then sent to that provider, and you pay them per image. The local model stays the default precisely because most people want neither the bill nor the upload.

What is the difference between a caption and alt text?

A caption is visible to everyone and adds context ("Team celebrating after the 2024 final"). Alt text is read only by people who cannot see the image, and describes it ("Football players embracing on a pitch"). They serve different readers, so they should not be the same sentence — see our alt text guide.

Try it on your own images

Free, no account, and your images never leave your browser.

Open PicsTag