About this plugin
Erdo Image Optimizer is an image SEO plugin for WordPress. It scores every image in your media library from 0 to 100 and helps you fix what holds it back in Google Images and on your pages: missing or weak alt text (written by you, taken from the file name, or suggested by AI), camera file names such as IMG_1234 (renamed safely, with 301 redirects), unused images (moved to a reversible quarantine), and heavy JPEG and PNG files (served as WebP or AVIF copies while the originals stay untouched).
Nothing is changed without a preview, and almost everything can be undone.
Image SEO score
- Every image gets a score from 0 to 100: alt text (40 points), file name (20), format (10), file size (10), dimensions (5) and context (15).
- Alt text is checked for quality, not just presence: file-name-like text, “image of…” phrases, keyword lists and overly long text lose points. Decorative images can be marked as such and pass with an empty alt.
- Camera-style and generic file names (IMG_1234, DSC_0042, Screenshot, WhatsApp Image, hashes) are flagged.
- Context checks whether the image appears on a published, indexable page. Noindex settings from Yoast SEO and Rank Math are respected.
- Filter the library by issue (missing alt, weak alt, weak file name, no WebP/AVIF copy, oversized, not on an indexable page) and export the report as CSV.
- Focus keywords from Yoast SEO, Rank Math, SEOPress and All in One SEO are used as hints.
AI alt text with your own key (WordPress 7.0+)
- Uses the AI Client built into WordPress 7.0. You connect Anthropic, Google or OpenAI under Settings > Connectors; the plugin never stores or sees your API key.
- One request per image returns alt text, a file name, a title and a caption, decides whether the image is decorative, and checks whether the current alt text fits the image.
- The model sees the image together with the page it appears on, the text around it and the focus keyword, so suggestions describe the image in context.
- Review first: suggestions wait in the “AI Suggestions” tab until you accept, edit or reject them, field by field or in bulk.
- Bulk runs show an estimated provider cost before they start and can be stopped at any time.
Safe renaming
- Rename a single image, fix weak names across the library (a camera name gets a new one from the AI suggestion, the alt text or the page the image is on), or use patterns such as {keyword}-{n}, {parent}, {title}, {original} and {alt}.
- Every size, the original before scaling, edit backups and WebP/AVIF copies move together. Links in posts, page builder data, custom fields and options are updated, including serialized and JSON data.
- Old image URLs redirect (301) to the new ones, so backlinks and Google Images traffic keep working.
- Every rename shows a preview first and can be undone per image or per batch.
Unused media cleanup with quarantine
- A usage index records where each image is used: post content, featured images, galleries, page builder data, custom fields (including ACF), WooCommerce product galleries, theme settings such as the logo and site icon, widgets and term images.
- The detail panel shows every place an image is used, with links.
- Unused images go to a quarantine instead of being deleted. Their files move to a folder with an unguessable name inside uploads, and the image disappears from the media library until you restore it with one click.
- Before an image is moved in bulk, the plugin checks again whether its file name still appears anywhere on the site and skips it if it does.
- Permanent deletion is a separate, explicit step. Automatic emptying of the quarantine is off by default.
WebP and AVIF without touching originals
- WebP and AVIF copies are saved next to each image and each generated size ( photo.jpg.webp, photo.jpg.avif ). The original file is never modified or deleted.
- A copy is kept only if it is smaller than the original.
- Delivery through <picture> tags (works behind any CDN or page cache), or an Apache.htaccess rewrite. A ready-made nginx snippet is included.
- Convert new uploads automatically, or convert the existing library in the background. Remove the copies of any image with one click.
- WebP and AVIF support is measured with a real test encode on your server. Lossless WebP, smart quality and animated GIFs (with Imagick) are supported.
Also included
- A first-run setup that tests your server, detects a CDN, an SEO plugin and an AI provider, and recommends settings.
- An overview with an image health score, a “fix next” list sorted by impact and an activity log with undo.
- Image sitemap inside the WordPress core sitemap (turned off automatically when Yoast SEO, Rank Math, All in One SEO or SEOPress handles image sitemaps).
- Clean file names on upload, optional removal of camera data (EXIF/GPS), and a maximum image size that uses the WordPress “big image” threshold (the full-size original is kept).
- Resize oversized images in the detail panel; the original is kept so you can undo it.
- WP-CLI commands, REST endpoints for statistics, audit results and AI suggestions, and a dashboard widget.
- A repair tool for images that were converted by version 2.x of this plugin.
What it does not do
- It does not compress or overwrite your original files. Savings come from the WebP/AVIF copies.
- It does not lazy-load images. WordPress already does this, including the right handling of the largest image above the fold.
- It does not offer a CDN or a cloud compression service, and it has no server of its own.
- AI features need WordPress 7.0 or newer and your own account with an AI provider. Without them, every other feature works.
- The usage index cannot see images that are hard-coded in theme or plugin files, used only in CSS files, or linked from other websites. Check those before deleting anything permanently.
External services
0 or newer. It uses the WordPress AI Client and the provider you connect under Settings > Connectors with your own API key. The plugin does not store or see the key and has no server of its own; requests go from your site directly to your provider.
What the feature does: it asks the provider for alt text, a file name, a title and a caption for an image, whether the image is decorative, and whether the current alt text fits it.
When data is sent: only when a user clicks “Suggest with AI” for an image, starts a bulk run from the “AI Suggestions” tab, calls the plugin’s REST endpoint for a suggestion, or after an image upload if the “Suggest on upload” setting is turned on (off by default; it then runs once in the background for new images without alt text).
What is sent with each request:
- The image, at most 1024 px on the long side. The file stored on your site is sent if it is already small enough (JPEG, PNG or WebP), otherwise a generated size between 512 and 1024 px, otherwise a temporary JPEG copy. Files sent as stored keep any embedded camera data unless “Remove camera data (EXIF)” was on when they were uploaded.
- The title of the page the image appears on, the page’s SEO focus keyword, and up to 500 characters of text around the image on that page.
- The image’s current alt text and title, and the content language.
- For WooCommerce products: the product name and its categories.
- Instructions that describe the expected answer.
No user names, e-mail addresses, IP addresses or other personal data are added by the plugin.
Providers and their terms:
- Anthropic (Claude): Commercial Terms, Privacy Policy
- Google (Gemini API): Terms of Service, Privacy Policy
- OpenAI: Business Terms, Privacy Policy
Suggestions are stored on your site and never applied automatically. Each one waits for your review.