Skip to content

AI Image Describer: Captions, Alt Text & Tags

Try for free

Describe any image with AI: detailed captions, SEO alt text, keyword tags and the text visible in the picture. Image links, uploads or the images in another run's results, in any language.

🖼️ AI Image Describer: Captions, Alt Text & Tags

AI Image Describer looks at your images and writes what is in them: a caption at the detail level you choose, an alt text for accessibility and image SEO, keyword tags, and the text visible in the picture. Paste image links, upload files, or point it at the images in another run's results. Any output language, no setup, no API keys. $9.50 per 1,000 images, plus the AI model usage of your run.

✨ Why use AI Image Describer?

  • 📝 Four outputs from one look: caption, alt text (at most 125 characters), 6 to 12 tags and the readable text in the image, in one row per image.
  • 🎚️ Detail you control: one short sentence, two or three sentences, or a full paragraph about objects, people, setting, colours, lighting and composition.
  • 🎯 Focus on what matters: tell it to describe only the product, the background, or what people are doing.
  • 🔗 Works on your scraped data: give it the dataset of a product, social media or image search run; the image field is picked automatically and the original row can stay next to each description.
  • 🌍 Any language: captions, alt text and tags in English, German, Spanish, Japanese or any other language; visible text stays as written.
  • 🧩 Takes the files you have: JPEG, PNG, WebP, GIF, BMP, TIFF, AVIF and HEIC, links or pasted image data; large photos are scaled down automatically and transparent logos are shown on white.

🎯 Use cases

  • 🛍️ E-commerce SEO: alt text and tags for thousands of product photos in one run.
  • ♿ Accessibility: descriptive alt text for website, app and newsletter images.
  • 🗂️ Media libraries and DAM: searchable captions and tags for photo archives and stock collections.
  • 📱 Social media research: make scraped post images searchable by what they show and the text on them.
  • 🤖 Dataset labelling: captions and tags for training and evaluation image sets.
  • 🛡️ Content review: see what user-uploaded pictures contain before they go live.

🚀 How to use

  1. Put your images in Image links (one per line), use Upload images, or paste a Dataset ID from another run.
  2. Choose the Detail level and, if you like, a Focus such as "describe the product, its colour and material".
  3. Keep or turn off Alt text, Tags and Visible text, and set the Output language.
  4. Click Start. Each image becomes one row, in the order you gave them; a run summary is saved as the OUTPUT record.
  5. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
imagesImage links or pasted image data (data:image/png;base64,...), one per item
imageFilesUploaded image files
datasetIdDataset ID of another run whose images you want described
imageFieldsField(s) of that dataset that hold the image link; dotted paths and lists of links work (empty = picked automatically)
maxImagesStop after this many images (empty = all)
detailLevellow, medium or high (default high)
focusOptional instruction for what to describe
altText, tags, visibleTextExtra outputs (on by default)
languageLanguage of caption, alt text and tags (default English)
modelAI model as author/model (default google/gemini-2.5-flash-lite)
includeSourceItemCopy the original dataset row into each result
proxyConfigurationProxy for downloading linked images (datacenter by default)
{
  "images": [
    "https://images.unsplash.com/photo-1518791841217-8f162f1e1131?w=800",
    "https://images.pexels.com/photos/1108099/pexels-photo-1108099.jpeg?auto=compress&w=800"
  ],
  "detailLevel": "medium",
  "focus": "describe the animal and where it is",
  "language": "English"
}

📤 Output

FieldDescription
imageUrlThe image link as given (pasted data is shortened)
captionDescription at the chosen detail level
altTextAlt text of at most 125 characters
tagsLowercase keywords, most important first
visibleTextReadable text in the image as written, lines separated by line breaks; null when there is none
detailLevel, language, focusThe settings used
width, height, format, fileSizeBytesDetails of the original image file
modelAI model that wrote the description
status, error, errorCodesuccess, or error with the reason when an image could not be described
source, sourceIndex, sourceField, itemWhere the image came from: input, upload or dataset:<id>, its position, the dataset field and (optionally) the original row

