{"id":334483,"date":"2026-07-15T04:16:47","date_gmt":"2026-07-15T04:16:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/simply-webp\/"},"modified":"2026-08-23T01:21:51","modified_gmt":"2026-08-23T01:21:51","slug":"tanupom-in-place-converter-for-webp","status":"publish","type":"plugin","link":"https:\/\/nl.wordpress.org\/plugins\/tanupom-in-place-converter-for-webp\/","author":23525504,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.1","stable_tag":"0.3.1","tested":"7.1","requires":"5.5","requires_php":"7.4","requires_plugins":null,"header_name":"Tanupom In-Place Converter for WebP","header_author":"tanupom","header_description":"Convert new uploads and your existing media library to WebP in place, and update the references in your content. A simple, single-format approach to lighter images.","assets_banners_color":"ffcaad","last_updated":"2026-08-23 01:21:51","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/tanu-pom\/tanupom-in-place-converter-for-webp","header_author_uri":"https:\/\/github.com\/tanu-pom","rating":0,"author_block_rating":0,"active_installs":0,"downloads":151,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.0":{"tag":"0.3.0","author":"tanupom","date":"2026-07-15 04:39:25"},"0.3.1":{"tag":"0.3.1","author":"tanupom","date":"2026-08-23 01:21:51"}},"upgrade_notice":{"0.2.0":"<p>New uploads are now converted to WebP automatically. If you also intend to run the bulk converter for old files, back up your media library and database first \u2014 bulk conversion is in-place and irreversible.<\/p>","0.1.0":"<p>Initial release. Always back up your media library and database before running the bulk conversion \u2014 it is in-place and irreversible.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3608230,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3608230,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3608230,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3608230,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.0","0.3.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3608230,"resolution":"1","location":"assets","locale":"","width":1440,"height":1094},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3608230,"resolution":"2","location":"assets","locale":"","width":1440,"height":320}},"screenshots":{"1":"The In-Place WebP tools page (under the Tools menu): inventory scan, bulk conversion with live progress, and reference replacement.","2":"Conversion settings (WebP quality, lossless PNG, strip metadata)."}},"plugin_section":[],"plugin_tags":[4154,29161,12497,247,15376],"plugin_category":[54],"plugin_contributors":[271592],"plugin_business_model":[],"class_list":["post-334483","plugin","type-plugin","status-publish","hentry","plugin_tags-convert","plugin_tags-image-optimization","plugin_tags-imagick","plugin_tags-performance","plugin_tags-webp","plugin_category-security-and-spam-protection","plugin_contributors-tanupom","plugin_committers-tanupom"],"banners":{"banner":"https:\/\/ps.w.org\/tanupom-in-place-converter-for-webp\/assets\/banner-772x250.png?rev=3608230","banner_2x":"https:\/\/ps.w.org\/tanupom-in-place-converter-for-webp\/assets\/banner-1544x500.png?rev=3608230","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tanupom-in-place-converter-for-webp\/assets\/icon-128x128.png?rev=3608230","icon_2x":"https:\/\/ps.w.org\/tanupom-in-place-converter-for-webp\/assets\/icon-256x256.png?rev=3608230","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/tanupom-in-place-converter-for-webp\/assets\/screenshot-1.png?rev=3608230","caption":"The In-Place WebP tools page (under the Tools menu): inventory scan, bulk conversion with live progress, and reference replacement."},{"src":"https:\/\/ps.w.org\/tanupom-in-place-converter-for-webp\/assets\/screenshot-2.png?rev=3608230","caption":"Conversion settings (WebP quality, lossless PNG, strip metadata)."}],"raw_content":"<!--section=description-->\n<p>Most WebP plugins keep your original JPEG\/PNG files and serve WebP conditionally, which leaves you maintaining two copies of every image. <strong>Tanupom In-Place Converter for WebP<\/strong> takes the opposite, minimal approach: it replaces the originals with WebP <strong>in place<\/strong>, so your whole library ends up as a single set of WebP files. No rewrite rules, no <code>.htaccess<\/code> tricks, no duplicate storage.<\/p>\n\n<p>It uses your server's Imagick (ImageMagick) build to do the conversion, so heavy lifting stays on the server and the plugin itself stays small.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li><strong>Automatic conversion on upload.<\/strong> New uploads of JPEG, PNG, BMP, HEIC, and HEIF are converted to WebP at upload time via the <code>wp_handle_upload<\/code> filter, replacing the original in place. If your server cannot output WebP (or HEIC\/HEIF delegates are missing), the upload is passed through unchanged.<\/li>\n<li><strong>Inventory scan (non-destructive).<\/strong> Before touching anything, it reports where image URLs are used across post content, post meta, and options \u2014 so you know what a conversion will affect.<\/li>\n<li><strong>Bulk WebP conversion.<\/strong> Converts every existing JPEG and PNG attachment \u2014 the original plus all of its generated sub-sizes \u2014 to WebP, then deletes the old files. Runs in small batches via AJAX so it survives shared-hosting execution-time limits, and shows live progress.<\/li>\n<li><strong>Reference replacement.<\/strong> After conversion, it rewrites the old image URLs to the new <code>.webp<\/code> URLs in your post content and options. Serialized options (widgets, theme mods) are handled with a serialize-safe replacement so the data does not break.<\/li>\n<\/ul>\n\n<h4>Conversion settings<\/h4>\n\n<ul>\n<li>JPEG is encoded as lossy WebP at a configurable quality (default 80).<\/li>\n<li>PNG is encoded as <strong>lossless<\/strong> WebP with alpha (transparency) preserved, to avoid fringing on logos and text.<\/li>\n<li>EXIF orientation is baked into the pixels before conversion (no more sideways phone photos).<\/li>\n<li>EXIF metadata is stripped (smaller files, and no leaking GPS location data).<\/li>\n<\/ul>\n\n<p>All three of these are adjustable from the plugin's settings.<\/p>\n\n<h4>WordPress 7.1 and client-side media processing<\/h4>\n\n<p>WordPress 7.1 moves image resizing and sub-size generation into the browser. This plugin works with it: the uploaded original still passes through the <code>wp_handle_upload<\/code> filter and is converted to WebP as before, and the browser then generates every sub-size in that same WebP format.<\/p>\n\n<p>This also unlocks HEIC\/HEIF on servers whose Imagick build has no HEIC delegate. On 7.1 the browser decodes the HEIC itself, using the operating system's decoder, so the image reaches the server in a format Imagick can read. An iPhone photo then ends up as WebP rather than JPEG. Browser-side decoding depends on the platform doing the upload: Windows and macOS can do it, Linux currently cannot.<\/p>\n\n<p>WordPress itself does not convert formats. Without this plugin a JPEG upload stays a JPEG, and a HEIC upload becomes a JPEG, on 7.1 just as on earlier versions.<\/p>\n\n<h4>Important: this is in-place and irreversible<\/h4>\n\n<p>This plugin <strong>replaces and deletes<\/strong> your original images, both at upload time and during bulk conversion. There is no automatic rollback. <strong>Back up your media library (and database) before running the bulk conversion.<\/strong><\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>The Imagick PHP extension, built with WebP support. The plugin detects this and disables conversion (with a notice) if your server can't output WebP.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>tanupom-in-place-converter-for-webp<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the Plugins screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>Tools \u2192 In-Place WebP<\/strong>.<\/li>\n<li><strong>Back up your media library and database first.<\/strong><\/li>\n<li>(Optional) Run <strong>Inventory<\/strong> to see where image URLs are referenced.<\/li>\n<li>Click <strong>Start bulk conversion<\/strong> and let it run to completion.<\/li>\n<li>Click <strong>Run reference replacement<\/strong> to update your content to the new WebP URLs.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20keep%20my%20original%20jpeg%2Fpng%20files%3F\"><h3>Does it keep my original JPEG\/PNG files?<\/h3><\/dt>\n<dd><p>No. This plugin is deliberately \"in place\": it converts the originals to WebP and deletes the old files. This keeps your library to a single set of files. Make a backup before running it.<\/p><\/dd>\n<dt id=\"can%20i%20undo%20the%20conversion%3F\"><h3>Can I undo the conversion?<\/h3><\/dt>\n<dd><p>Not from within the plugin. Restore from your backup if you need the originals back. This is why a backup is required before conversion.<\/p><\/dd>\n<dt id=\"my%20server%20says%20webp%20conversion%20is%20unavailable.%20why%3F\"><h3>My server says WebP conversion is unavailable. Why?<\/h3><\/dt>\n<dd><p>Your Imagick build can't output WebP. Ask your host to enable WebP support in ImageMagick\/Imagick, or use a server that provides it.<\/p><\/dd>\n<dt id=\"does%20it%20convert%20images%20automatically%20when%20i%20upload%20them%3F\"><h3>Does it convert images automatically when I upload them?<\/h3><\/dt>\n<dd><p>Yes, since 0.2.0. New uploads of JPEG, PNG, BMP, HEIC, and HEIF go through the <code>wp_handle_upload<\/code> filter and are written to disk as WebP, replacing the original. The same conversion settings (quality, lossless PNG, strip metadata) are used.<\/p>\n\n<p>If your server's Imagick build cannot output WebP, or HEIC\/HEIF delegates are missing, the upload is passed through unchanged so nothing breaks.<\/p><\/dd>\n<dt id=\"will%20it%20break%20image%20urls%20in%20my%20posts%3F\"><h3>Will it break image URLs in my posts?<\/h3><\/dt>\n<dd><p>After conversion, run <strong>Run reference replacement<\/strong>. It rewrites old image URLs to the new <code>.webp<\/code> URLs in post content and options, including serialized options, using a serialize-safe replacement.<\/p><\/dd>\n<dt id=\"what%20about%20heic%2C%20gif%2C%20bmp%20or%20already-webp%20files%3F\"><h3>What about HEIC, GIF, BMP or already-WebP files?<\/h3><\/dt>\n<dd><p>The two conversion paths cover different formats:<\/p>\n\n<ul>\n<li><strong>Automatic conversion on upload<\/strong> accepts JPEG, PNG, BMP, HEIC, and HEIF. BMP\/HEIC\/HEIF actually convert only when your server's Imagick has the corresponding delegate; otherwise the upload is passed through unchanged. On WordPress 7.1 this no longer applies to HEIC\/HEIF: the browser decodes them before they reach the server, so they convert even without a HEIC delegate.<\/li>\n<li><strong>Bulk conversion of the existing library<\/strong> is limited to JPEG and PNG.<\/li>\n<\/ul>\n\n<p>GIF (typically animated) and existing WebP files are always left untouched. Other MIME types are ignored.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Verified against WordPress 7.1 and its client-side media processing. No code changes were required: uploads still pass through the <code>wp_handle_upload<\/code> filter, and sub-sizes generated in the browser inherit the converted WebP format.<\/li>\n<li>Documented the 7.1 behaviour, including HEIC\/HEIF uploads now converting on servers whose Imagick has no HEIC delegate.<\/li>\n<li>Removed the bundled Japanese translation files. Translations are delivered as language packs from translate.wordpress.org. The bundled copies were never loaded, because the plugin declares no <code>Domain Path<\/code> and no longer calls <code>load_plugin_textdomain()<\/code>.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Renamed the plugin to \"Tanupom In-Place Converter for WebP\". Internal prefixes, option names, and the <code>tanupom_ipc_replace_post_types<\/code> filter were renamed to match.<\/li>\n<li>Translations now load automatically; the explicit <code>load_plugin_textdomain()<\/code> call was removed.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added automatic WebP conversion of new uploads (JPEG, PNG, BMP, HEIC, HEIF) via the <code>wp_handle_upload<\/code> filter, with graceful fallback when the server cannot output WebP.<\/li>\n<li>Added a \"Reference replacement\" settings section: select additional public custom post types whose <code>post_content<\/code> should be scanned during URL replacement.<\/li>\n<li>Added the <code>tanupom_ipc_replace_post_types<\/code> filter so developers can override the scanned post types programmatically.<\/li>\n<li>Added Japanese translation (.po \/ .mo).<\/li>\n<li>Internal cleanup: improved code documentation and consistency.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Inventory scan of image URL usage across content, meta, and options.<\/li>\n<li>Bulk in-place WebP conversion of existing JPEG\/PNG attachments and their sub-sizes.<\/li>\n<li>Serialize-safe reference replacement for post content and options.<\/li>\n<li>Adjustable conversion settings (WebP quality, lossless PNG, strip metadata).<\/li>\n<\/ul>","raw_excerpt":"Convert new uploads and your existing media library to WebP in place, and update the references in your content automatically.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/334483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=334483"}],"author":[{"embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tanupom"}],"wp:attachment":[{"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=334483"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=334483"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=334483"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=334483"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=334483"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=334483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}