Alt Text Generator - Batch Image Descriptions avatar

Alt Text Generator - Batch Image Descriptions

Pricing

from $5.20 / 1,000 alt text generateds

Go to Apify Store
Alt Text Generator - Batch Image Descriptions

Alt Text Generator - Batch Image Descriptions

Generate descriptive alt text for hundreds of images at once with AI vision. Output is JSON ready for CMS bulk-update and covers both SEO ranking and WCAG accessibility compliance — built for product catalogs, media libraries and social captions.

Pricing

from $5.20 / 1,000 alt text generateds

Rating

0.0

(0)

Developer

daehwan kim

daehwan kim

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

10

Monthly active users

3 days ago

Last modified

Share

Alt Text Batch Generator

Batch-process multiple images to generate AI-powered alt text descriptions for web accessibility using Qwen2.5-VL vision model.

Free plan (preview)Paid Apify plan (Starter and up)
Images described per run1 (the first URL)every URL you enter (up to 500 a run)
The other imagescounted in a free-plan-preview row: how many were queued, and an estimate (BRONZE price) of a paid run of the same inputdescribed
Pricesame eventssame events, with plan discounts: BRONZE 20% off, SILVER 35% off, GOLD and up 48% off

A free run ends as SUCCEEDED with a status message that says how many images were left out. Run the same input again on a paid plan for all of them.

Overview

This Actor processes up to 500 images in a single run and generates alt text descriptions suitable for screen readers and accessibility compliance. Each successfully processed image is charged at $0.01 (pay-per-event pricing).

Key Features

  • Batch Processing: Process up to 500 images per run
  • AI-Powered: Uses Qwen2.5-VL vision model via ntriq AI service
  • Flexible Output: Choose between concise (WCAG-compliant max 125 chars) or detailed (2-3 sentence) descriptions
  • Multi-Language: Supports 10 languages (English, Korean, Japanese, Chinese, Spanish, French, German, Italian, Portuguese, Russian)
  • Pay-Per-Event: $0.01 per generated alt text; $0.002 for an image URL whose host refuses it (see Pricing)
  • Error Resilience: Continues processing even if individual images fail
  • Detailed Logging: Track processing time and confidence scores per image

Input

Provide an array of publicly accessible image URLs:

{
"urls": [
"https://example.com/image1.jpg",
"https://example.com/image2.png",
"https://example.com/image3.webp"
],
"language": "en",
"style": "concise",
"maxUrls": 500
}

Input Parameters

ParameterTypeDefaultRequiredDescription
urlsarray—✓Array of image URLs (1-500 items)
languagestringen—Language code: en, ko, ja, zh, es, fr, de, it, pt, ru
stylestringconcise—Output style: concise (≤125 chars) or detailed (2-3 sentences)
maxUrlsinteger500—Safety limit on processing count (1-500)

Output

Each image produces one dataset record:

{
"url": "https://example.com/image1.jpg",
"status": "success",
"altText": "A fluffy orange tabby cat sitting on a wooden windowsill",
"detailedDescription": null,
"language": "en",
"model": "Qwen2.5-VL",
"processingTimeMs": 2450,
"confidence": 0.85,
"error": null,
"code": null
}

Output Fields

FieldTypeDescription
urlstringOriginal image URL
statusstringsuccess or error
altTextstringGenerated alt text (concise style)
detailedDescriptionstring|nullDetailed description (detailed style only)
languagestringOutput language code
modelstringAI model name (Qwen2.5-VL)
processingTimeMsintegerProcessing time in milliseconds
confidencenumberAI confidence score (0-1)
errorstring|nullError message if failed
codestring|nullError code: INVALID_URL, TIMEOUT, API_ERROR, etc.

Usage Examples

Example 1: Basic Batch Processing (English, Concise)

{
"urls": [
"https://picsum.photos/id/237/400/300.jpg",
"https://upload.wikimedia.org/wikipedia/commons/1/18/Dog_Breeds.jpg"
],
"language": "en",
"style": "concise"
}

Cost: $0.02 (2 images × $0.01)

Example 2: Large Batch with Detailed Descriptions (Korean)

{
"urls": [
"https://example.com/image1.jpg",
"https://example.com/image2.jpg",
"https://example.com/image3.jpg",
"...up to 500 images..."
],
"language": "ko",
"style": "detailed",
"maxUrls": 500
}

Cost: $0.03 - $5.00 depending on successes (1-500 images × $0.01)

Pricing

EventPrice (FREE tier list price)When it is charged
alt-text-generated$0.01once per image whose alt text row is delivered
image-checked$0.002once per image URL that our service tried to download and the Actor then checked itself, and whose host answered with an HTTP error, a non-image or an empty body (code: "IMAGE_UNREACHABLE", errorSide: "target", reason, httpStatus). Charged only once this event is on the live price list

