{"id":235183,"date":"2025-06-30T07:14:51","date_gmt":"2025-06-30T07:14:51","guid":{"rendered":"https:\/\/en-gb.wordpress.org\/plugins\/webp-image-converter-replacer-image-optimisation-no-duplicates-save-disk-space\/"},"modified":"2026-09-24T11:15:27","modified_gmt":"2026-09-24T11:15:27","slug":"webp-image-converter-replacer","status":"publish","type":"plugin","link":"https:\/\/gax.wordpress.org\/plugins\/webp-image-converter-replacer\/","author":23278042,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.8","stable_tag":"1.1.8","tested":"7.1.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"WebP Image Converter & Replacer \u2013 Image Optimisation, No Duplicates, Save Disk Space","header_author":"Core Essentials","header_description":"Adds a link to the Media Library to convert JPEG\/PNG\/Static GIF images to WebP format, replacing the original if smaller.","assets_banners_color":"1b818c","last_updated":"2026-09-24 11:15:27","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/coreessentials.online\/plugins-for-wordpress\/webp-image-converter-replacer\/","header_author_uri":"https:\/\/coreessentials.online\/","rating":3,"author_block_rating":0,"active_installs":100,"downloads":67372,"num_ratings":2,"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":"coreessentials","date":"2025-08-28 07:28:32","revision":3351770},"1.1.0":{"tag":"1.1.0","author":"coreessentials","date":"2025-09-10 11:57:06","revision":3359162},"1.1.1":{"tag":"1.1.1","author":"coreessentials","date":"2025-10-10 12:32:16","revision":3376233},"1.1.2":{"tag":"1.1.2","author":"coreessentials","date":"2025-10-21 12:37:19","revision":3381920},"1.1.3":{"tag":"1.1.3","author":"coreessentials","date":"2025-10-27 07:57:52","revision":3385021},"1.1.4":{"tag":"1.1.4","author":"coreessentials","date":"2026-09-02 08:14:50","revision":3677450},"1.1.5":{"tag":"1.1.5","author":"coreessentials","date":"2026-09-18 12:02:37","revision":3701924},"1.1.6":{"tag":"1.1.6","author":"coreessentials","date":"2026-09-23 13:06:23","revision":3709371},"1.1.7":{"tag":"1.1.7","author":"coreessentials","date":"2026-09-24 08:45:48","revision":3710869},"1.1.8":{"tag":"1.1.8","author":"coreessentials","date":"2026-09-24 11:15:27","revision":3711153}},"upgrade_notice":{"1.1.7":"<p>Wide images that lost their original-file link are converted like a normal big upload, so posts get the WebP thumbnail URLs.<\/p>","1.1.6":"<p>Recommended. Phoenix still updates content links. Conversion no longer generates thumbnails a second time after Phoenix, which was doubling files on disk.<\/p>","1.1.5":"<p>Recommended: Retry Failed &amp; Skipped for bulk (e.g. after disk full), and clearer messaging when the queue is empty only due to failed\/skipped items.<\/p>","1.1.4":"<p>Recommended update: WordPress 7.1 compatibility, Phoenix MIME fix, block-editor auto-convert URL fix, and conversion status\/stats reliability improvements.<\/p>","1.1.0":"<p>Major update: auto-convert on upload (premium), overview stats, Phoenix integration, reliability &amp; UX improvements.<\/p>","1.1.1":"<ul>\n<li>Enhancement: Longer timeouts for slower servers \/ larger images<\/li>\n<li>Enhancement: Status polling to prevent failed false positive<\/li>\n<li>Enhancement: Better animated Gif detection<\/li>\n<li>Enhancement: Reduced checking for faster conversions<\/li>\n<\/ul>"},"ratings":{"1":1,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3319732,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3319729,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3319729,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3711153,"resolution":false,"location":"assets","locale":"","contents":"{\"features\":{\"networking\":true},\"siteOptions\":{\"blogname\":\"WebP Image Converter & Replacer \\u2013 Image Optimisation, No Duplicates, Save Disk Space\"},\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"webp-image-converter-replacer\"},\"options\":{\"activate\":true}},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/sebastian-CxNdzRd1xtY-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/sebastian-CxNdzRd1xtY-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/sebastian-CxNdzRd1xtY-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/grigorii-shcheglov-YtULKNJ2BSM-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/grigorii-shcheglov-YtULKNJ2BSM-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/grigorii-shcheglov-YtULKNJ2BSM-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/thinh-nguyen-8wIVNc-5YxM-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/thinh-nguyen-8wIVNc-5YxM-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/thinh-nguyen-8wIVNc-5YxM-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/christian-crocker-7ls0DhnAJvw-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/christian-crocker-7ls0DhnAJvw-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/christian-crocker-7ls0DhnAJvw-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/wenhao-ruan-2XTsGRsbEKE-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/wenhao-ruan-2XTsGRsbEKE-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/wenhao-ruan-2XTsGRsbEKE-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/micah-sammie-chaffin-6O6BZerihQw-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/micah-sammie-chaffin-6O6BZerihQw-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/micah-sammie-chaffin-6O6BZerihQw-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/intricate-explorer-_TJGk71ZGDc-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/intricate-explorer-_TJGk71ZGDc-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/intricate-explorer-_TJGk71ZGDc-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/zhenyu-luo-n4XeCKwwrk0-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/zhenyu-luo-n4XeCKwwrk0-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/zhenyu-luo-n4XeCKwwrk0-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/willian-justen-de-vasconcellos-sp5TFLhI3hM-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/willian-justen-de-vasconcellos-sp5TFLhI3hM-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/willian-justen-de-vasconcellos-sp5TFLhI3hM-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/colin-watts-YwwUXa6NvX4-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/colin-watts-YwwUXa6NvX4-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/colin-watts-YwwUXa6NvX4-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/shutter-speed-_OZPiiW-pmo-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/shutter-speed-_OZPiiW-pmo-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/shutter-speed-_OZPiiW-pmo-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/willian-justen-de-vasconcellos-v4rA2O0_IVI-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/willian-justen-de-vasconcellos-v4rA2O0_IVI-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/willian-justen-de-vasconcellos-v4rA2O0_IVI-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/kevin-schmid-9WicLhY0tI8-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/kevin-schmid-9WicLhY0tI8-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/kevin-schmid-9WicLhY0tI8-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/ren-hosoya-xYI_dcYIQas-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/ren-hosoya-xYI_dcYIQas-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/ren-hosoya-xYI_dcYIQas-unsplash.jpg\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/zhenyu-luo-acLp1oYUsUc-unsplash.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/iwtw-richb\\\/demo-content\\\/refs\\\/heads\\\/main\\\/zhenyu-luo-acLp1oYUsUc-unsplash.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/zhenyu-luo-acLp1oYUsUc-unsplash.jpg\"},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"mkdir\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\\\/00-ce-force-media.php\",\"data\":\"<?php\\n\\\/**\\n * Plugin Name: CE Force Media (until reached)\\n *\\\/\\n\\n\\\/\\\/ Where we want to land\\nfunction ce_force_media_target(){ return self_admin_url('upload.php?mode=list'); }\\n\\n\\\/\\\/ 1) Rewrite any later admin redirects back to Media until we've reached it\\nadd_filter('wp_redirect', function($location, $status){\\n    if( get_option('_ce_force_media_done') || isset($_GET['no_redirect']) ) return $location;\\n    if( strpos($location, 'upload.php') !== false ) return $location;\\n    if( is_admin() ) return ce_force_media_target();\\n    return $location; \\\/\\\/ front-end redirects handled below\\n}, 9999, 2);\\n\\n\\\/\\\/ 2) Early push: catches BOTH admin and front-end first load\\nadd_action('init', function(){\\n    if( get_option('_ce_force_media_done') || isset($_GET['no_redirect']) ) return;\\n\\n    \\\/\\\/ Already on Media Library? do nothing here; we'll mark done in load-upload.php\\n    $req = $_SERVER['REQUEST_URI'] ?? '';\\n    $on_media = (strpos($req, 'upload.php') !== false);\\n\\n    \\\/\\\/ If in admin and not on Media -> go there\\n    if( is_admin() ){\\n        if( defined('DOING_AJAX') && DOING_AJAX ) return;\\n        if( ! $on_media ) { wp_redirect( ce_force_media_target() ); exit; }\\n        return;\\n    }\\n\\n    \\\/\\\/ If on the front-end but logged in -> send to Media\\n    if( is_user_logged_in() ){\\n        if( defined('REST_REQUEST') && REST_REQUEST ) return;\\n        wp_redirect( ce_force_media_target() );\\n        exit;\\n    }\\n}, 0);\\n\\n\\\/\\\/ 3) Only mark success once Media Library actually loads\\nadd_action('load-upload.php', function(){ update_option('_ce_force_media_done', 1, false); }, 0);\\n\"},{\"step\":\"writeFile\",\"path\":\"wordpress\\\/wp-content\\\/mu-plugins\\\/show-admin-notice-2.php\",\"data\":\"<?php\\nadd_action(\\n'admin_notices',\\nfunction() {\\n$dismissed = get_user_option( 'dismissed_expose_blueprint_notice-2', get_current_user_id() );\\nif ( $dismissed ) {\\nreturn;\\n}\\necho '<div class=\\\"notice notice-success is-dismissible\\\" id=\\\"custom-admin-notice-2\\\"><p><strong>This is a demo of the \\\\'WebP Image Converter & Replacer\\\\' plugin by <a href=\\\\'https:\\\/\\\/coreessentials.online\\\/\\\\' target=\\\\'_blank\\\\'>Core Essentials<\\\/a><\\\/strong><\\\/p><ol><li>Hover over a media item below and click \\\\'<strong>Convert to WebP<\\\/strong>\\\\'.<\\\/li><li>After conversion check the \\\\'<strong>Total Savings via WebP Converter<\\\/strong>\\\\' or hover over the image again to see how much space you saved.<\\\/li><li>Click the image to see the quality of the conversion.<\\\/li><\\\/ol><\\\/div>';\\n}\\n);\\nadd_action('wp_ajax_dismiss_custom-admin-notice-2', function() {\\ncheck_ajax_referer('custom-admin-notice-2', 'nonce');\\n$user_id = get_current_user_id();\\nif ( $user_id ) {\\nupdate_user_option($user_id, 'dismissed_expose_blueprint_notice-2', 1, false);\\nwp_send_json_success();\\n} else {\\nwp_send_json_error('User not found');\\n}\\n} );\\nadd_action('admin_footer', function() {\\n?>\\n<script type=\\\"text\\\/javascript\\\">\\njQuery(document).ready( function($) {\\nvar ajaxurl = '<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>';\\nvar nonce = '<?php echo esc_html( wp_create_nonce( 'custom-admin-notice-2' ) ); ?>';\\n$( '#custom-admin-notice-2' ).on( 'click', '.notice-dismiss', function() {\\n$.ajax({\\nurl: ajaxurl,\\ntype: 'POST',\\ndata: {\\naction: 'dismiss_custom-admin-notice-2',\\nnonce: nonce\\n}\\n});\\n});\\n});\\n<\\\/script>\\n<?php\\n} );\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.1.5","1.1.6","1.1.7","1.1.8"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3359162,"resolution":"1","location":"assets","locale":"","width":1895,"height":890},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3359162,"resolution":"2","location":"assets","locale":"","width":1895,"height":890},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3359162,"resolution":"3","location":"assets","locale":"","width":1895,"height":890},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3359162,"resolution":"4","location":"assets","locale":"","width":1895,"height":890},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3359162,"resolution":"5","location":"assets","locale":"","width":1895,"height":890},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3359162,"resolution":"6","location":"assets","locale":"","width":1895,"height":890}},"screenshots":{"1":"Optimization Overview \u2013 library status and space saved","2":"Phoenix Integration Status \u2013 compatibility &amp; guidance","3":"Media Library \u2013 \u201cConvert to WebP\u201d links","4":"Example Savings \u2013 footprint cut after conversion","5":"Premium \u2013 bulk convert &amp; auto-convert on upload","6":"Dev Tools \u2013 confirming <code>.webp<\/code> on the front end"}},"plugin_section":[],"plugin_tags":[249014,29161,233,15376,186483],"plugin_category":[54],"plugin_contributors":[242178],"plugin_business_model":[],"class_list":["post-235183","plugin","type-plugin","status-publish","hentry","plugin_tags-convert-to-webp","plugin_tags-image-optimization","plugin_tags-media-library","plugin_tags-webp","plugin_tags-webp-converter","plugin_category-security-and-spam-protection","plugin_contributors-coreessentials","plugin_committers-coreessentials","plugin_support_reps-richard-b"],"banners":{"banner":"https:\/\/ps.w.org\/webp-image-converter-replacer\/assets\/banner-772x250.png?rev=3319729","banner_2x":"https:\/\/ps.w.org\/webp-image-converter-replacer\/assets\/banner-1544x500.png?rev=3319729","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/webp-image-converter-replacer\/assets\/icon.svg?rev=3319732","icon":"https:\/\/ps.w.org\/webp-image-converter-replacer\/assets\/icon.svg?rev=3319732","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/webp-image-converter-replacer\/assets\/screenshot-1.png?rev=3359162","caption":"Optimization Overview \u2013 library status and space saved"},{"src":"https:\/\/ps.w.org\/webp-image-converter-replacer\/assets\/screenshot-2.png?rev=3359162","caption":"Phoenix Integration Status \u2013 compatibility &amp; guidance"},{"src":"https:\/\/ps.w.org\/webp-image-converter-replacer\/assets\/screenshot-3.png?rev=3359162","caption":"Media Library \u2013 \u201cConvert to WebP\u201d links"},{"src":"https:\/\/ps.w.org\/webp-image-converter-replacer\/assets\/screenshot-4.png?rev=3359162","caption":"Example Savings \u2013 footprint cut after conversion"},{"src":"https:\/\/ps.w.org\/webp-image-converter-replacer\/assets\/screenshot-5.png?rev=3359162","caption":"Premium \u2013 bulk convert &amp; auto-convert on upload"},{"src":"https:\/\/ps.w.org\/webp-image-converter-replacer\/assets\/screenshot-6.png?rev=3359162","caption":"Dev Tools \u2013 confirming <code>.webp<\/code> on the front end"}],"raw_content":"<!--section=description-->\n<p><strong>WebP Image Converter &amp; Replacer<\/strong> converts your images (JPEG, PNG, static GIF) to <strong>WebP<\/strong>, replaces originals <strong>only when smaller<\/strong>, and updates database references so your site transparently serves <code>.webp<\/code>. No duplicate files. No front-end bloat. Just <strong>faster pages<\/strong> and <strong>less disk usage<\/strong>.<\/p>\n\n<p><strong>Why this plugin<\/strong>\n- <strong>No Duplicate Images:<\/strong> Converts and replaces originals when WebP is smaller, keeping <code>\/uploads<\/code> lean.\n- <strong>Real Performance Gains:<\/strong> WebP typically reduces size ~25\u201335% at similar quality, aiding Core Web Vitals.\n- <strong>Safety First:<\/strong> Never deletes the original unless conversion succeeds <strong>and<\/strong> the WebP is smaller.\n- <strong>Full DB Integration:<\/strong> All generated sizes are converted; URLs in content\/meta are updated to <code>.webp<\/code>.\n- <strong>On-Server Only:<\/strong> Uses PHP <strong>GD<\/strong> or <strong>Imagick<\/strong>. No external API, keys, or privacy concerns.\n- <strong>Lightweight:<\/strong> Runs only during conversion\u2014nothing extra on the front end.<\/p>\n\n<p><strong>Free features<\/strong>\n- Convert individual images from <strong>Media \u2192 Library<\/strong> (list view).\n- <strong>Optimization Overview<\/strong> with counts: convertible, converted, remaining, skipped, failed, total space saved.\n- Smart memory handling to avoid PHP exhaustion on large images.<\/p>\n\n<p><strong>Premium features<\/strong>\n- <strong>Auto-convert on upload:<\/strong> New images become WebP automatically.\n- <strong>Bulk convert selected:<\/strong> Multi-select in Media Library (list view).\n- <strong>Bulk convert all:<\/strong> Library-wide conversion with progress + pause\/resume.<\/p>\n\n<blockquote>\n  <p>Whether you\u2019re tight on storage or chasing better performance, this is a <strong>safe, effective<\/strong> way to modernize images.<\/p>\n<\/blockquote>\n\n<p><strong>IMPORTANT:<\/strong> Because originals may be deleted, <strong>back up<\/strong> your <code>\/wp-content\/uploads\/<\/code> and database before converting. Test on staging if possible.<\/p>\n\n<h3>How it works<\/h3>\n\n<ol>\n<li>Plugin checks server support (GD\/Imagick with WebP).<\/li>\n<li>You convert images (single\/bulk\/premium auto).<\/li>\n<li>If the <code>.webp<\/code> is smaller, the original file is removed and <strong>all DB refs switch to <code>.webp<\/code><\/strong>.<\/li>\n<li>Your site now serves WebP transparently\u2014no theme changes required.<\/li>\n<\/ol>\n\n<h3>Usage<\/h3>\n\n<p><strong>Optimization Overview<\/strong>\n- <strong>Settings \u2192 Media<\/strong> \u2192 \u201cWebP Image Converter &amp; Replacer\u201d\n- See totals converted\/remaining\/skipped\/failed and <strong>space saved<\/strong>.<\/p>\n\n<p><strong>Convert individual images<\/strong>\n- <strong>Media \u2192 Library<\/strong> (list view) \u2192 <strong>Convert to WebP<\/strong> link under each item.<\/p>\n\n<p><strong>Premium<\/strong>\n- <strong>Auto-convert on upload<\/strong>: toggle under <strong>Settings \u2192 Media<\/strong>.<br \/>\n- <strong>Bulk convert selected<\/strong>: select items in Media Library (list view) \u2192 bulk action <strong>Convert to WebP<\/strong>.<br \/>\n- <strong>Bulk convert all<\/strong>: <strong>Start Bulk Optimization<\/strong> with progress + pause\/resume.<\/p>\n\n<p><strong>After conversion<\/strong>\n- Verify pages serve <code>.webp<\/code> in browser dev tools.\n- Clear any caches\/CDN.<\/p>\n\n<h3>Phoenix Media Rename Integration<\/h3>\n\n<p>We integrate with <a href=\"https:\/\/en-gb.wordpress.org\/plugins\/phoenix-media-rename\/\"><strong>Phoenix Media Rename<\/strong><\/a> to safely update <strong>all<\/strong> database references.<\/p>\n\n<p><strong>Why Phoenix?<\/strong>\n- Mature, reliable database URL updates across posts, custom fields, widgets, Customizer, etc.\n- Reduces risk vs. \u201cDIY\u201d find\/replace logic used by other optimizers.\n- Lets this plugin focus on <strong>conversion<\/strong> while Phoenix handles <strong>DB updates<\/strong>.<\/p>\n\n<p><strong>Flow<\/strong>\n1. Convert to WebP.\n2. Phoenix updates URLs from <code>.jpg\/.png\/.gif<\/code> to <code>.webp<\/code>.\n3. Your site serves WebP with no broken links.<\/p>\n\n<!--section=installation-->\n<ol>\n<li><strong>Back up<\/strong> <code>\/wp-content\/uploads\/<\/code> and your database.<\/li>\n<li>Install via <strong>Plugins \u2192 Add New<\/strong> (search \u201cWebP Image Converter &amp; Replacer\u201d) or upload the ZIP.<\/li>\n<li>Activate.<\/li>\n<li>Ensure <strong>Imagick<\/strong> or <strong>GD<\/strong> with WebP is available (the plugin will warn if not).<\/li>\n<li>Go to <strong>Settings \u2192 Media \u2192 WebP Image Converter &amp; Replacer<\/strong> for overview &amp; tools.<\/li>\n<li>(Recommended) Install <strong>Phoenix Media Rename<\/strong> for robust database URL updates (see below).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20this%20plugin%20delete%20my%20images%3F\"><h3>Will this plugin delete my images?<\/h3><\/dt>\n<dd><p>Only if the WebP conversion <strong>succeeds<\/strong> and the WebP is <strong>smaller<\/strong>. Otherwise, the original stays. Always keep backups.<\/p><\/dd>\n<dt id=\"why%20are%20the%20%E2%80%9Cspace%20saved%E2%80%9D%20numbers%20sometimes%20larger%20than%20the%20single%20file%20size%3F\"><h3>Why are the \u201cspace saved\u201d numbers sometimes larger than the single file size?<\/h3><\/dt>\n<dd><p>WordPress creates multiple thumbnail sizes. Savings are calculated across <strong>the original + all thumbs<\/strong> vs. <strong>their WebP equivalents<\/strong>. Thumbnails can outweigh the original file, so total savings can exceed the original\u2019s size.<\/p><\/dd>\n<dt id=\"what%20if%20i%20uninstall%20the%20plugin%3F\"><h3>What if I uninstall the plugin?<\/h3><\/dt>\n<dd><p>Your site will continue serving the existing WebP files. Settings are removed; deleted originals are not restored.<\/p><\/dd>\n<dt id=\"does%20this%20compress%20or%20just%20change%20format%3F\"><h3>Does this compress or just change format?<\/h3><\/dt>\n<dd><p>It <strong>converts<\/strong> format using standard WebP quality defaults (approx. 80\u201385). No downscaling or custom per-image quality controls in this version.<\/p><\/dd>\n<dt id=\"can%20i%20change%20webp%20quality%3F\"><h3>Can I change WebP quality?<\/h3><\/dt>\n<dd><p>Not via UI. Advanced users can use the <code>webpicr_webp_quality<\/code> filter (0\u2013100). Default is 80.<\/p>\n\n<p>Example (custom plugin or theme <code>functions.php<\/code>):<\/p>\n\n<p>add_filter( 'webpicr_webp_quality', function( $quality, $source_path, $dest_path ) {\n    return 72; \/\/ lower = smaller files; higher = better quality\n}, 10, 3 );<\/p><\/dd>\n<dt id=\"avif%20or%20other%20formats%3F\"><h3>AVIF or other formats?<\/h3><\/dt>\n<dd><p>Currently WebP only. AVIF may be added when browser and server support are broadly stable.<\/p><\/dd>\n<dt id=\"animated%20gifs%3F\"><h3>Animated GIFs?<\/h3><\/dt>\n<dd><p>We auto-detect animated gifs and mark them as skipped, we do not convert them.<\/p><\/dd>\n<dt id=\"multisite%20support%3F\"><h3>Multisite support?<\/h3><\/dt>\n<dd><p>Yes. Network-activate, then run conversions per site. Always back up each site first.<\/p><\/dd>\n<dt id=\"i%20hit%20a%20timeout%2Ferror.\"><h3>I hit a timeout\/error.<\/h3><\/dt>\n<dd><p>Use bulk pause\/resume, try smaller batches, or raise PHP memory\/time limits. The plugin includes memory guards, but extreme libraries may need server tweaks.<\/p><\/dd>\n<dt id=\"does%20it%20support%20all%20browsers%3F\"><h3>Does it support all browsers?<\/h3><\/dt>\n<dd><p>Modern browsers do. Legacy\/very old browsers may not; if those matter, use a different approach.<\/p><\/dd>\n<dt id=\"does%20conversion%20update%20links%20in%20posts%3F\"><h3>Does conversion update links in posts?<\/h3><\/dt>\n<dd><p>Phoenix Media Rename does. This plugin does not rewrite post content. Phoenix covers the builders and themes. After Phoenix finishes, the optimized WebP replaces the converted file and thumbnails are not generated a second time.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.8<\/h4>\n\n<ul>\n<li>Bug fix: Conversion generates only the thumbnail sizes the site still has registered. Older sizes listed in the attachment metadata are deleted after Phoenix finishes. Empty name-scaled-WxH leftovers are deleted. Files that were never in the metadata are left on disk<\/li>\n<li>The saved-bytes total includes those deleted thumbnails minus the new WebP thumbnails. Files that were never in the metadata are not counted<\/li>\n<li>Bulk convert leaves out wide images whose original-file link is missing, so those JPEGs are not kept beside a new WebP set<\/li>\n<\/ul>\n\n<h4>1.1.7<\/h4>\n\n<ul>\n<li>Bug fix: Wide images whose metadata no longer points at the full original still use that sibling file, so Phoenix rewrites thumbnail URLs and thumbnails are not named name-scaled-WxH<\/li>\n<\/ul>\n\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Bug fix: Keep Phoenix Media Rename responsible for content URL updates<\/li>\n<li>Bug fix: After Phoenix renames and generates thumbnails once, swap in the optimized WebP without generating thumbnails again. The second regeneration was stacking another <code>-scaled<\/code> file and a second thumbnail set<\/li>\n<li>Bug fix: After Phoenix finishes, delete thumbnails still listed in the pre-convert metadata that Phoenix did not remove because those sizes are no longer registered<\/li>\n<li>Bug fix: Images over the 2560px big-image threshold no longer produce a <code>-scaled-scaled<\/code> file or leave the old <code>-scaled<\/code> JPEG behind. Phoenix was copying the full original because the library file was already named <code>-scaled<\/code>, and thumbnail generation never finished<\/li>\n<li>Bug fix: Big-image thumbnail URLs in post content are rewritten. Phoenix only searches posts for the attached filename, which is <code>name-scaled<\/code>, so URLs such as <code>name-640x800.jpg<\/code> were skipped<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Enhancement (Premium): Retry Failed &amp; Skipped \u2014 re-queue images locked out of bulk after disk-full or other failures<\/li>\n<li>Bug fix: Stop showing \u201call eligible converted\u201d when the queue is empty only because items are failed\/skipped<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Compatibility: Tested with WordPress 7.1<\/li>\n<li>Bug fix: Set image\/webp MIME type after Phoenix-assisted conversions (single, bulk, and auto-convert)<\/li>\n<li>Bug fix: Restore missing total-savings helper used by timeout status polling<\/li>\n<li>Bug fix: Align auto-convert success\/failure meta keys with the current <code>_webpicr_*<\/code> schema<\/li>\n<li>Bug fix: Store size meta on Phoenix auto-convert so Recalculate Savings stays accurate<\/li>\n<li>Bug fix: Use tracked conversion counters instead of stale legacy SQL counts<\/li>\n<li>Bug fix: Auto-convert in the block editor \u2014 defer until WP 7.1 media finalize so image blocks\/srcset use WebP URLs (not mixed PNG sizes)<\/li>\n<li>Security: Require upload\/edit caps on conversion status AJAX checks<\/li>\n<li>Enhancement: Documented <code>webpicr_webp_quality<\/code> filter for advanced quality control<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Bug fix: \"Fix WebP MIME Types\" Utility<\/li>\n<li>Enhancement: MIME type updated after metadata generation<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Enhancement: Animated GIFs - Better protected &amp; auto-skipped<\/li>\n<li>Enhancement: Oversized images - Detected &amp; auto-skipped<\/li>\n<li>Enhancement: Server limits - Respects ImageMagick &amp; WebP constraints<\/li>\n<li>Bug fix: Large images: 5-min timeout + execution limit<\/li>\n<li>Bug fix: Timeout handling - Client-side polling for accuracy<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Bug fix: improved handling of premium activation edge cases.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Major: Auto-Convert on Upload (Premium)<\/li>\n<li>Major: Optimization Overview (real-time stats)<\/li>\n<li>Enhancement: Phoenix Media Rename integration + auto-install\/activation help<\/li>\n<li>Enhancement: Memory management to prevent PHP exhaustion on large images<\/li>\n<li>Enhancement: Stats cleanup on media deletion<\/li>\n<li>Enhancement: Bulk conversion with pause\/resume and better progress<\/li>\n<li>Enhancement: Bulk select conversion via Media Library<\/li>\n<li>Enhancement: Caching for faster operations<\/li>\n<li>Enhancement: Better error handling and debug logging<\/li>\n<li>Enhancement: WPCS compliance and clearer UI messaging<\/li>\n<li>Bug fix: improved handling of animated GIFs in stats and conversion logic<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Minor fixes and performance improvements<\/li>\n<li>Enhanced compatibility testing<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: manual bulk conversion, automatic replacement when WebP is smaller, individual conversion links, JPEG\/PNG\/static GIF support, GD\/Imagick required.<\/li>\n<\/ul>","raw_excerpt":"Convert images to WebP and replace originals\u2014no duplicates. Save storage and speed up your site. Auto-convert on upload &amp; bulk tools (premium).","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/gax.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/235183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gax.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/gax.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/gax.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=235183"}],"author":[{"embeddable":true,"href":"https:\/\/gax.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/coreessentials"}],"wp:attachment":[{"href":"https:\/\/gax.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=235183"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/gax.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=235183"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/gax.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=235183"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/gax.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=235183"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/gax.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=235183"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/gax.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=235183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}