{"id":353467,"date":"2026-08-24T20:49:19","date_gmt":"2026-08-24T20:49:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/webberzone-image-optimizer\/"},"modified":"2026-10-10T19:11:42","modified_gmt":"2026-10-10T19:11:42","slug":"webberzone-image-optimizer","status":"publish","type":"plugin","link":"https:\/\/kea.wordpress.org\/plugins\/webberzone-image-optimizer\/","author":2277,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.1","stable_tag":"1.2.1","tested":"7.1.3","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"WebberZone Image Optimizer","header_author":"WebberZone","header_description":"Convert your media library to WebP and AVIF, and serve the best format each browser supports.","assets_banners_color":"d3cfc9","last_updated":"2026-10-10 19:11:42","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/wzn.io\/donate-wz","header_plugin_uri":"https:\/\/webberzone.com\/plugins\/webberzone-image-optimizer\/","header_author_uri":"https:\/\/webberzone.com\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":537,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"Ajay","date":"2026-08-24 20:48:55","revision":3664258},"1.0.1":{"tag":"1.0.1","author":"Ajay","date":"2026-08-25 20:18:23","revision":3665963},"1.0.2":{"tag":"1.0.2","author":"Ajay","date":"2026-08-27 16:50:22","revision":3669257},"1.1.0":{"tag":"1.1.0","author":"Ajay","date":"2026-09-12 09:07:22","revision":3692495},"1.1.1":{"tag":"1.1.1","author":"Ajay","date":"2026-09-28 07:45:19","revision":3716539},"1.1.2":{"tag":"1.1.2","author":"Ajay","date":"2026-09-28 09:21:24","revision":3716749},"1.2.0":{"tag":"1.2.0","author":"Ajay","date":"2026-10-07 17:32:07","revision":3733095},"1.2.1":{"tag":"1.2.1","author":"Ajay","date":"2026-10-10 19:11:42","revision":3738571}},"upgrade_notice":{"1.2.1":"<p>Fixes PNG compression on servers using open_basedir, nested picture elements and the nginx WebP fallback.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3664258,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3664258,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3664258,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3664258,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3664258,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.1.0","1.1.1","1.1.2","1.2.0","1.2.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3664258,"resolution":"1","location":"assets","locale":"","width":975,"height":374},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3664258,"resolution":"2","location":"assets","locale":"","width":560,"height":1316}},"screenshots":{"1":"Bulk Optimize screen with live progress","2":"Per-image savings and actions in the Edit Media screen"}},"plugin_section":[],"plugin_tags":[194661,56174,29161,2701,15376],"plugin_category":[54],"plugin_contributors":[78250,78249],"plugin_business_model":[],"class_list":["post-353467","plugin","type-plugin","status-publish","hentry","plugin_tags-avif","plugin_tags-compress-images","plugin_tags-image-optimization","plugin_tags-optimize-images","plugin_tags-webp","plugin_category-security-and-spam-protection","plugin_contributors-ajay","plugin_contributors-webberzone","plugin_committers-ajay"],"banners":{"banner":"https:\/\/ps.w.org\/webberzone-image-optimizer\/assets\/banner-772x250.png?rev=3664258","banner_2x":"https:\/\/ps.w.org\/webberzone-image-optimizer\/assets\/banner-1544x500.png?rev=3664258","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/webberzone-image-optimizer\/assets\/icon.svg?rev=3664258","icon":"https:\/\/ps.w.org\/webberzone-image-optimizer\/assets\/icon.svg?rev=3664258","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/webberzone-image-optimizer\/assets\/screenshot-1.png?rev=3664258","caption":"Bulk Optimize screen with live progress"},{"src":"https:\/\/ps.w.org\/webberzone-image-optimizer\/assets\/screenshot-2.png?rev=3664258","caption":"Per-image savings and actions in the Edit Media screen"}],"raw_content":"<!--section=description-->\n<p>WebberZone Image Optimizer is a free WebP converter and AVIF converter for WordPress. It converts the JPEG, PNG and GIF images already in your media library to WebP and AVIF, optimizes new uploads automatically, and serves each visitor the smallest file their browser can read. Images are typically 40\u201360% smaller with no visible difference, so pages load faster and score better on PageSpeed Insights and Core Web Vitals.<\/p>\n\n<p>Everything happens on your own server. Your images are never uploaded anywhere. The plugin makes no outbound network requests of any kind \u2014 there is no external service, no API key, no monthly image quota, no account to create and nothing that can stop working because a company shut down or changed its pricing. AVIF is not a paid upgrade: every feature is free.<\/p>\n\n<h4>What your server needs<\/h4>\n\n<p>Almost certainly nothing you do not already have. WordPress cannot crop or resize an uploaded image without either the <strong>Imagick<\/strong> or the <strong>GD<\/strong> extension, so every working WordPress install already has one of them, and both have been able to write WebP for years.<\/p>\n\n<ul>\n<li><strong>WebP<\/strong> works on virtually any current host. GD has supported it since PHP 5.5, Imagick since well before that.<\/li>\n<li><strong>AVIF<\/strong> is newer and less universal. It needs either PHP 8.1+ with GD built against libavif, or Imagick with an AVIF delegate. Plenty of hosts have it; plenty do not yet.<\/li>\n<\/ul>\n\n<p>You do not have to guess. The plugin tests your server by actually encoding a small image with each backend at activation, rather than trusting what the extension claims to support, and the settings screen shows you exactly which formats came back working. If AVIF is unavailable the option is simply marked as such and WebP carries on normally.<\/p>\n\n<h4>Compress and resize JPEG and PNG originals<\/h4>\n\n<p>By default, each optimized copy is written alongside the original with the new extension appended, so <code>photo.jpg<\/code> gains <code>photo.jpg.webp<\/code>, and the original is left unchanged. The <em>File naming<\/em> setting can switch this to replacing the extension instead (<code>photo.webp<\/code>) \u2014 see the settings screen for the trade-off before turning it on.<\/p>\n\n<p>You can also compress the original JPEG and PNG files themselves. JPEG compression uses Imagick or GD at the quality you choose; PNG compression uses a local oxipng or pngquant tool when your server has one. A maximum image dimension resizes oversized uploads and, optionally, existing originals. Every change is backed up first, and Restore originals reverses it. Both features are off by default. Deactivation stops optimized delivery but does not restore compressed originals.<\/p>\n\n<h4>Serve WebP and AVIF with the picture element, safe behind caches and CDNs<\/h4>\n\n<p>Images are wrapped in a <code>&lt;picture&gt;<\/code> element, so the <em>browser<\/em> chooses the format. That matters more than it sounds: the common alternative is to vary the response on the <code>Accept<\/code> header, which returns different bytes for a single URL. Any cache in front of that \u2014 a page cache plugin, a CDN \u2014 which ignores <code>Vary<\/code> will happily hand a WebP file to a browser that cannot display it. A <code>&lt;picture&gt;<\/code> element has no such failure mode.<\/p>\n\n<p>Responsive images are handled properly. Each format's <code>&lt;source&gt;<\/code> lists only the optimized <code>srcset<\/code> candidates that exist, with their descriptors preserved exactly. Missing intermediate copies are omitted, while a missing smallest, widest or highest-density copy withholds that format so the optimized set always covers the same range as the original set. The original <code>&lt;img&gt;<\/code> remains as the fallback.<\/p>\n\n<p>For images referenced from a stylesheet, where the browser is never offered a choice, the Delivery tab generates ready-to-paste Apache and nginx rules, complete with the <code>Vary: Accept<\/code> header those rules require.<\/p>\n\n<h4>Bulk optimize your existing media library<\/h4>\n\n<p>The bulk screen works through a database-backed queue one batch at a time. Close the tab and nothing is lost; a background worker carries on, and reopening the screen resumes exactly where it stopped. Failures are retried a few times and then listed with the reason.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Convert JPEG, PNG and GIF to WebP and AVIF, together or separately (AVIF where the server supports it)<\/li>\n<li>Bulk conversion of an existing media library, resumable and interruptible<\/li>\n<li>Automatic conversion of new uploads<\/li>\n<li>Optional JPEG and PNG compression of the originals, with backups and Restore originals<\/li>\n<li>Maximum image dimension to resize oversized uploads<\/li>\n<li>Reuses WebP and AVIF files already created by another image optimizer instead of converting again<\/li>\n<li>Lazy conversion: an image seen on the front end but not yet converted is queued, never encoded during the page render<\/li>\n<li>Per-format quality, encoder effort, and lossless mode for PNG sources<\/li>\n<li>A lossy optimized copy that misses the minimum saving is retried once at a lower quality before being discarded, per file<\/li>\n<li>Metadata stripped from the copies while the color profile is kept, so colors do not shift<\/li>\n<li>Animated GIFs keep their animation when ImageMagick is available<\/li>\n<li>Memory guard that skips an image rather than crashing a batch<\/li>\n<li>Per-image status and actions in the Media library, with a filter for optimized, not-yet-optimized, skipped and failed images<\/li>\n<li>Bulk Optimize warns when images are queued but the background worker has stopped running, and gives the commands that recover it<\/li>\n<li>Multisite aware: per-site queues, tables created for new sites automatically<\/li>\n<li>WP-CLI: <code>wp wzio status<\/code>, <code>convert<\/code>, <code>queue<\/code>, <code>run<\/code>, <code>clean<\/code><\/li>\n<li>Filters throughout for developers<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>webberzone-image-optimizer<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the Plugins menu.<\/li>\n<li>Visit <strong>Media \u2192 Image Optimizer<\/strong> to choose your formats.<\/li>\n<li>Visit <strong>Media \u2192 Bulk Optimize<\/strong> and press Start.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20this%20touch%20my%20original%20images%3F\"><h3>Will this touch my original images?<\/h3><\/dt>\n<dd><p>By default, originals are unchanged and modern copies are separate files. Enable Compress original images to recompress served JPEG\/PNG files with mandatory backups. Restore originals reverses compression and optional resizing. The unscaled upload retained by WordPress is left untouched.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20deactivate%20the%20plugin%3F\"><h3>What happens if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Your site immediately goes back to serving the original images. The generated files stay on disk, so reactivating restores the optimization instantly without converting anything again.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20change%20my%20server%20configuration%3F\"><h3>Do I need to change my server configuration?<\/h3><\/dt>\n<dd><p>No. The <code>&lt;picture&gt;<\/code> rewrite needs nothing beyond activating the plugin. Server rules are only needed for images referenced from CSS, and they are optional.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20api%20key%20or%20an%20account%3F\"><h3>Do I need an API key or an account?<\/h3><\/dt>\n<dd><p>No. Conversion and JPEG compression run on your own server with Imagick or GD, the image libraries WordPress already uses; PNG compression also needs oxipng or pngquant on the server. There is no sign-up, no monthly quota and no limit on how many images you convert, and it works the same on staging and local sites.<\/p><\/dd>\n<dt id=\"is%20avif%20conversion%20free%3F\"><h3>Is AVIF conversion free?<\/h3><\/dt>\n<dd><p>Yes. There is no paid version; WebP, AVIF, bulk conversion, compression and WP-CLI are all included. AVIF only needs a server that can encode it, and the settings screen tells you whether yours can.<\/p><\/dd>\n<dt id=\"will%20this%20improve%20my%20pagespeed%20insights%20score%3F\"><h3>Will this improve my PageSpeed Insights score?<\/h3><\/dt>\n<dd><p>Smaller images mean fewer bytes to download, which is what PageSpeed Insights measures in its image delivery audit and what most often slows Largest Contentful Paint. The plugin does not lazy load images or change their dimensions, so keep whatever handles those today.<\/p><\/dd>\n<dt id=\"i%20am%20switching%20from%20another%20image%20optimizer.%20do%20i%20have%20to%20convert%20everything%20again%3F\"><h3>I am switching from another image optimizer. Do I have to convert everything again?<\/h3><\/dt>\n<dd><p>No. WebP and AVIF files left next to your originals by plugins such as ShortPixel, Imagify or EWWW Image Optimizer are served as they are. The plugin detects which naming those files use and offers to match it, and the bulk run only creates the formats that are missing. Do not use the old plugin's restore tool before switching, as that deletes its optimized copies. See <a href=\"https:\/\/webberzone.com\/support\/knowledgebase\/migrating-from-another-image-optimizer\/\">Migrating from another image optimizer<\/a>.<\/p><\/dd>\n<dt id=\"should%20i%20enable%20avif%3F\"><h3>Should I enable AVIF?<\/h3><\/dt>\n<dd><p>AVIF produces noticeably smaller files than WebP and is understood by every current browser, but it takes longer to encode and a small number of older browsers do not support it. Generating both is the safest choice: each visitor gets the smallest file their browser can read, and anyone else gets the original. Start with WebP if your library is very large.<\/p><\/dd>\n<dt id=\"my%20server%20cannot%20encode%20webp%20or%20avif\"><h3>My server cannot encode WebP or AVIF<\/h3><\/dt>\n<dd><p>The settings screen marks any format your server cannot produce. Ask your host to enable the Imagick extension, which is the better backend, or GD compiled with WebP support.<\/p><\/dd>\n<dt id=\"one%20of%20my%20images%20is%20still%20being%20served%20as%20a%20jpeg%20or%20png\"><h3>One of my images is still being served as a JPEG or PNG<\/h3><\/dt>\n<dd><p>There are three common reasons, and the Media library column tells you which one applies.<\/p>\n\n<p><strong>The image is not hosted on your site.<\/strong> Only files inside your own uploads directory can be optimized. Posts imported from another site often keep image URLs pointing back at the original domain, and those are left alone.<\/p>\n\n<p><strong>One size in the set could not be made smaller.<\/strong> A lossy optimized copy that misses the minimum saving is retried once at a lower quality and discarded if it still misses. Lossless copies are simply discarded when they miss. Missing intermediate copies are left out of the optimized <code>srcset<\/code>, so the browser can still use the copies that exist. If the smallest, widest or highest-density copy is missing, that optimized format is withheld to avoid over-downloading or serving an undersized image where the original set offered a better choice.<\/p>\n\n<p><strong>Your server cannot produce that format.<\/strong> Check the settings screen, which marks any format your server cannot encode.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20a%20cdn%20or%20a%20caching%20plugin%3F\"><h3>Does this work with a CDN or a caching plugin?<\/h3><\/dt>\n<dd><p>Yes. Because the format choice happens in the browser rather than on the server, every visitor receives identical HTML and the page cache stays correct. If you also add the optional server rules for CSS backgrounds, keep the <code>Vary: Accept<\/code> header they include.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.1<\/h4>\n\n<p>Release date: 10 October 2026<\/p>\n\n<p><strong>Added<\/strong><\/p>\n\n<ul>\n<li><code>wzio_png_tool_paths<\/code> filter for custom oxipng or pngquant locations.<\/li>\n<\/ul>\n\n<p><strong>Fixed<\/strong><\/p>\n\n<ul>\n<li>PNG compression was unavailable, with PHP warnings, when <code>open_basedir<\/code> excluded the tool's folder.<\/li>\n<li>Images already inside a <code>&lt;picture&gt;<\/code> element were wrapped in a second one.<\/li>\n<li>The nginx rules served the original instead of WebP when AVIF was accepted but missing.<\/li>\n<li>Whole-page rewriting wrapped images inside HTML comments and scripts.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<p>Release date: 7 October 2026\nRelease post: https:\/\/webberzone.com\/announcements\/image-optimizer-v1-2\/<\/p>\n\n<p><strong>Added<\/strong><\/p>\n\n<ul>\n<li>Optional original JPEG compression with configurable quality and PNG compression through local oxipng or pngquant tools, with verified backups and <code>wp wzio compress<\/code> support.<\/li>\n<li>Restore originals actions in the Media Library and Edit Media screen, bulk restoration and <code>wp wzio restore-originals<\/code> to recover files and dimensions; backups and restore records are retained on uninstall by default.<\/li>\n<li>Compression from verified backups when settings change, plus backup integration with WordPress's GD and Imagick image editors to avoid regenerating thumbnails from compressed main files.<\/li>\n<li>Maximum image dimension and Disable upload scaling settings for new uploads.<\/li>\n<li>Resize existing originals option and <code>wp wzio compress --resize<\/code> to shrink served main files with restorable dimensions; existing thumbnail files are retained, with oversized candidates omitted from WordPress-generated <code>srcset<\/code>.<\/li>\n<li>Original compression results and resized dimensions in the Media Library, plus original savings, backup usage, resized-image counts and optimized-copy disk usage by format on Bulk Optimize and in <code>wp wzio status<\/code>.<\/li>\n<li>Regenerate only images made with older settings option on Bulk Optimize and <code>--outdated<\/code> on <code>wp wzio convert<\/code> and <code>wp wzio queue<\/code>; copies made before settings tracking are left alone.<\/li>\n<\/ul>\n\n<p><strong>Fixed<\/strong><\/p>\n\n<ul>\n<li>Bandwidth savings on Bulk Optimize and <code>wp wzio status<\/code> omitted images converted outside the queue and could be lost when queue records were cleared.<\/li>\n<li>Image conversion could fail in background or command-line requests when <code>wp_tempnam()<\/code> was unavailable.<\/li>\n<li>Optimized copies could remain on disk when an image was deleted during conversion.<\/li>\n<\/ul>\n\n<h4>Earlier versions<\/h4>\n\n<p>For the changelog of earlier versions, please refer to the <a href=\"https:\/\/github.com\/WebberZone\/webberzone-image-optimizer\/releases\">releases page on GitHub<\/a>.<\/p>","raw_excerpt":"Free WebP and AVIF converter. Compress and optimize images on your own server and serve the best format. No API key, no account, no limits.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/353467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=353467"}],"author":[{"embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ajay"}],"wp:attachment":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=353467"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=353467"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=353467"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=353467"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=353467"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=353467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}