Who is behind a failed URL. When the URL's own host answers 401, 403, 404 or 410, the check is done and the answer is the host's: errorSide: "target" with reason (login-required, forbidden, not-found, gone) and httpStatus, charged as image-checked. When it answers 429, 503 or another temporary code, the Actor waits briefly and asks once more; the same kind of answer again is the host's own state: reason: "temporarily-unavailable" with the HTTP code, charged the same way. Our side is never charged: our time limit, a host that never answered, our vision service's errors (errorSide: "service").

If the platform restarts a run, the new run life reads the run's own dataset and the platform's charge counts: inputs already answered are not processed, delivered or charged again. If the dataset cannot be read back, the run stops without processing or charging anything more.

Not charged: TIMEOUT, API_ERROR, PROCESSING_ERROR, EXCEPTION rows (errorSide: "service" — our side), INVALID_URL/INVALID_INPUT rows (rejected before any work), notice rows. Plan discounts: BRONZE 20%, SILVER 35%, GOLD and up 48%.

The run stops when its maximum charge is reached: no further image is sent to the vision service, a charge-limit-reached notice row says how many images were not processed, and the run ends as SUCCEEDED. If our vision service fails 3 images in a row, the run stops with a free service-unavailable notice row instead of spending your run time on the rest.

Cost Examples

ImagesSuccessCost
1010$0.10
5048 (2 failed)$0.48
10095 (5 failed)$0.95
500500$5.00

Timeout & Rate Limiting

  • Per-image timeout: 180 seconds, and never longer than the time the run has left
  • Batch timeout: the run timeout you set in Run options (default 1 hour). Images take about 5 seconds each, so 500 images need about 40 minutes — set a longer run timeout for big batches
  • Near the run timeout: the run stops starting new images, keeps every result already delivered, and adds one free time-budget-reached notice row listing how many inputs were not processed — re-run with the remaining URLs
  • Rate limit: 100ms delay between requests (built-in throttling)

Error Codes

CodeMeaningRecovery
INVALID_INPUTMissing/invalid URL parameterCheck URL format
INVALID_URLURL not HTTP(S) or malformedVerify URL is valid and public
TIMEOUTRequest exceeded the per-image limit (up to 180 seconds)Image too large or service overloaded
IMAGE_UNREACHABLEThe image host answered with an error (401/403/404/410, or 429/503 twice — reason and httpStatus say which), not an image, or emptyCheck that the URL opens publicly
API_ERRORAI service returned errorCheck service status
PROCESSING_ERROROther processing failureCheck image format/size
EXCEPTIONUnhandled exceptionContact support

Image Source Responsibility

  • You must only submit images that you own or have explicit permission to analyze.
  • You are responsible for complying with the source website's Terms of Service and robots.txt.
  • Do not use this tool to analyze images from stock photo sites (Getty, Shutterstock) without a valid license.
  • Generated alt text descriptions are not derivative works of the original images.
  • However, fetching images from third-party URLs may violate the source site's Terms of Service.
  • We assume no liability for third-party intellectual property claims arising from your use.

WCAG Compliance

  • AI-generated alt text is a starting point, NOT a guarantee of WCAG 2.1 or ADA compliance.
  • All generated descriptions must be reviewed by a human before production use.
  • This tool assists accessibility efforts but does not replace professional accessibility auditing.

AI Limitations

  • Descriptions may contain inaccuracies or miss important context.
  • Specialized images (medical, technical, charts) require professional review.

Data Processing

  • Images are fetched temporarily for analysis and immediately discarded.
  • No images are stored, cached, or redistributed by our service.

Technical Details

AI Service Integration

  • Endpoint: hosted vision model backend (Qwen2.5-VL)
  • Request Timeout: up to 180 seconds per image
  • Supported Formats: JPEG, PNG, WebP, GIF, BMP
  • Max Image Size: Depends on AI service (typically 100MB)

Environment Variables (Optional)

$AI_REQUEST_TIMEOUT=180000

Processing Pipeline

  1. Validate input array and language/style parameters
  2. For each URL:
    • Validate URL format
    • Call AI service with optimized prompt
    • Collect response (alt text or error)
    • Push to dataset
    • Charge on success (or image-checked when the host refused the URL); stop at the run's maximum charge
  3. Log summary (success/error counts, total cost)

Limitations

LimitationValue
Max images per run500 on paid plans, 1 on the free plan
Timeout per image180 seconds (shorter when the run is nearly out of time)
Total batch timeoutYour run timeout (Apify default 1 hour)
Concurrent requestsSequential (100ms between)
Supported formatsJPEG, PNG, WebP, GIF, BMP

Support

For issues or questions:

  1. Check error codes and logs in run output
  2. Verify all image URLs are publicly accessible
  3. Confirm language code is supported
  4. Review AI service status

Version History

  • v1.0.0 (2026-03-30): Initial release
    • Batch processing (up to 500 images)
    • Concise and detailed styles
    • Multi-language support
    • Pay-per-event billing

Last Updated: 2026-03-30 Maintainer: ntriq Engineering License: Apache 2.0


Build your data pipeline with the ntriqpro Actor suite:

⭐ Love it? Leave a Review

Your rating helps other professionals discover this actor. Rate it here.