Example row (detail level high, from a test run):

{
  "imageUrl": "https://images.unsplash.com/photo-1518791841217-8f162f1e1131?w=800",
  "caption": "A close-up, eye-level shot captures a tabby cat resting on a sofa. The cat is positioned centrally, with its front paws neatly tucked beneath its chest, and its body angled slightly to the right. Its fur displays a classic brown and black striped pattern, complemented by a white patch on its chest and bright, alert green eyes. The background is softly blurred, revealing the textures of light grey and pale pink cushions, suggesting a cozy indoor setting. The lighting is soft and diffused, highlighting the cat's features and creating a warm, inviting atmosphere. The composition focuses intently on the cat, drawing the viewer's attention to its calm and curious expression.",
  "altText": "Tabby cat with green eyes resting on a sofa, looking directly at the camera.",
  "tags": [
    "cat",
    "tabby",
    "sofa",
    "pet",
    "animal",
    "domestic",
    "feline",
    "couch",
    "indoor",
    "cute"
  ],
  "visibleText": null,
  "detailLevel": "high",
  "language": "English",
  "width": 800,
  "height": 533,
  "format": "jpeg",
  "fileSizeBytes": 88418,
  "model": "google/gemini-2.5-flash-lite",
  "status": "success",
  "error": null,
  "errorCode": null,
  "source": "input",
  "sourceIndex": 0
}

A sign with text gives "visibleText": "FRESH COFFEE\nOPEN 7 DAYS\n8 AM - 6 PM" and the alt text "Sign for fresh coffee, open 7 days a week from 8 AM to 6 PM.".

💰 Pricing

  • $0.0095 per described image ($9.50 per 1,000 images), the same on every plan.
  • Images that could not be described (broken links, files that are not images) are free; they still get a row that says why.
  • The run's platform usage is billed on top at your plan's rates: the AI model tokens, a little compute, and the proxy traffic for downloading linked images. With the default model and detail level this was about $0.0003 to $0.0007 per image in our runs, so 1,000 images cost about $10. A larger model or very large files raise the usage part.

❓ FAQ

Is it legal to describe images this way? Describing images you own or are allowed to use is fine. Make sure you have the right to process the pictures you send, especially photos of people.

Do I need an account with an AI provider, an API key or a proxy? No. The AI model runs through Scrape.ly and is billed with your run. Linked images are downloaded through a Scrape.ly datacenter proxy by default; switch to residential for sites that refuse datacenter addresses.

How many images can I describe? As many as you like: there is no limit on the number of images. Large runs work through the images in parallel and save results as they go; in our tests 1,000 images took about 3 minutes and 10,000 about 25 minutes.

What if a field is empty? visibleText is null when the image has no readable text. If an image could not be downloaded or read, status is error and error says why (not found, refused by the site, not an image, unsupported format, too large); those rows are not charged.

Which AI model is used, and can I change it? google/gemini-2.5-flash-lite by default: fast and accurate for captions. Set any model that reads images under AI model, for example google/gemini-3.1-flash-lite for richer descriptions; larger models use more AI model credit per image.

Can I schedule it or use the API? Yes. Run it on a schedule, call it through the Scrape.ly API, or chain it after a scraper with its dataset ID.

⚠️ Limits

  • SVG drawings are not read; convert them to PNG first. Animated GIFs are described from their first frame.
  • One image file can be at most 40 MB, and at most 200 megapixels for JPEG or 60 megapixels for other formats; bigger files are refused with a clear error (they would not fit in memory).
  • Links must be public. Images behind a login, or on sites that block downloads, fail with an error; upload those files instead.
  • Descriptions come from an AI model: they are usually accurate but can miss or misjudge small details. Names of people are never guessed.
  • On the Free plan the AI model gateway has a daily usage limit; when it is reached the run stops with a clear message and keeps every description made so far.

Related actors

//From the blog\\

Latest articles

All articles

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.

No credit card. No setup calls.