{"id":277924,"date":"2026-01-29T18:17:58","date_gmt":"2026-01-29T18:17:58","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/erdo-image-optimization\/"},"modified":"2026-05-25T18:23:53","modified_gmt":"2026-05-25T18:23:53","slug":"erdo-image-optimizer","status":"publish","type":"plugin","link":"https:\/\/tw.wordpress.org\/plugins\/erdo-image-optimizer\/","author":23436214,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.1.0","stable_tag":"2.1.0","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Erdo Image Optimizer","header_author":"Erdinc Bulat","header_description":"Optimize images to WebP\/AVIF, clean metadata, audit SEO, and improve site speed.","assets_banners_color":"877a79","last_updated":"2026-05-25 18:23:53","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":5,"author_block_rating":0,"active_installs":10,"downloads":368,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.8.5":{"tag":"1.8.5","author":"erdincbulat","date":"2026-02-06 09:52:13"},"2.0.0":{"tag":"2.0.0","author":"erdincbulat","date":"2026-05-19 21:07:48"},"2.0.1":{"tag":"2.0.1","author":"erdincbulat","date":"2026-05-20 07:28:20"},"2.1.0":{"tag":"2.1.0","author":"erdincbulat","date":"2026-05-25 18:23:53"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3548917,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3548917,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3548056,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3548056,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.8.5","2.0.0","2.0.1","2.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[262246],"plugin_tags":[17214,194661,29152,29158,15376],"plugin_category":[50],"plugin_contributors":[253916],"plugin_business_model":[],"class_list":["post-277924","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-alt-text","plugin_tags-avif","plugin_tags-image-compression","plugin_tags-image-optimizer","plugin_tags-webp","plugin_category-media","plugin_contributors-erdincbulat","plugin_committers-erdincbulat"],"banners":{"banner":"https:\/\/ps.w.org\/erdo-image-optimizer\/assets\/banner-772x250.png?rev=3548056","banner_2x":"https:\/\/ps.w.org\/erdo-image-optimizer\/assets\/banner-1544x500.png?rev=3548056","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/erdo-image-optimizer\/assets\/icon-128x128.png?rev=3548917","icon_2x":"https:\/\/ps.w.org\/erdo-image-optimizer\/assets\/icon-256x256.png?rev=3548917","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Erdo Image Optimizer<\/strong> is not just another image compression plugin. It is a complete <strong>Image SEO &amp; Performance Suite<\/strong> that covers WebP\/AVIF conversion, bulk alt text management, filename sanitization, lazy loading, unused media cleanup, and a 6-point SEO audit \u2014 all in a single, modern dashboard.<\/p>\n\n<p>Most image optimization plugins stop at compression. Erdo goes further: every image in your media library receives a <strong>professional SEO health score (0 out of 6)<\/strong>. You will know exactly which images are hurting your Google rankings and how to fix them, in bulk, in minutes.<\/p>\n\n<h4>Why Erdo Image Optimizer?<\/h4>\n\n<ul>\n<li><strong>Image SEO Audit (6 Points):<\/strong> Every image gets a score from 0 to 6 based on alt text, filename quality, title, contextual relevance, dimensions, and format. Fix failing criteria with one click \u2014 no guesswork.<\/li>\n<li><strong>WebP &amp; AVIF Converter:<\/strong> One-click conversion from JPEG, PNG, GIF, and HEIC\/HEIF to WebP or AVIF. Smart Quality mode automatically finds the smallest file size that still looks great.<\/li>\n<li><strong>Bulk Alt Text Generation:<\/strong> Automatically generate descriptive alt text from filenames for every image missing it. Fix hundreds of images in seconds \u2014 critical for accessibility and image SEO.<\/li>\n<li><strong>Filename Sanitizer:<\/strong> Transforms messy uploads like <code>IMG_1234 (copy).JPG<\/code> into SEO-friendly <code>professional-web-design.webp<\/code> at upload time. Bulk-rename existing images with automatic database reference updates.<\/li>\n<li><strong>Unused Media Cleanup:<\/strong> Scans your entire library to find images that appear nowhere on your site. Free up disk space and stop confusing search crawlers with orphaned files.<\/li>\n<li><strong>Lazy Loading &amp; WebP Serving:<\/strong> Inject <code>loading=\"lazy\"<\/code> into content images automatically. Serve WebP to compatible browsers via <code>.htaccess<\/code> rewrite (Apache) or PHP <code>&lt;picture&gt;<\/code> fallback (all servers).<\/li>\n<li><strong>Background Queue &amp; WP-CLI:<\/strong> Bulk-convert thousands of images via WP-Cron \u2014 close the browser tab and let it run. Full CLI support: <code>wp erdo convert<\/code>, <code>audit<\/code>, <code>restore<\/code>, <code>stats<\/code>, <code>clean-cache<\/code>.<\/li>\n<li><strong>BunnyCDN &amp; REST API:<\/strong> Upload converted images directly to BunnyCDN storage. Headless access via <code>\/wp-json\/erdo\/v1\/stats<\/code> and <code>\/wp-json\/erdo\/v1\/audit<\/code> REST endpoints.<\/li>\n<\/ul>\n\n<h4>Full Feature List<\/h4>\n\n<p><strong>Compression &amp; Conversion<\/strong><\/p>\n\n<ul>\n<li>One-click WebP and AVIF conversion with original backup and one-click restore<\/li>\n<li>HEIC\/HEIF (iPhone photos) conversion to WebP\/AVIF via Imagick<\/li>\n<li>Smart Quality mode \u2014 automatically finds the smallest file size that still looks great<\/li>\n<li>Lossless mode for zero-quality-loss compression<\/li>\n<li>Max Upload Width \u2014 automatically resize oversized images before conversion<\/li>\n<li>EXIF metadata stripper \u2014 reduce file weight and protect photographer privacy<\/li>\n<li>GIF, JPEG, PNG, HEIC \u2192 WebP\/AVIF in one click<\/li>\n<\/ul>\n\n<p><strong>Image SEO &amp; Alt Text<\/strong><\/p>\n\n<ul>\n<li>Image SEO Auditor with 6-point health score for every image in your library<\/li>\n<li>Bulk Alt Text \u2014 generate alt text from filenames for all images missing it<\/li>\n<li>Automatic filename sanitization on upload (removes spaces, special chars, uppercase)<\/li>\n<li>Bulk rename all existing filenames with automatic database reference update<\/li>\n<li>SEO Audit CSV export \u2014 download a full spreadsheet for reporting<\/li>\n<li>Missing Alt Text filter \u2014 focus the dashboard on images that need fixing<\/li>\n<\/ul>\n\n<p><strong>Performance &amp; Delivery<\/strong><\/p>\n\n<ul>\n<li>Lazy loading (<code>loading=\"lazy\"<\/code>) injected into content, thumbnails, and gallery images<\/li>\n<li>WebP serving via <code>.htaccess<\/code> rewrite (Apache) or PHP <code>&lt;picture&gt;<\/code> element rewriter<\/li>\n<li>BunnyCDN integration \u2014 upload converted images directly to CDN storage<\/li>\n<li>Background Queue \u2014 bulk convert via WP-Cron, browser tab can be closed<\/li>\n<\/ul>\n\n<p><strong>Developer &amp; Dashboard<\/strong><\/p>\n\n<ul>\n<li>REST API: <code>\/wp-json\/erdo\/v1\/stats<\/code> and <code>\/wp-json\/erdo\/v1\/audit<\/code> endpoints<\/li>\n<li>WP-CLI commands: <code>wp erdo convert<\/code>, <code>audit<\/code>, <code>restore<\/code>, <code>stats<\/code>, <code>clean-cache<\/code><\/li>\n<li>Dashboard widget \u2014 key stats visible from wp-admin home<\/li>\n<li>Before\/After comparison slider \u2014 drag to compare original vs optimized<\/li>\n<li>Right-click context menu on every image card<\/li>\n<li>Grid size selector (Small \/ Medium \/ Large) with localStorage persistence<\/li>\n<li>SVG upload support with automatic XSS sanitization for administrators<\/li>\n<li>Multisite \/ network admin support<\/li>\n<li>Modern, clean dashboard with format badge and SEO score on every card<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>erdo-image-optimizer<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install directly from the WordPress Plugin Directory.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Click <strong>Image Optimizer<\/strong> in your sidebar to run your first SEO audit.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20just%20another%20image%20compression%20plugin%3F\"><h3>Is this just another image compression plugin?<\/h3><\/dt>\n<dd><p>No. Compression is only one part of what we do. The core feature is the <strong>Image SEO Auditor<\/strong>, which grades every image in your media library on 6 SEO criteria: filename quality, alt text presence, title quality, contextual relevance, missing dimensions, and usage status. Most plugins never touch any of this.<\/p><\/dd>\n<dt id=\"how%20do%20i%20reduce%20image%20file%20size%20in%20wordpress%20without%20losing%20quality%3F\"><h3>How do I reduce image file size in WordPress without losing quality?<\/h3><\/dt>\n<dd><p>Use Erdo's Smart Quality mode. It automatically finds the lowest compression level where visual quality is still preserved, then converts your image to WebP or AVIF \u2014 both of which deliver 30-80% smaller file sizes compared to JPEG or PNG. You can also enable lossless mode for zero quality loss.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20webp%20and%20avif%3F\"><h3>What is the difference between WebP and AVIF?<\/h3><\/dt>\n<dd><p>Both are modern image formats far smaller than JPEG or PNG. WebP offers broad browser support (all major browsers since 2020) and fast encoding. AVIF is newer and typically 20-30% smaller than WebP at the same visual quality, but requires PHP's GD library compiled with libavif support. Erdo supports both \u2014 pick the one that fits your server and audience.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20alt%20text%20to%20all%20my%20wordpress%20images%20at%20once%3F\"><h3>How do I add alt text to all my WordPress images at once?<\/h3><\/dt>\n<dd><p>Use the <strong>Bulk Alt Text<\/strong> feature in the dashboard. Erdo scans every image missing alt text and automatically generates descriptive alt text from its filename. You can review and edit before saving. For images with meaningful filenames like <code>blue-running-shoes.jpg<\/code>, the generated alt text is immediately usable.<\/p><\/dd>\n<dt id=\"how%20do%20i%20convert%20all%20images%20to%20webp%20in%20wordpress%3F\"><h3>How do I convert all images to WebP in WordPress?<\/h3><\/dt>\n<dd><p>Go to Erdo's dashboard, click <strong>Bulk Convert<\/strong>, choose WebP as the target format, and start the queue. Conversion runs in the background via WP-Cron \u2014 you can close the browser tab and let it finish. For large libraries (1,000+ images), the WP-CLI command <code>wp erdo convert<\/code> is the fastest option.<\/p><\/dd>\n<dt id=\"what%20makes%20the%20seo%20auditor%20different%20from%20other%20plugins%3F\"><h3>What makes the SEO Auditor different from other plugins?<\/h3><\/dt>\n<dd><p>Most \"SEO\" image plugins only check for missing alt text. Erdo's auditor checks 6 distinct criteria and gives each image a score from 0 to 6 with specific reasons for any deductions. You get an actionable list, not a vague percentage.<\/p><\/dd>\n<dt id=\"how%20do%20i%20serve%20webp%20images%20in%20wordpress%3F\"><h3>How do I serve WebP images in WordPress?<\/h3><\/dt>\n<dd><p>Erdo handles WebP delivery automatically. On Apache servers, it writes <code>.htaccess<\/code> rewrite rules that transparently serve WebP versions to compatible browsers with zero code changes. On NGINX or other servers, it falls back to a PHP <code>&lt;picture&gt;<\/code> element rewriter that wraps your images with WebP source tags \u2014 no server configuration needed.<\/p><\/dd>\n<dt id=\"will%20my%20original%20images%20be%20lost%20after%20conversion%3F\"><h3>Will my original images be lost after conversion?<\/h3><\/dt>\n<dd><p>Never. Every original is automatically backed up to an <code>_erdo_backup\/<\/code> subfolder before conversion. You can restore any image to its original with a single click from the dashboard.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20all%20hosting%20providers%3F\"><h3>Does it work with all hosting providers?<\/h3><\/dt>\n<dd><p>Yes. WebP delivery works via <code>.htaccess<\/code> rewrite rules on Apache hosts. For NGINX or other servers, the plugin automatically falls back to a PHP-based <code>&lt;picture&gt;<\/code> element rewriter \u2014 no server configuration required.<\/p><\/dd>\n<dt id=\"can%20i%20convert%20my%20entire%20existing%20media%20library%3F\"><h3>Can I convert my entire existing media library?<\/h3><\/dt>\n<dd><p>Yes. Use the Bulk Convert feature from the dashboard. Processing runs in the background via WP-Cron, so you can close the browser tab and let it finish. For large libraries, the WP-CLI command <code>wp erdo convert<\/code> is recommended.<\/p><\/dd>\n<dt id=\"how%20do%20i%20find%20unused%20images%20in%20wordpress%20and%20delete%20them%3F\"><h3>How do I find unused images in WordPress and delete them?<\/h3><\/dt>\n<dd><p>Open the <strong>Unused Media<\/strong> tab in Erdo's dashboard. The plugin scans every image in your media library against all posts, pages, and ACF fields. Any image that appears nowhere on your site is flagged as unused. You can review the list and delete in bulk \u2014 freeing disk space and removing orphaned files that confuse search crawlers.<\/p><\/dd>\n<dt id=\"does%20the%20filename%20sanitizer%20affect%20images%20i%20have%20already%20uploaded%3F\"><h3>Does the filename sanitizer affect images I have already uploaded?<\/h3><\/dt>\n<dd><p>The automatic sanitizer applies to new uploads only. For existing images with messy filenames like <code>IMG_1234 (copy).JPG<\/code>, use the <strong>Bulk Rename<\/strong> feature in the dashboard \u2014 it renames files on disk, updates all database references, and prevents broken links automatically.<\/p><\/dd>\n<dt id=\"does%20it%20support%20avif%3F\"><h3>Does it support AVIF?<\/h3><\/dt>\n<dd><p>Yes. AVIF conversion is available in addition to WebP. AVIF typically produces 20-30% smaller files than WebP at the same visual quality. AVIF encoding requires PHP's GD library compiled with libavif support, which most modern hosts provide.<\/p><\/dd>\n<dt id=\"does%20it%20support%20heic%20and%20heif%20images%20from%20iphones%3F\"><h3>Does it support HEIC and HEIF images from iPhones?<\/h3><\/dt>\n<dd><p>Yes. Erdo can convert HEIC\/HEIF photos (the default format on newer iPhones) to WebP or AVIF via PHP's Imagick extension. This requires Imagick to be installed on your server \u2014 most managed WordPress hosts include it by default.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20wordpress%20multisite%3F\"><h3>Is it compatible with WordPress Multisite?<\/h3><\/dt>\n<dd><p>Yes. A dedicated Network Admin settings page lets you define default quality and format across all sites in the network.<\/p><\/dd>\n<dt id=\"does%20it%20have%20a%20rest%20api%3F\"><h3>Does it have a REST API?<\/h3><\/dt>\n<dd><p>Yes. Erdo exposes two REST endpoints: <code>\/wp-json\/erdo\/v1\/stats<\/code> returns optimization statistics (total images, conversion rate, space saved) and <code>\/wp-json\/erdo\/v1\/audit<\/code> returns the full SEO audit results. Both are useful for headless WordPress setups or custom reporting dashboards.<\/p><\/dd>\n<dt id=\"does%20it%20integrate%20with%20a%20cdn%3F\"><h3>Does it integrate with a CDN?<\/h3><\/dt>\n<dd><p>Yes. Erdo includes a BunnyCDN integration that automatically uploads converted images to your BunnyCDN storage zone. Configure your Storage Zone name, API key, and hostname in the Settings tab to enable it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>NEW: Bulk rename \u2014 sanitize all image filenames on disk with automatic database reference update.<\/li>\n<li>NEW: Auto Alt Text \u2014 generate alt text from filename in bulk for all images missing it.<\/li>\n<li>NEW: SEO Audit CSV export \u2014 download a full spreadsheet of every image's score, status, format, and alt text.<\/li>\n<li>NEW: HEIC\/HEIF conversion support \u2014 convert iPhone photos to WebP\/AVIF (requires Imagick).<\/li>\n<li>NEW: Before\/After comparison slider \u2014 visually compare original vs optimized image side by side.<\/li>\n<li>NEW: Dashboard widget \u2014 see key stats (total images, optimization rate, space saved) directly from wp-admin home.<\/li>\n<li>NEW: BunnyCDN integration \u2014 automatically upload converted images to a BunnyCDN storage zone.<\/li>\n<li>NEW: REST API \u2014 \/wp-json\/erdo\/v1\/stats and \/wp-json\/erdo\/v1\/audit endpoints for headless workflows.<\/li>\n<li>NEW: Right-click context menu on image cards (View Details, Convert, Fix Filename, Delete).<\/li>\n<li>NEW: Grid size selector \u2014 switch card view between Small, Medium, and Large.<\/li>\n<li>NEW: Missing Alt filter \u2014 instantly hide all images that already have alt text to focus on what needs fixing.<\/li>\n<li>NEW: Filename preview \u2014 shows the sanitized version of a filename before you save.<\/li>\n<li>IMPROVED: Toolbar redesigned with a Tools dropdown \u2014 cleaner layout, less visual clutter.<\/li>\n<li>IMPROVED: Modal sidebar buttons now have clear visual hierarchy (primary, secondary, tool, danger).<\/li>\n<li>IMPROVED: Format badge (WebP, PNG, JPEG\u2026) and SEO score badge shown directly on every image card.<\/li>\n<li>IMPROVED: Before\/After slider now supports touch drag and correct clip-path technique.<\/li>\n<li>FIXED: Plugin Check \u2014 zero errors or warnings confirmed.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Confirmed compatibility with WordPress 7.0 and its new Modern admin theme.<\/li>\n<li>Requires PHP: minimum remains 7.4 (aligned with WordPress 7.0 requirements).<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>NEW: WebP Serving \u2014 .htaccess rewrite (Apache) and PHP picture element rewriter for transparent WebP delivery.<\/li>\n<li>NEW: Max Upload Width \u2014 automatically resize oversized images on upload before conversion.<\/li>\n<li>NEW: Background Queue \u2014 bulk convert via WP-Cron; browser tab can be closed during processing.<\/li>\n<li>NEW: WP-CLI commands \u2014 wp erdo convert, audit, restore, stats, clean-cache.<\/li>\n<li>NEW: Smart Quality \u2014 automatically finds the lowest quality that still looks good.<\/li>\n<li>NEW: Lazy Loading \u2014 adds loading=\"lazy\" to content images for faster initial page load.<\/li>\n<li>NEW: SVG Support \u2014 allows SVG uploads with automatic XSS sanitization for administrators.<\/li>\n<li>NEW: Multisite \u2014 basic network admin settings page.<\/li>\n<li>NEW: Original Backup &amp; Restore \u2014 keep originals in _erdo_backup\/ and restore with one click.<\/li>\n<li>NEW: GIF support in WebP\/AVIF conversion.<\/li>\n<li>FIXED: restore_original() now correctly prevents re-conversion via hook removal.<\/li>\n<li>FIXED: ajax_get_unused_list() now uses bulk_analyze() \u2014 3000 queries \u2192 5 queries.<\/li>\n<li>IMPROVED: All SEO audit rules refined (title hyphens OK, digit filenames OK, width=0 neutral).<\/li>\n<li>IMPROVED: Plugin Check clean \u2014 no errors or warnings.<\/li>\n<\/ul>\n\n<h4>1.8.5<\/h4>\n\n<ul>\n<li>Renamed plugin to \"Erdo Image Optimizer\" for better brand identity.<\/li>\n<li>Added AVIF format support for superior compression.<\/li>\n<li>Added automatic filename sanitization feature for technical SEO.<\/li>\n<li>Added EXIF metadata removal option.<\/li>\n<li>Improved AJAX loading and database query performance.<\/li>\n<li>Security updates for official Plugin Check compatibility.<\/li>\n<\/ul>","raw_excerpt":"Compress &amp; convert images to WebP\/AVIF. SEO-audit every image, bulk-fix alt text, filenames &amp; unused media. Lazy loading &amp; BunnyCDN.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/277924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=277924"}],"author":[{"embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/erdincbulat"}],"wp:attachment":[{"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=277924"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=277924"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=277924"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=277924"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=277924"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=277924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}