{"id":364097,"date":"2026-09-20T20:44:48","date_gmt":"2026-09-20T20:44:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/w3ctrl-smart-image-optimizer\/"},"modified":"2026-09-20T20:44:26","modified_gmt":"2026-09-20T20:44:26","slug":"w3ctrl-smart-image-optimizer","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/w3ctrl-smart-image-optimizer\/","author":23566099,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"W3ctrl Smart Image Optimizer","header_author":"W3ctrl","header_description":"Optimize JPEG, PNG, and WebP locally. Resize, WebP\/AVIF, backups, bulk processing, and WP-CLI \u2014 no remote API.","assets_banners_color":"fcfcfd","last_updated":"2026-09-20 20:44:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/w3ctrl-smart-image-optimizer\/","header_author_uri":"https:\/\/w3ctrl.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":55,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"w3ctrl","date":"2026-09-20 20:44:26","revision":3704605}},"upgrade_notice":{"1.0.3":"<p>Text domain matches the WordPress.org plugin slug.<\/p>","1.0.2":"<p>Plugin Check compliance fixes.<\/p>","1.0.1":"<p>Clarifies optional Cloudflare cache purge documentation for directory review.<\/p>","1.0.0":"<p>Initial release of W3ctrl Smart Image Optimizer.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3705158,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3705158,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3705158,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3705158,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Dashboard statistics and bulk optimization.","2":"Settings for quality, formats, rules, and scheduling."}},"plugin_section":[],"plugin_tags":[194661,17209,163,1452,15376],"plugin_category":[50,52],"plugin_contributors":[281746],"plugin_business_model":[],"class_list":["post-364097","plugin","type-plugin","status-publish","hentry","plugin_tags-avif","plugin_tags-compression","plugin_tags-images","plugin_tags-optimize","plugin_tags-webp","plugin_category-media","plugin_category-performance","plugin_contributors-w3ctrl","plugin_committers-w3ctrl"],"banners":{"banner":"https:\/\/ps.w.org\/w3ctrl-smart-image-optimizer\/assets\/banner-772x250.png?rev=3705158","banner_2x":"https:\/\/ps.w.org\/w3ctrl-smart-image-optimizer\/assets\/banner-1544x500.png?rev=3705158","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/w3ctrl-smart-image-optimizer\/assets\/icon-128x128.png?rev=3705158","icon_2x":"https:\/\/ps.w.org\/w3ctrl-smart-image-optimizer\/assets\/icon-256x256.png?rev=3705158","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>W3ctrl Smart Image Optimizer reduces Media Library image size on your WordPress server. Files are not sent to a remote optimization API.<\/p>\n\n<p>It uses WordPress image editors (Imagick or GD). Originals can be backed up before a file is replaced, and a file is replaced only when the result is smaller.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>JPEG and PNG optimization, including optional EXIF\/metadata stripping<\/li>\n<li>WebP copies next to originals, with optional front-end delivery via a <code>picture<\/code> element<\/li>\n<li>AVIF copies next to originals when the server can encode AVIF, with optional front-end delivery<\/li>\n<li>Resize oversized originals during optimize, plus a manual resize control on the plugin Media screen<\/li>\n<li>Convert opaque PNG files to JPEG<\/li>\n<li>Skip files above a maximum size or below a minimum size<\/li>\n<li>Exclude JPEG, PNG, WebP, or selected uploads folders<\/li>\n<li>Automatic optimization when images are uploaded<\/li>\n<li>Bulk optimization with progress, pause, cancel, and retry failed<\/li>\n<li>Dry-run savings estimate before a bulk run<\/li>\n<li>Per-image optimize, restore, and resize<\/li>\n<li>Original backups; restore one image, restore all, or delete backups<\/li>\n<li>Dashboard statistics and server capability checks<\/li>\n<li>WP-Cron scheduled optimization<\/li>\n<li>Optional LiteSpeed Cache and Cloudflare URL purge after optimize or restore<\/li>\n<li>Media Library column, row actions, and bulk actions<\/li>\n<li>WP-CLI and a REST API for optimize, stats, and restore<\/li>\n<li>Optional removal of plugin stats and backups on uninstall (Media Library files are never deleted)<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>Images are processed on your own server. The plugin does not phone home and does not add telemetry.<\/p>\n\n<p>LiteSpeed cache purge (when enabled) runs only on this server when LiteSpeed Cache is present. It does not send data to a remote LiteSpeed service.<\/p>\n\n<h4>External services<\/h4>\n\n<p>This plugin can optionally connect to Cloudflare to purge cached image URLs after an attachment is optimized, restored, or resized.<\/p>\n\n<p>It sends only the affected media file URLs to <code>api.cloudflare.com<\/code>, and only when an administrator enables Cloudflare purge and saves a Cloudflare Zone ID and API token in Settings. Image files themselves are not uploaded to Cloudflare. The feature is off by default.<\/p>\n\n<p>This service is provided by Cloudflare, Inc.:\n<a href=\"https:\/\/www.cloudflare.com\/terms\/\">Terms of Service<\/a>\n<a href=\"https:\/\/www.cloudflare.com\/privacypolicy\/\">Privacy Policy<\/a><\/p>\n\n<h4>WP-CLI<\/h4>\n\n<pre><code>wp sio optimize\nwp sio optimize --limit=100\nwp sio stats\nwp sio restore &lt;attachment_id&gt;\n<\/code><\/pre>\n\n<h4>Developers<\/h4>\n\n<p>Filters and actions include <code>w3ctrl_sio_booted<\/code>, <code>w3ctrl_sio_after_optimize<\/code>, <code>w3ctrl_sio_after_restore<\/code>, <code>w3ctrl_sio_after_resize<\/code>, and <code>w3ctrl_sio_supported_mime_types<\/code>.<\/p>\n\n<p>The admin menu parent slug is <code>w3ctrl<\/code>. Other W3ctrl plugins can add a submenu under that slug and register themselves on the <code>w3ctrl_admin_plugins<\/code> filter.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>w3ctrl-smart-image-optimizer<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the Plugins screen.<\/li>\n<li>Open <strong>W3ctrl \u2192 Image Optimizer<\/strong> to review statistics and server capabilities.<\/li>\n<li>Use the in-plugin <strong>Media<\/strong> and <strong>Settings<\/strong> links to manage images and options.<\/li>\n<li>Use <strong>Optimize remaining images<\/strong> or Media Library actions for existing files.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20upload%20my%20images%20to%20a%20third%20party%3F\"><h3>Does this plugin upload my images to a third party?<\/h3><\/dt>\n<dd><p>No. Optimization happens on the WordPress server. Optional Cloudflare purge (off by default) only sends image URLs when you enable it and save your own Cloudflare credentials.<\/p><\/dd>\n<dt id=\"will%20original%20images%20be%20overwritten%3F\"><h3>Will original images be overwritten?<\/h3><\/dt>\n<dd><p>When backups are enabled, a copy is stored before a file is changed. A file is replaced only when the optimized version is smaller.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20an%20image%20cannot%20be%20optimized%3F\"><h3>What happens if an image cannot be optimized?<\/h3><\/dt>\n<dd><p>That image is marked as failed or skipped. Bulk optimization continues with the rest of the queue.<\/p><\/dd>\n<dt id=\"can%20i%20restore%20an%20image%3F\"><h3>Can I restore an image?<\/h3><\/dt>\n<dd><p>Yes, if original backups are enabled. Use Restore on the plugin Media screen, in the Media Library, or <code>wp sio restore &lt;id&gt;<\/code>.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20elementor%20and%20woocommerce%3F\"><h3>Does it work with Elementor and WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. The plugin does not require either one. It optimizes Media Library attachments that those plugins use, and WebP\/AVIF delivery wraps standard WordPress image tags.<\/p><\/dd>\n<dt id=\"what%20is%20removed%20when%20i%20uninstall%20the%20plugin%3F\"><h3>What is removed when I uninstall the plugin?<\/h3><\/dt>\n<dd><p>Settings and cron events are always removed. Statistics and backup files are removed only if you enable <strong>Delete data on uninstall<\/strong>. Media Library images are never deleted.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Align text domain with the approved directory slug <code>w3ctrl-smart-image-optimizer<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Prefix dashboard template variables for Plugin Check compliance.<\/li>\n<li>Add missing translators comment for resize size string.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Document Cloudflare as an optional external service with Terms and Privacy links.<\/li>\n<li>Use site_url for the WP-Cron example URL.<\/li>\n<li>Rely on WordPress.org language packs instead of load_plugin_textdomain().<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Optimize JPEG, PNG, and WebP locally. Resize, WebP\/AVIF, backups, bulk processing, and WP-CLI \u2014 no remote API.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/364097","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=364097"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/w3ctrl"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=364097"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=364097"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=364097"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=364097"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=364097"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=364097"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}