Strapi 5 is a headless CMS with an AI alt text generator built into its Media Library. It writes alternative text and captions for images when they're uploaded, and since 5.34 it can work backward through images already sitting in your library. This guide covers what the feature produces, which plan and version it needs, how credits are billed, and how to review the output before it reaches a screen reader.
In brief:
- Strapi's AI Media Library generates alternative text and captions for image assets (PNG, JPEG, WebP, HEIC and HEIF), not for files or videos.
- The feature requires a Growth plan on Strapi 5.30 or later and consumes AI credits; Community and Enterprise plans can't use it.
- Generation runs automatically on upload and shows a review modal where you edit the text before saving. A Beta retroactive mode (5.34+) handles existing images.
- Growth includes a monthly credit allowance with usage notifications and metered overages, and generation doesn't stop when the allowance runs out.
Together, these points define the feature's scope, setup requirements, and review workflow.
An AI alt text generator inside your CMS is the most direct fix for a common content backlog: images with an empty alternative text field. Strapi 5 now ships one in the Media Library, so you can auto-generate alt text and a caption for each image at upload without installing a plugin.
The size of the gap is well documented. WebAIM's 2026 analysis found 53.1% had at least one image with missing alt text, averaging 10.8 such images per page, and another 10.8% of images that did have alt text carried filenames, the word "image," or text copied from adjacent content. Each of those images risks failing WCAG 2.2 Success Criterion 1.1.1 and gives Google less alt-text metadata to use when understanding the image.
This article walks content managers, SEO teams, and accessibility leads through the whole workflow on Strapi's Growth plan, from the config toggle to the credit notifications.
What the AI Media Library Generates
The official Strapi AI overview lists three outputs: alternative text, captions, and descriptions. The Media Library documentation describes the same capability more narrowly as "alternative text and captions," and the review modal you see after upload displays those two fields. Treat alt text and caption as the outputs you'll edit in the UI, and treat the description as part of the broader capability the AI overview page documents.
Scope is images only. The docs state that "AI metadata generation only works with images, not files or videos." Supported image extensions are JPEG, PNG, GIF, SVG, TIFF, ICO, and DVU, per the Media Library docs. PDFs, video, and audio in the same library are skipped.
Two modes exist. Generation on upload has been available since Strapi AI launched and is enabled by default. Retroactive generation for existing images arrived in 5.34 and is labeled Beta in the current docs. Both write into the same editable fields you see in an asset's edit panel: File name, Alternative text, Caption, and Location. Strapi's AI Media Library changelog adds that the feature "works in bulk — process multiple images at once" and that "AI-generated metadata is fully editable by users."
On data handling, the docs state: "All AI requests are processed through Strapi-managed infrastructure. Content is only used temporarily during each request and is not stored outside your instance. Strapi AI follows the same GDPR-aligned framework as Strapi Cloud."
Strapi does not name the third-party model behind the feature. The Supplementary Terms for AI say only that "Input will be transmitted to third-party AI provider APIs to generate Output" and direct customers to review those providers' privacy statements. If your organization has data residency requirements for image content, that question needs an answer from Strapi before you turn the feature on for sensitive assets.
Why Automated Image Metadata Matters
WCAG 2.2 SC 1.1.1 requires that "all non-text content that is presented to the user has a text alternative that serves the equivalent purpose," with narrow exceptions for controls, time-based media, and decorative content. The W3C's documented failure techniques spell out what doesn't count: a filename like Oct.jpg in the alt attribute is a failure, and so is leaving stale alt text after the image changes. The scale of CMS backlogs is substantial. WebAIM's 2026 data puts the average home page at 66.6 images, up 13.6% year over year.
Search has the same dependency. Google's image SEO docs call alt text "the most important attribute when it comes to providing more metadata for an image" and explain that "Google uses alt text along with computer vision algorithms and the contents of the page to understand the subject matter of the image." Captions count too: Google "extracts information about the subject matter of the image from the content of the page, including captions and image titles." Its own progression of examples runs from a missing attribute, through alt="puppy", to alt="Dalmatian puppy playing fetch", with a warning that keyword-stuffed alt text "may cause your site to be seen as spam." A description field gives editors a place for that longer context without cramming it into the alt attribute.
For U.S. state and local government sites, the ADA Title II rule adopts WCAG 2.1 Level AA, with compliance dates of 26 April 2027 for entities serving populations of 50,000 or more and 26 April 2028 for smaller entities.
None of that requires perfect alt text on day one. It requires that no image ships with nothing, and that the text present is a real description rather than a filename. Strapi's position, laid out in its AI features overview, is that generation happens at the point of upload so the empty field never gets created in the first place. Backfilling the past is the second job; stopping new debt is the first.
Setup, Plan, and Credits
Strapi AI is a Growth plan feature. The docs put it plainly: "Strapi AI is available for Growth plan users since Strapi 5.30," and "AI features are not available on earlier versions." If you're on 5.29 or older, upgrade before anything else. The latest documented CMS release as of this writing is 5.50.0, per the release notes, so most active projects are already well past the floor. Retroactive generation for existing assets needs 5.34 or later.
The plan gating is stricter than most people expect. The Community (free) tier has no Strapi AI. Enterprise doesn't either: the AI overview states "Strapi AI is not available on Enterprise plans," and Strapi's support knowledge base adds "there's no public timeline yet." Enterprise customers who want this today are stuck waiting, and it's worth raising with your account contact rather than assuming it will appear in the next release.
Growth is a paid plan with seat-based pricing; see the CMS pricing page for current rates. The license applies to both self-hosted and Strapi Cloud deployments. Self-hosted projects can run a Growth trial whose credit allowance is enough to test the feature on a handful of images and see the modal in action, but nowhere near enough to process a backlog.
Every generation consumes AI credits. The docs say "Lightweight actions use fewer credits, while more complex ones use more," and no per-image figure is published. That matters for budgeting, and the credit mechanics are covered below.
Enabling Strapi AI
On a licensed Growth instance running 5.30+, the feature is on out of the box. The toggle lives under Settings → Media Library and reads "Generate AI captions and alt texts automatically on upload!" It's enabled by default, so if you upgraded and started seeing a review modal after uploads, that's why.
For a project-wide kill switch, the admin panel configuration exposes an ai.enabled key. Setting it to false disables every Strapi AI feature at once, including AI translations, the Content-Type Builder assistant, and the MCP server, not just Media Library generation.
// config/admin.js
module.exports = ({ env }) => ({
ai: {
enabled: false, // use this to disable Strapi AI
},
});// config/admin.ts
export default ({ env }) => ({
ai: {
enabled: false, // use this to disable Strapi AI
},
});Two details from the docs are worth noting. There's no dedicated environment variable; the config file is the only documented switch. And the documented example shows enabled: false, while the Media Library page calls the feature "enabled by default." The likely reconciliation is plan gating: the UI toggle is active for licensed Growth users, and the config key exists for teams that want to guarantee no AI calls leave an instance regardless of license state. If you run separate staging and production instances on different license keys, you might prefer the config key over the UI toggle so the behavior is version-controlled with the rest of your setup.
Managing Credits and Usage
Every Growth plan includes a monthly AI credit allowance, per the AI credits docs and the pricing page. Credits are shared across all users on the same project instance, so a five-editor team draws from one pool. The Growth trial comes with a smaller allowance.
Strapi doesn't publish a per-action price. The only guidance is that "Lightweight actions use fewer credits, while more complex ones use more," which places image metadata generation somewhere on a scale you can only calibrate by running it and watching the counter. Usage is visible under Settings → Overview.
Notifications arrive by email and in the Admin Panel as you approach the allowance, and here the official sources disagree on the thresholds. The support knowledge base and Strapi's release roundup describe alerts at 80%, 90%, and 100%. The credits snippet in the primary docs lists 85% and 100%. Neither page has been deprecated.
Either way, you'll hear about it well before you hit zero, and one open GitHub issue (#27331) notes the usage notification can re-appear on every page reload once triggered, which is annoying but harmless.
Hitting 100% doesn't pause anything. The docs state that Strapi AI continues operating after the allowance is exhausted, and additional usage is billed per credit, per the pricing page. Strapi's GA announcement describes the model as a monthly credit allowance by default, with usage-based billing for additional credits. There's no hard cap to set, so the notifications are your only guardrail; if finance needs a ceiling, the ai.enabled config key is the blunt instrument, and the Media Library toggle is the finer one.
The allowance resets monthly. Whether unused credits roll over is not stated in the documentation, so plan as if they don't.
Generating Metadata on Upload
The upload flow itself doesn't change. What changes is what happens after the files land.
- Open the Media Library and click Add new assets in the upper right corner.
- Choose a source: drag and drop from your computer, browse for files, or paste one or more URLs.
- Optionally, click the edit button on any asset to set File name, Alternative text, and Caption by hand before upload. Anything you fill in here is yours; the AI step is for what you leave blank.
- Click Upload assets to the library.
- After upload, the AI metadata review modal opens with generated alternative text and a caption for each image. Edit whatever needs editing, then save.
Because the feature documentation describes bulk processing, you can process multiple product shots at once and review the AI-generated metadata rather than opening each asset to create it manually. The generated text lands in the same alternativeText and caption fields your frontend already reads from the Upload API, so nothing downstream changes.
One rough edge worth knowing about, since fixed: saves in the AI upload modal used to fail silently on a network or server error, with the failure logged only to the browser console. That was GitHub issue #24610, closed by a fix that surfaces an error notification in the modal. If a batch seems to save but the fields are still empty when you reopen an asset, check for that notification and the browser console.
Developers who upload programmatically should know that the REST Upload API accepts a fileInfo object with alternativeText and caption on a multipart/form-data POST request to /api/upload. The docs describe AI generation as an Admin Panel workflow, and no REST endpoint or CLI command is documented for invoking it on a specific asset. For scripted imports where you already have descriptions from a product database, pass them in fileInfo; for editor-driven uploads, let the modal do the first draft.
Review and Edit Before Saving
The modal exists because the model doesn't know your page. The W3C's images tutorial gives the canonical example: "The exact type and look of a bird in an image might be less relevant and described only briefly on a website about parks, but may be appropriate on a website specifically about birds." A vision model sees a bird. Only the editor knows whether the article is about birds.
The failure modes are well documented. The UK Government Accessibility Blog warns that a computer often provides a very literal description of what an image contains and fails to take wider context into account. The AFB guidance warns that generative models are "confidently asserting details that aren't actually present," especially on low-quality or stylized images. And in a 2021 ACM ASSETS study, Mack et al. found that authors who started from AI-generated text produced alt text that "scored significantly lower" than authors who started from a blank box. Their example: the AI wrote "A person sitting on a table"; the human editing that draft wrote "A young female person sitting on a table, smiling at the camera"; the same human writing from scratch wrote "A young lady with dark curly hair and glasses, sitting down at a coffee table. She is holding an espresso cup with her right arm and leaning her head on her left hand." Anchoring is a real cost of drafting tools, and the people who bear it are screen reader users who, per a PubMed-indexed study, tend to "trust incorrect AI-generated captions and fill in details to reconcile discrepancies rather than suspecting the captions may be wrong."
A practical review pass in the modal covers these checks, most of them drawn from WebAIM's alt text guidance:
- Accuracy and equivalence. Does the text convey the same information the image conveys to a sighted reader? Delete anything you can't verify by looking at the image.
- Context. Adjust the description to the page it will appear on. A product photo and a blog hero can share a file and need different alt text.
- Length. Keep alt text to the shortest phrase that does the job, and under roughly 125 characters. Longer material belongs in the caption or description, or in a linked long description for charts and diagrams.
- Redundancy. If the caption or adjacent body text already says it, the alt attribute shouldn't repeat it.
- Prefixes. Strip "image of" and "photo of." Screen readers already announce the element as a graphic.
- Decorative images. These should carry an empty
alt="", and "whether to treat an image as decorative or informative is a judgment that only the author can make." The generator will happily describe a divider swoosh; you should overwrite that with nothing. - Functional images. For a logo that links home or an icon that submits a form, describe the action, not the picture.
This review keeps generated metadata accurate, contextual, and useful to screen reader users.
The JMU accessibility office's framing is the right one: AI output is "an assistive drafting tool, not the final authority."
Handling Your Existing Image Backlog
Retroactive generation shipped in 5.34.0 on 28 January 2026 and, per Strapi's release roundup, it means "you no longer have to choose between leaving them untagged or manually going back through hundreds of files." It's still a Beta feature in the current docs, and it requires the Growth license like everything else in Strapi AI.
The interface is a single control. Under Settings → Media Library, an "AI metadata retroactive generation" panel shows the count of images currently missing metadata. Clicking the button generates alt text and captions for images that lack them. Two things the docs don't specify: whether it touches images that already have metadata (the wording targets images that "lack alternative text or captions," which suggests not), and any way to run it against a subset. Under the hood, 5.34 added a GET endpoint for the missing-metadata count and a POST endpoint that runs generation across existing files, but the documented workflow is the UI button.
That one-shot design is why pacing matters. Per-image credit cost is unpublished, generation doesn't stop when your allowance runs out, and overages are billed. A library with 4,000 untagged images could consume the month's allowance and then some in a single click. A workable approach:
- Prune first. Delete or archive assets you no longer use before running anything. Every orphaned banner from a 2022 campaign is a credit you don't need to spend.
- Read the count. The settings panel tells you exactly how many images are in scope. If the number is in the low hundreds, one run is fine. If it's in the thousands, treat it as a billed project and get sign-off.
- Run early in the billing month. Credits are a monthly allowance, so starting a large job right after the reset gives you the full pool before any overage kicks in.
- Watch usage as it runs. Credit consumption is visible under Settings → Overview in the Admin Panel, and the credits documentation describes threshold notifications you'll receive along the way.
- Review by priority, not by ID. Generated text is only a draft. Start with images on high-traffic pages and linked images, which WebAIM found make up 45% of all missing-alt cases and where a missing description also breaks the link's purpose. Decorative images that got a description need clearing to
alt="". - Retry failures freely. Strapi's support article confirms that "if an AI operation fails, the system returns a clear error, allowing you to retry without losing credits."
If the count is too large to cover in one allowance and you don't want overage charges, the alternative today is to use Strapi's REST Upload API: you can upload or update assets with fileInfo populated from another source to set fields like name, alt text, and caption. Neither is pleasant, which is exactly the trade-off the retroactive button was built to remove. Compare the overage cost of one big run with the labor cost of the manual route before choosing.
From Drafts to Screen Readers: Making AI-Generated Alt Text Work
An untagged image library is an accessibility failure, an SEO gap, and, for covered organizations, a compliance risk, and the honest reason most teams carry one is that writing alt text by hand for thousands of files never wins a sprint planning argument. Strapi's AI Media Library changes the economics: new uploads get alt text and a caption before they're saved, existing images can be backfilled in bulk, and an editor's job shifts from authoring to reviewing.
The constraints are clear enough to plan around. You need Growth on 5.30 or later, the retroactive mode is Beta, per-image credit cost is unpublished, and every generated description still needs a human who knows the page to read it before it ships. Treat the model's output the way you'd treat a junior writer's first draft: useful, fast, and not yet publishable.
If you're on Growth, open Settings → Media Library, check the count in the retroactive generation panel, and see how big your backlog actually is. If you're not yet, Strapi offers a Growth trial for self-hosted projects, and the features page and Strapi AI overview cover that credits buy AI-powered translations for internationalized content, while the MCP server is described as a built-in feature for agent-driven editing.






