{"id":349789,"date":"2026-08-27T17:48:18","date_gmt":"2026-08-27T17:48:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pdev-image-optimizer\/"},"modified":"2026-09-10T19:44:03","modified_gmt":"2026-09-10T19:44:03","slug":"pdev-image-optimizer","status":"publish","type":"plugin","link":"https:\/\/bal.wordpress.org\/plugins\/pdev-image-optimizer\/","author":20866267,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.0","stable_tag":"1.4.0","tested":"7.1","requires":"6.4","requires_php":"8.0","requires_plugins":null,"header_name":"PDEV Image Optimizer","header_author":"Grzegorz Puszka","header_description":"Converts WordPress media images to WebP or AVIF and serves them with Apache or Nginx.","assets_banners_color":"2b3a48","last_updated":"2026-09-10 19:44:03","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/ko-fi.com\/puszkadev","header_plugin_uri":"","header_author_uri":"https:\/\/puszka.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":264,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.1":{"tag":"1.2.1","author":"grzegorzpuszka","date":"2026-08-27 17:47:53","revision":3669331},"1.3.0":{"tag":"1.3.0","author":"grzegorzpuszka","date":"2026-08-30 10:09:51","revision":3672329},"1.3.1":{"tag":"1.3.1","author":"grzegorzpuszka","date":"2026-08-30 17:13:40","revision":3672896},"1.3.2":{"tag":"1.3.2","author":"grzegorzpuszka","date":"2026-08-31 08:44:50","revision":3673681},"1.4.0":{"tag":"1.4.0","author":"grzegorzpuszka","date":"2026-09-10 19:44:03","revision":3690418}},"upgrade_notice":{"1.4.0":"<p>Adds WP-CLI support (<code>wp pdevio<\/code>), an Optimization speed setting for faster bulk conversion, &quot;Force optimize all&quot; and &quot;Stop&quot; buttons on the Media Library screen, and a clearer main screen. The internal table that tracked generated files is removed and dropped automatically; generated files are now recognised by name and location.<\/p>","1.3.2":"<p>Fixes an HTTP 409 failure during AVIF bulk optimization, a &quot;cache resources exhausted&quot; failure on large photos, and a &quot;reserved optimized-image name&quot; failure after moving or migrating a site. A competing rewrite rule from another plugin now warns instead of disabling PDEV delivery.<\/p>","1.3.1":"<p>Fixes a fatal error in 1.3.0 caused by missing files in the release package. Update as soon as possible if you installed or updated to 1.3.0.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3669320,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3669320,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3672896,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3669320,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3669320,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.1","1.3.0","1.3.1","1.3.2","1.4.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3669320,"resolution":"1","location":"assets","locale":"","width":1394,"height":781},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3669320,"resolution":"2","location":"assets","locale":"","width":1394,"height":781},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3669320,"resolution":"3","location":"assets","locale":"","width":1394,"height":781},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3669320,"resolution":"4","location":"assets","locale":"","width":1394,"height":781},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3669320,"resolution":"5","location":"assets","locale":"","width":1394,"height":781}},"screenshots":{"1":"WebP and AVIF optimization settings - choose output format, source formats, conversion quality, automatic optimization, and optional theme image processing.","2":"Bulk Media Library optimization - convert existing WordPress images and thumbnails with restartable progress and visible error reporting.","3":"Thumbnail tools - find missing or obsolete WordPress image sizes and regenerate thumbnails when needed.","4":"Cloudflare integration - configure optional cache compatibility, test delivery, and purge cache.","5":"System status and diagnostics - inspect WordPress, PHP, server, Imagick, GD, WebP\/AVIF support, image delivery, and recent plugin errors."}},"plugin_section":[],"plugin_tags":[194661,29152,29161,29158,15376],"plugin_category":[50,52],"plugin_contributors":[277940],"plugin_business_model":[],"class_list":["post-349789","plugin","type-plugin","status-publish","hentry","plugin_tags-avif","plugin_tags-image-compression","plugin_tags-image-optimization","plugin_tags-image-optimizer","plugin_tags-webp","plugin_category-media","plugin_category-performance","plugin_contributors-grzegorzpuszka","plugin_committers-grzegorzpuszka"],"banners":{"banner":"https:\/\/ps.w.org\/pdev-image-optimizer\/assets\/banner-772x250.png?rev=3669320","banner_2x":"https:\/\/ps.w.org\/pdev-image-optimizer\/assets\/banner-1544x500.png?rev=3669320","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/pdev-image-optimizer\/assets\/icon.svg?rev=3672896","icon":"https:\/\/ps.w.org\/pdev-image-optimizer\/assets\/icon.svg?rev=3672896","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/pdev-image-optimizer\/assets\/screenshot-1.png?rev=3669320","caption":"WebP and AVIF optimization settings - choose output format, source formats, conversion quality, automatic optimization, and optional theme image processing."},{"src":"https:\/\/ps.w.org\/pdev-image-optimizer\/assets\/screenshot-2.png?rev=3669320","caption":"Bulk Media Library optimization - convert existing WordPress images and thumbnails with restartable progress and visible error reporting."},{"src":"https:\/\/ps.w.org\/pdev-image-optimizer\/assets\/screenshot-3.png?rev=3669320","caption":"Thumbnail tools - find missing or obsolete WordPress image sizes and regenerate thumbnails when needed."},{"src":"https:\/\/ps.w.org\/pdev-image-optimizer\/assets\/screenshot-4.png?rev=3669320","caption":"Cloudflare integration - configure optional cache compatibility, test delivery, and purge cache."},{"src":"https:\/\/ps.w.org\/pdev-image-optimizer\/assets\/screenshot-5.png?rev=3669320","caption":"System status and diagnostics - inspect WordPress, PHP, server, Imagick, GD, WebP\/AVIF support, image delivery, and recent plugin errors."}],"raw_content":"<!--section=description-->\n<p>PDEV Image Optimizer helps reduce image size and improve WordPress page load performance by converting JPEG, PNG, GIF, and WebP images locally to modern WebP or AVIF formats.<\/p>\n\n<p>Optimize new uploads automatically or convert your existing Media Library in restartable batches. Smaller WebP and AVIF files can reduce image transfer size and improve page load performance, especially on image-heavy WordPress sites.<\/p>\n\n<p>Images never leave your server. There are no image limits, no external optimization service, no account, no subscription, and no PRO version.<\/p>\n\n<p>Original images remain untouched. WordPress continues using the existing image URLs while supported browsers receive optimized WebP or AVIF files automatically.<\/p>\n\n<h4>Why PDEV Image Optimizer?<\/h4>\n\n<ul>\n<li><strong>WebP and AVIF support<\/strong> using Imagick or GD.<\/li>\n<li><strong>Faster image delivery<\/strong> through smaller modern image formats.<\/li>\n<li><strong>100% local image optimization<\/strong> - images are not uploaded to an external service.<\/li>\n<li><strong>Unlimited images<\/strong> - no monthly quota or conversion credits.<\/li>\n<li><strong>No account or API key required<\/strong> for image conversion.<\/li>\n<li><strong>No subscription or paid plan.<\/strong><\/li>\n<li><strong>No PRO version or feature paywall.<\/strong><\/li>\n<li><strong>Original images are never replaced or deleted during optimization.<\/strong><\/li>\n<li><strong>Automatic optimization<\/strong> of new uploads and WordPress thumbnails.<\/li>\n<li><strong>Bulk optimization<\/strong> for an existing Media Library with restartable progress.<\/li>\n<li><strong>Apache, LiteSpeed, and Nginx support.<\/strong><\/li>\n<li><strong>Optional Cloudflare integration.<\/strong><\/li>\n<\/ul>\n\n<p>PDEV Image Optimizer was created as a lightweight alternative to image optimization plugins that depend on cloud dashboards, subscriptions, usage limits, or paid feature unlocks.<\/p>\n\n<p>The goal is simple: generate modern image formats locally, reduce unnecessary image transfer, serve optimized images correctly, and provide enough diagnostics to understand when server configuration prevents optimization or delivery from working.<\/p>\n\n<h4>What does the plugin do?<\/h4>\n\n<p>PDEV Image Optimizer creates WebP or AVIF copies of images from the WordPress Media Library.<\/p>\n\n<p>It can:<\/p>\n\n<ul>\n<li>Automatically optimize newly uploaded images.<\/li>\n<li>Convert an existing Media Library in small, restartable batches.<\/li>\n<li>Process WordPress thumbnail sizes.<\/li>\n<li>Optionally optimize supported images from the active theme.<\/li>\n<li>Scan for missing or obsolete thumbnails.<\/li>\n<li>Regenerate missing or all registered thumbnail sizes.<\/li>\n<li>Preview and clean obsolete PDEV-generated optimized files.<\/li>\n<li>Show storage savings and estimated transfer savings.<\/li>\n<li>Detect conflicting image plugins and rewrite rules.<\/li>\n<li>Test whether optimized images are actually delivered to visitors.<\/li>\n<li>Generate ready-to-copy Nginx configuration.<\/li>\n<li>Integrate optionally with Cloudflare.<\/li>\n<li>Provide a privacy-safe system report for troubleshooting.<\/li>\n<li>Run bulk optimization, cleanup, the delivery test, and settings changes from WP-CLI with <code>wp pdevio<\/code>.<\/li>\n<\/ul>\n\n<p>You only need to choose:<\/p>\n\n<ul>\n<li>WebP or AVIF as the output format.<\/li>\n<li>Which source formats should be converted: JPEG, PNG, GIF, or WebP where applicable.<\/li>\n<li>Conversion quality.<\/li>\n<li>Whether new uploads should be optimized automatically.<\/li>\n<li>Whether supported images from the active theme should also be processed.<\/li>\n<\/ul>\n\n<h4>Main features<\/h4>\n\n<ul>\n<li>Local WebP and AVIF image conversion with Imagick or GD.<\/li>\n<li>Automatic optimization of new WordPress uploads and generated thumbnails.<\/li>\n<li>Restartable bulk optimization of the existing Media Library.<\/li>\n<li>Optional optimization of supported images from the active theme.<\/li>\n<li>Thumbnail scan, missing-thumbnail repair, full regeneration, and obsolete-file cleanup.<\/li>\n<li>Cleanup that previews count and size before deleting only files whose name and location mark them as PDEV-generated (<code>image.jpg.pio.webp<\/code>).<\/li>\n<li>Cleanup modes for obsolete generated files or all PDEV-generated optimized files.<\/li>\n<li>Adjustable optimization speed, from a conservative shared-hosting profile to a fast profile for a VPS or dedicated server.<\/li>\n<li>Per-image safety limits that skip unsafe files without stopping the complete optimization job.<\/li>\n<li>WP-CLI command <code>wp pdevio<\/code> for optimization, targeted conversion, cleanup, status, the live delivery test, and format or speed changes.<\/li>\n<li>Storage usage and estimated transfer savings statistics.<\/li>\n<li>Apache and LiteSpeed delivery through managed <code>.htaccess<\/code> rewrite rules.<\/li>\n<li>Generated Nginx configuration for servers where WordPress cannot modify the web-server configuration directly.<\/li>\n<li>General image-plugin and rewrite-rule conflict detection.<\/li>\n<li>Optional Cloudflare Free-compatible cache integration.<\/li>\n<li>Live HTTP delivery test for WebP and AVIF responses.<\/li>\n<li>Detailed privacy-safe system report with copy and JSON export.<\/li>\n<li>Tested encoder support, server requirements, delivery status, and conflict checks, summarised on the main screen and detailed under System status.<\/li>\n<li>Actionable recovery instructions when a configuration check fails.<\/li>\n<li>Error history from the last 24 hours, limited to 50 entries.<\/li>\n<li>No external conversion service, telemetry, tracking, subscription, paywall, or PRO version.<\/li>\n<\/ul>\n\n<h4>How does image optimization work?<\/h4>\n\n<ol>\n<li>WordPress stores an image such as <code>photo.jpg<\/code> and usually creates thumbnail files such as <code>photo-768x512.jpg<\/code>.<\/li>\n<li>PDEV Image Optimizer uses Imagick, or GD as a fallback, to create an optimized file next to each source file.<\/li>\n<li>The optimized file is stored as a separate WebP or AVIF sidecar, for example <code>photo.jpg.webp<\/code>, <code>photo.jpg.avif<\/code>, or <code>photo-768x512.jpg.webp<\/code>.<\/li>\n<li>The original image is not deleted, renamed, or replaced.<\/li>\n<li>WordPress content continues using the existing URL ending in <code>.jpg<\/code>, <code>.png<\/code>, <code>.gif<\/code>, or <code>.webp<\/code>.<\/li>\n<li>When a browser requests the original URL, the web server checks the browser's <code>Accept<\/code> header.<\/li>\n<li>If the browser supports the selected modern format and the optimized sidecar exists, the server returns WebP or AVIF instead.<\/li>\n<li>Browsers without support receive the untouched original image.<\/li>\n<\/ol>\n\n<p>This approach keeps existing WordPress URLs, post content, image references, and metadata unchanged.<\/p>\n\n<h4>Image delivery on Apache and LiteSpeed<\/h4>\n\n<p>On Apache and compatible LiteSpeed servers, PDEV Image Optimizer adds a clearly marked <code>PDEV Image Optimizer<\/code> block to <code>.htaccess<\/code> inside the uploads directory.<\/p>\n\n<p>If theme image optimization is enabled, the plugin also manages a marked block inside the active theme directory.<\/p>\n\n<p>The rules:<\/p>\n\n<ul>\n<li>Detect WebP or AVIF browser support.<\/li>\n<li>Serve the optimized sidecar when available.<\/li>\n<li>Set the correct MIME type.<\/li>\n<li>Add <code>Vary: Accept<\/code> so caches know that one URL can return different image formats.<\/li>\n<\/ul>\n\n<p>The uploads directory and its <code>.htaccess<\/code> file must be writable when the plugin needs to add or update these rules.<\/p>\n\n<h4>Image delivery on Nginx<\/h4>\n\n<p>WordPress cannot safely edit Nginx server configuration.<\/p>\n\n<p>PDEV Image Optimizer therefore generates ready-to-copy <code>map<\/code> and <code>location<\/code> blocks in <strong>System status<\/strong>.<\/p>\n\n<p>A server administrator must:<\/p>\n\n<ol>\n<li>Add the generated <code>map<\/code> block to the appropriate <code>http<\/code> context.<\/li>\n<li>Add the generated <code>location<\/code> block to the correct <code>server<\/code> context.<\/li>\n<li>Test the Nginx configuration.<\/li>\n<li>Reload Nginx.<\/li>\n<\/ol>\n\n<p>Conversion and delivery are separate steps. Successfully generated WebP or AVIF files do not guarantee that visitors receive them if the required server rules are missing.<\/p>\n\n<h4>Live image delivery test<\/h4>\n\n<p>The Settings overview includes an optional live delivery test.<\/p>\n\n<p>When an administrator clicks <strong>Test image delivery<\/strong>, PDEV Image Optimizer:<\/p>\n\n<ol>\n<li>Creates a temporary one-pixel source image and optimized sidecar inside uploads.<\/li>\n<li>Requests the original source URL with the appropriate <code>Accept<\/code> header.<\/li>\n<li>Checks the returned HTTP status and <code>Content-Type<\/code>.<\/li>\n<li>Immediately removes both temporary test files.<\/li>\n<\/ol>\n\n<p>A successful result confirms that the server is actually returning <code>image\/webp<\/code> or <code>image\/avif<\/code>.<\/p>\n\n<p>The test runs only when an administrator starts it manually.<\/p>\n\n<h4>Server requirements<\/h4>\n\n<p>PDEV Image Optimizer needs both:<\/p>\n\n<ul>\n<li>A working PHP image conversion library.<\/li>\n<li>Correct web-server configuration for automatic delivery.<\/li>\n<\/ul>\n\n<p>Installing the plugin cannot add missing PHP extensions or override restrictions imposed by your hosting provider.<\/p>\n\n<p>Required for image conversion:<\/p>\n\n<ul>\n<li>WordPress 6.4 or newer.<\/li>\n<li>PHP 8.0 or newer.<\/li>\n<li>Imagick or GD installed and enabled in PHP.<\/li>\n<li>The selected image library must support the selected output format.<\/li>\n<li>WebP support does not automatically mean AVIF support.<\/li>\n<li>The WordPress uploads directory must be writable by PHP.<\/li>\n<li>The server must provide enough memory and execution time for the images being processed.<\/li>\n<\/ul>\n\n<p>Required for automatic delivery on Apache or LiteSpeed:<\/p>\n\n<ul>\n<li>Apache-compatible rewrite support (<code>mod_rewrite<\/code>).<\/li>\n<li>MIME support (<code>mod_mime<\/code>).<\/li>\n<li>Header support (<code>mod_headers<\/code>).<\/li>\n<li><code>.htaccess<\/code> files must be allowed and processed for the uploads directory.<\/li>\n<li>On Apache, this normally requires an appropriate <code>AllowOverride<\/code> setting.<\/li>\n<li>The uploads directory or its existing <code>.htaccess<\/code> file must be writable by PHP when the plugin manages delivery rules.<\/li>\n<li>When theme image optimization is enabled, the active theme directory must meet the same requirements.<\/li>\n<\/ul>\n\n<p>Required for delivery on Nginx:<\/p>\n\n<ul>\n<li>Access to the Nginx website configuration.<\/li>\n<li>Permission to add the generated <code>map<\/code> block to the <code>http<\/code> context.<\/li>\n<li>Permission to add the generated <code>location<\/code> block to the correct <code>server<\/code> context.<\/li>\n<li>Permission to test and reload Nginx after changing the configuration.<\/li>\n<\/ul>\n\n<p>If you use managed hosting and do not have access to these settings, ask your hosting provider:<\/p>\n\n<ul>\n<li>Whether Imagick or GD supports WebP or AVIF.<\/li>\n<li>Whether the required Apache modules are enabled.<\/li>\n<li>Whether <code>.htaccess<\/code> overrides are allowed.<\/li>\n<\/ul>\n\n<p>PDEV Image Optimizer cannot bypass server restrictions imposed by the hosting provider.<\/p>\n\n<h4>Hosting resource protection and image limits<\/h4>\n\n<p>Image conversion can require considerably more memory than the compressed source file size suggests.<\/p>\n\n<p>To reduce timeouts, HTTP 503 responses, PHP crashes, and shared-hosting resource-limit errors, PDEV Image Optimizer applies conservative limits before and during conversion.<\/p>\n\n<p>Default limits for both Imagick and GD:<\/p>\n\n<ul>\n<li>Maximum source file size: <strong>64 MB<\/strong>.<\/li>\n<li>Maximum width or height: <strong>16,384 pixels<\/strong>.<\/li>\n<li>Maximum total image size: <strong>25 megapixels<\/strong>.<\/li>\n<\/ul>\n\n<p>Additional GD protection:<\/p>\n\n<ul>\n<li>GD conversion uses a conservative <strong>256 MB per-request memory budget<\/strong>.<\/li>\n<li>The estimate includes decoded image pixels, the source file, current PHP memory usage, and a reserved safety margin.<\/li>\n<li>Your hosting provider or PHP configuration may impose a lower effective limit.<\/li>\n<\/ul>\n\n<p>Additional Imagick protection:<\/p>\n\n<ul>\n<li>Memory limit: <strong>128 MB<\/strong>.<\/li>\n<li>Memory-map limit: <strong>256 MB<\/strong>.<\/li>\n<li>Temporary disk limit: <strong>512 MB<\/strong>.<\/li>\n<li>Processing time limit: <strong>30 seconds<\/strong>.<\/li>\n<li>Thread limit: <strong>1 thread<\/strong>.<\/li>\n<\/ul>\n\n<p>These values are safety ceilings, not resource reservations.<\/p>\n\n<p>The server or hosting account may enforce lower limits. Increasing a PHP or plugin limit cannot bypass CPU, RAM, process, disk, or I\/O restrictions imposed by the hosting provider.<\/p>\n\n<h4>Safe and restartable bulk optimization<\/h4>\n\n<p>Media Library optimization starts with one WordPress attachment per request and may use two only after several fast batches.<\/p>\n\n<p>Slow or memory-heavy batches automatically return to one attachment.<\/p>\n\n<p>Short pauses are added between requests. Temporary HTTP 409, 429, 502, 503, and 504 responses use an increasing retry delay.<\/p>\n\n<p>Progress is saved after every attachment, so an interrupted optimization job can continue without rescanning the whole Media Library from the beginning.<\/p>\n\n<p>One WordPress attachment can contain:<\/p>\n\n<ul>\n<li>The original image.<\/li>\n<li>Multiple registered thumbnail sizes.<\/li>\n<\/ul>\n\n<p>Processing one attachment can therefore still convert several physical image files.<\/p>\n\n<p>Thumbnail regeneration always handles one attachment per request and pauses briefly before requesting the next one.<\/p>\n\n<p>Thumbnail scanning is lighter and uses batches of up to five attachments.<\/p>\n\n<p>If an image exceeds a safety limit, it is skipped and shown as a failed item with the reason in the conversion log and error list. Optimization continues with the next attachment.<\/p>\n\n<p>The original image is never removed or modified.<\/p>\n\n<p>Developers can adjust the safeguards with WordPress filters, but changes should reflect the actual limits of the hosting account.<\/p>\n\n<h3>External services<\/h3>\n\n<p>PDEV Image Optimizer does not use an external service for image conversion.<\/p>\n\n<p>Cloudflare integration is optional.<\/p>\n\n<p>When configured, PDEV Image Optimizer sends the configured Zone ID and API token to Cloudflare to manage its own Cache Rule and purge the selected zone.<\/p>\n\n<p>The compatibility test requests one public Media Library image using different <code>Accept<\/code> headers and stores only technical response information.<\/p>\n\n<p>Images are not uploaded to Cloudflare by this plugin.<\/p>\n\n<p>Cloudflare information: <a href=\"https:\/\/www.cloudflare.com\/website-terms\/\">Terms<\/a> and <a href=\"https:\/\/www.cloudflare.com\/privacypolicy\/\">Privacy Policy<\/a>.<\/p>\n\n<h3>Support<\/h3>\n\n<p>Support is provided <strong>only through the official WordPress.org support forum for PDEV Image Optimizer<\/strong>:<\/p>\n\n<p><a href=\"https:\/\/wordpress.org\/support\/plugin\/pdev-image-optimizer\/\">PDEV Image Optimizer support forum<\/a><\/p>\n\n<p>Support is not provided by email, through the author's website, Ko-fi, social media, private messages, or any other channel.<\/p>\n\n<p>Please use the WordPress.org forum so questions and solutions remain public and useful to other users.<\/p>\n\n<p>Before opening a support topic:<\/p>\n\n<ol>\n<li>Open <strong>Tools &gt; Image Optimizer &gt; System status<\/strong>.<\/li>\n<li>Review the detected configuration issues.<\/li>\n<li>Copy the system report or export its JSON file.<\/li>\n<li>Include the relevant diagnostic information in your forum post.<\/li>\n<\/ol>\n\n<p>The support report is designed to omit URLs, credentials, personal data, full server paths, and media content.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate <strong>PDEV Image Optimizer<\/strong>.<\/li>\n<li>Open <strong>Tools &gt; Image Optimizer &gt; Settings<\/strong>.<\/li>\n<li>Review the Overview section and follow the instruction next to every yellow or red check.<\/li>\n<li>Choose WebP or AVIF as the output format.<\/li>\n<li>Select the source image formats you want to convert.<\/li>\n<li>Choose conversion quality.<\/li>\n<li>Configure automatic optimization and optional theme image optimization.<\/li>\n<li>Click <strong>Save settings<\/strong>.<\/li>\n<li>On Nginx, open <strong>System status &gt; Nginx configuration<\/strong>, copy the generated configuration blocks to your server configuration, test it, and reload Nginx.<\/li>\n<li>Click <strong>Test image delivery<\/strong> in Overview.<\/li>\n<li>Confirm that the response is <code>image\/webp<\/code> or <code>image\/avif<\/code>.<\/li>\n<li>Open <strong>Media library<\/strong> and start optimization for existing images.<\/li>\n<\/ol>\n\n<p>Do not enable overlapping WebP or AVIF delivery rewrite rules in multiple image optimization plugins.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20pdev%20image%20optimizer%20free%3F\"><h3>Is PDEV Image Optimizer free?<\/h3><\/dt>\n<dd><p>Yes.<\/p>\n\n<p>Every feature is available for free. There is no PRO version, paid feature unlock, image quota, subscription, or limited free plan.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20upload%20my%20images%20to%20an%20external%20service%3F\"><h3>Does the plugin upload my images to an external service?<\/h3><\/dt>\n<dd><p>No.<\/p>\n\n<p>Images are converted locally on your WordPress server using Imagick or GD.<\/p>\n\n<p>PDEV Image Optimizer has no image optimization API, cloud conversion service, telemetry endpoint, or analytics endpoint.<\/p>\n\n<p>Cloudflare is contacted only when an administrator explicitly configures the optional Cloudflare integration or runs its compatibility test.<\/p><\/dd>\n<dt id=\"are%20original%20images%20deleted%20or%20replaced%3F\"><h3>Are original images deleted or replaced?<\/h3><\/dt>\n<dd><p>No.<\/p>\n\n<p>Original files remain untouched.<\/p>\n\n<p>PDEV Image Optimizer creates a separate optimized sidecar next to each converted source image. WordPress continues using the original image URL.<\/p><\/dd>\n<dt id=\"does%20it%20optimize%20existing%20wordpress%20images%3F\"><h3>Does it optimize existing WordPress images?<\/h3><\/dt>\n<dd><p>Yes.<\/p>\n\n<p>The <strong>Media library<\/strong> optimization tool processes existing image attachments together with their registered WordPress thumbnail sizes.<\/p>\n\n<p>Work is divided into small restartable requests.<\/p>\n\n<p>A failed, oversized, or resource-intensive image is logged and skipped without stopping the remaining optimization job.<\/p><\/dd>\n<dt id=\"does%20it%20optimize%20new%20uploads%20automatically%3F\"><h3>Does it optimize new uploads automatically?<\/h3><\/dt>\n<dd><p>Yes.<\/p>\n\n<p>Automatic optimization can be enabled for newly uploaded images and the WordPress thumbnails generated from them.<\/p><\/dd>\n<dt id=\"does%20it%20support%20webp%3F\"><h3>Does it support WebP?<\/h3><\/dt>\n<dd><p>Yes.<\/p>\n\n<p>WebP can be generated when the installed Imagick or GD library supports WebP encoding.<\/p><\/dd>\n<dt id=\"does%20it%20support%20avif%3F\"><h3>Does it support AVIF?<\/h3><\/dt>\n<dd><p>Yes, when the installed Imagick or GD build supports AVIF encoding.<\/p>\n\n<p>Many servers support WebP but were compiled without AVIF support.<\/p>\n\n<p>PDEV Image Optimizer cannot add AVIF support to PHP itself. If AVIF is unavailable, the PHP image library installed by your hosting provider must support it.<\/p><\/dd>\n<dt id=\"why%20do%20i%20see%20webp%20or%20avif%20files%20on%20disk%20but%20my%20website%20still%20sends%20jpeg%20or%20png%3F\"><h3>Why do I see WebP or AVIF files on disk but my website still sends JPEG or PNG?<\/h3><\/dt>\n<dd><p>Image conversion and image delivery are separate operations.<\/p>\n\n<p>If optimized files exist but visitors still receive JPEG or PNG, conversion is working but the required web-server delivery rules are not.<\/p>\n\n<p>On Apache or LiteSpeed, check:<\/p>\n\n<ul>\n<li><code>.htaccess<\/code>.<\/li>\n<li><code>mod_rewrite<\/code>.<\/li>\n<li><code>mod_mime<\/code>.<\/li>\n<li><code>mod_headers<\/code>.<\/li>\n<li><code>AllowOverride<\/code>.<\/li>\n<\/ul>\n\n<p>On Nginx, install the generated configuration and reload the server.<\/p>\n\n<p>Also clear page, server, CDN, and browser caches before testing again.<\/p><\/dd>\n<dt id=\"which%20image%20library%20is%20used%3F\"><h3>Which image library is used?<\/h3><\/dt>\n<dd><p>Imagick is preferred when it supports the selected output format.<\/p>\n\n<p>GD is used as a fallback.<\/p>\n\n<p>The detailed <strong>System status<\/strong> report shows both libraries, their versions, supported image formats, and applicable resource limits.<\/p><\/dd>\n<dt id=\"how%20can%20i%20check%20whether%20webp%20or%20avif%20is%20really%20being%20delivered%3F\"><h3>How can I check whether WebP or AVIF is really being delivered?<\/h3><\/dt>\n<dd><p>Open <strong>Settings &gt; Overview<\/strong> and click <strong>Test image delivery<\/strong>.<\/p>\n\n<p>PDEV Image Optimizer creates temporary local test files, requests the original URL with the selected format in the <code>Accept<\/code> header, verifies the response, and immediately removes the test files.<\/p>\n\n<p>A successful result confirms an <code>image\/webp<\/code> or <code>image\/avif<\/code> response.<\/p>\n\n<p>The latest result remains visible until conversion or delivery settings change.<\/p>\n\n<p>You can also verify a real image using your browser developer tools:<\/p>\n\n<ol>\n<li>Open the <strong>Network<\/strong> panel.<\/li>\n<li>Select an image request.<\/li>\n<li>Check the response <code>Content-Type<\/code>.<\/li>\n<\/ol>\n\n<p>The URL may still end in <code>.jpg<\/code> while the response type is <code>image\/webp<\/code> or <code>image\/avif<\/code>. This is expected.<\/p><\/dd>\n<dt id=\"why%20does%20the%20image%20url%20still%20end%20in%20.jpg%20or%20.png%3F\"><h3>Why does the image URL still end in .jpg or .png?<\/h3><\/dt>\n<dd><p>This is intentional.<\/p>\n\n<p>PDEV Image Optimizer keeps existing WordPress URLs unchanged.<\/p>\n\n<p>The web server serves the optimized WebP or AVIF sidecar transparently when the browser supports it.<\/p>\n\n<p>This avoids replacing URLs stored in WordPress content, metadata, themes, or plugins.<\/p><\/dd>\n<dt id=\"why%20was%20an%20image%20skipped%20because%20of%20a%20resource%20or%20safety%20limit%3F\"><h3>Why was an image skipped because of a resource or safety limit?<\/h3><\/dt>\n<dd><p>The compressed file size does not indicate how much memory an image requires after decoding.<\/p>\n\n<p>PDEV Image Optimizer skips sources:<\/p>\n\n<ul>\n<li>Larger than 64 MB.<\/li>\n<li>Wider or taller than 16,384 pixels.<\/li>\n<li>Larger than 25 megapixels.<\/li>\n<\/ul>\n\n<p>GD and Imagick also have separate memory, time, disk, and thread safeguards described in <strong>Hosting resource protection and image limits<\/strong>.<\/p>\n\n<p>A skipped attachment remains unchanged and is listed as an error instead of silently exhausting server resources.<\/p><\/dd>\n<dt id=\"what%20are%20thumbnail%20tools%20for%3F\"><h3>What are Thumbnail tools for?<\/h3><\/dt>\n<dd><p>Thumbnail tools scan the Media Library for:<\/p>\n\n<ul>\n<li>Missing registered WordPress thumbnail files.<\/li>\n<li>Obsolete files associated with image sizes that are no longer registered.<\/li>\n<\/ul>\n\n<p>They can create missing image sizes or fully regenerate thumbnails.<\/p>\n\n<p>Thumbnail regeneration itself does not create WebP or AVIF files. Run Media Library optimization afterward.<\/p><\/dd>\n<dt id=\"can%20it%20optimize%20images%20stored%20in%20my%20wordpress%20theme%3F\"><h3>Can it optimize images stored in my WordPress theme?<\/h3><\/dt>\n<dd><p>Yes.<\/p>\n\n<p>Enable active theme image optimization in Settings.<\/p>\n\n<p>The active theme directory must be readable and writable, and the web-server delivery rules must also cover that directory.<\/p>\n\n<p>Development directories including the following are excluded from scanning:<\/p>\n\n<ul>\n<li><code>node_modules<\/code><\/li>\n<li><code>vendor<\/code><\/li>\n<li><code>.git<\/code><\/li>\n<li><code>.svn<\/code><\/li>\n<\/ul><\/dd>\n<dt id=\"are%20animated%20gif%20files%20supported%3F\"><h3>Are animated GIF files supported?<\/h3><\/dt>\n<dd><p>Animated GIF files are detected and skipped so animation is not replaced with a static image.<\/p>\n\n<p>A non-animated GIF can be converted when GIF is selected as a source format.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20use%20additional%20disk%20space%3F\"><h3>Does the plugin use additional disk space?<\/h3><\/dt>\n<dd><p>Yes.<\/p>\n\n<p>Original files are preserved and optimized WebP or AVIF sidecars are stored next to them.<\/p>\n\n<p>The <strong>Storage savings<\/strong> card shows the disk space used by optimized sidecars and estimates the smaller transfer size visitors may receive.<\/p><\/dd>\n<dt id=\"can%20i%20remove%20generated%20webp%20and%20avif%20files%3F\"><h3>Can I remove generated WebP and AVIF files?<\/h3><\/dt>\n<dd><p>Yes.<\/p>\n\n<p><strong>Optimized file cleanup<\/strong> can scan PDEV-generated optimized files before deleting anything.<\/p>\n\n<p>You can choose to remove:<\/p>\n\n<ul>\n<li>Obsolete generated files.<\/li>\n<li>All PDEV-generated optimized files.<\/li>\n<\/ul>\n\n<p>The cleanup previews the number and size of files before deletion.<\/p>\n\n<p>Only files whose name and location identify them as PDEV-generated are removed, for example <code>image.jpg.pio.webp<\/code>. A real source extension must precede <code>.pio.<\/code>, and the file must sit inside the uploads or active theme folder, so a file you happened to name <code>something.pio.webp<\/code> is always left alone.<\/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>Uninstalling removes:<\/p>\n\n<ul>\n<li>Plugin options.<\/li>\n<li>The generated-file registry table.<\/li>\n<li>The plugin error log.<\/li>\n<li>Managed <code>.htaccess<\/code> delivery rules.<\/li>\n<\/ul>\n\n<p>Generated <code>.pio.webp<\/code> and <code>.pio.avif<\/code> files remain on disk by default.<\/p>\n\n<p>To remove them as well:<\/p>\n\n<ul>\n<li>Run <strong>Optimized file cleanup<\/strong> and choose <strong>Scan all generated files<\/strong> before uninstalling, or<\/li>\n<li>Enable <strong>Delete generated files on uninstall<\/strong> in the plugin settings.<\/li>\n<\/ul>\n\n<p>On very large sites, uninstall-time deletion is a time-limited best effort and some generated files may remain.<\/p>\n\n<p>Original images are never removed.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20cloudflare%3F\"><h3>Does it work with Cloudflare?<\/h3><\/dt>\n<dd><p>Yes.<\/p>\n\n<p>Local conversion and origin delivery work without a Cloudflare API connection.<\/p>\n\n<p>Without a confirmed shared-cache rule, PDEV Image Optimizer uses private-cache protection so Cloudflare does not cache the wrong image format for a shared original URL.<\/p>\n\n<p>The optional Cloudflare integration can:<\/p>\n\n<ul>\n<li>Configure a Free-compatible Cache Rule.<\/li>\n<li>Test image delivery.<\/li>\n<li>Purge cache.<\/li>\n<\/ul>\n\n<p>Automatic Cache Rule creation requires a zone-scoped API token with:<\/p>\n\n<ul>\n<li><strong>Cache Settings: Edit<\/strong><\/li>\n<li><strong>Cache Purge: Purge<\/strong><\/li>\n<\/ul>\n\n<p>The standard Cloudflare WordPress token preset supports cache purge but does not include <strong>Cache Settings: Edit<\/strong>.<\/p>\n\n<p>Credentials can optionally be defined in <code>wp-config.php<\/code>:<\/p>\n\n<pre><code>define( 'PDEV_IMAGE_OPTIMIZER_CLOUDFLARE_ZONE_ID', 'your-zone-id' );\n\ndefine( 'PDEV_IMAGE_OPTIMIZER_CLOUDFLARE_API_TOKEN', 'your-api-token' );\n<\/code><\/pre><\/dd>\n<dt id=\"does%20the%20plugin%20send%20images%20or%20usage%20statistics%20anywhere%3F\"><h3>Does the plugin send images or usage statistics anywhere?<\/h3><\/dt>\n<dd><p>No.<\/p>\n\n<p>Images are converted locally.<\/p>\n\n<p>PDEV Image Optimizer has no telemetry or analytics endpoint.<\/p>\n\n<p>Cloudflare is contacted only when an administrator explicitly provides credentials or runs the compatibility test.<\/p>\n\n<p>The Ko-fi page is opened only after the user clicks its link.<\/p><\/dd>\n<dt id=\"what%20is%20included%20in%20the%20system%20report%3F\"><h3>What is included in the system report?<\/h3><\/dt>\n<dd><p>The system report includes:<\/p>\n\n<ul>\n<li>WordPress information.<\/li>\n<li>PHP information.<\/li>\n<li>Web-server information.<\/li>\n<li>Imagick status.<\/li>\n<li>GD status.<\/li>\n<li>Plugin settings.<\/li>\n<li>Image delivery status.<\/li>\n<li>Writable-directory checks.<\/li>\n<li>Cloudflare status.<\/li>\n<li>Optimization statistics.<\/li>\n<li>The latest live delivery test.<\/li>\n<li>Detected conflicts.<\/li>\n<li>Thumbnail status.<\/li>\n<li>Recent plugin errors.<\/li>\n<\/ul>\n\n<p>The report excludes:<\/p>\n\n<ul>\n<li>Site URLs.<\/li>\n<li>Credentials.<\/li>\n<li>Personal data.<\/li>\n<li>Media content.<\/li>\n<li>Full server paths.<\/li>\n<\/ul><\/dd>\n<dt id=\"how%20long%20are%20plugin%20errors%20stored%3F\"><h3>How long are plugin errors stored?<\/h3><\/dt>\n<dd><p>Only errors from the last 24 hours are shown and included in the report, with an additional maximum of 50 entries.<\/p>\n\n<p>Paths, URLs, email addresses, and image names are redacted from the support report.<\/p>\n\n<p>The log is removed when the plugin is uninstalled.<\/p><\/dd>\n<dt id=\"can%20i%20use%20wp-cli%3F\"><h3>Can I use WP-CLI?<\/h3><\/dt>\n<dd><p>Yes. Every bulk operation is available through the <code>wp pdevio<\/code> command:<\/p>\n\n<ul>\n<li><code>wp pdevio optimize [--force] [--attachments-only] [--theme-only]<\/code> - convert the Media Library, plus the active theme images when that option is enabled. <code>--force<\/code> re-optimizes every image from the start. This command uses the same lock as the admin screen, so a command-line run and a browser run never process the same images at once.<\/li>\n<li><code>wp pdevio convert &lt;id&gt;... [--force]<\/code> - convert one or more attachments by ID.<\/li>\n<li><code>wp pdevio cleanup [--all] [--dry-run] [--yes]<\/code> - preview and delete generated optimized files. <code>--all<\/code> also removes current-format files, <code>--dry-run<\/code> only reports, <code>--yes<\/code> skips the confirmation prompt.<\/li>\n<li><code>wp pdevio status<\/code> - show the output format, encoder, optimization speed, optimized and pending counts, delivery-rule status, and the last delivery test.<\/li>\n<li><code>wp pdevio test-delivery<\/code> - run the live HTTP delivery test.<\/li>\n<li><code>wp pdevio set [--format=&lt;webp|avif&gt;] [--speed=&lt;conservative|balanced|fast&gt;]<\/code> - change the output format or optimization speed, exactly like the Settings screen. Run without options to print the current values.<\/li>\n<\/ul><\/dd>\n<dt id=\"is%20there%20a%20pro%20version%3F\"><h3>Is there a PRO version?<\/h3><\/dt>\n<dd><p>No.<\/p>\n\n<p>Every feature is free and the plugin will remain free.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>[New] WP-CLI support. Run bulk optimization, targeted conversion, generated-file cleanup, the live delivery test, and format or speed changes from the command line with <code>wp pdevio<\/code> (<code>optimize<\/code>, <code>convert<\/code>, <code>cleanup<\/code>, <code>status<\/code>, <code>test-delivery<\/code>, <code>set<\/code>). The <code>optimize<\/code> command shares the same lock as the admin screen, so a command-line run and a browser run never process the same images at once.<\/li>\n<li>[New] Optimization speed setting (Conservative, Balanced, Fast) on the Settings screen. Bulk optimization now grows to larger batches with shorter pauses while the server keeps up, and still drops back to one image per request the moment a batch runs long or memory gets tight. Balanced is the new default. Shared hosting that sees timeouts can switch to Conservative; a VPS or dedicated server can use Fast. Filters <code>pdev_image_optimizer_max_batch_limit<\/code> and <code>pdev_image_optimizer_min_cooldown_ms<\/code> tune the ceilings further.<\/li>\n<li>[New] \"Force optimize all\" button on the Media Library screen re-optimizes every image from the start, next to the normal button that resumes where it left off. A \"Stop optimization\" button pauses a run with its progress saved; the button then reads \"Continue optimization\".<\/li>\n<li>[Changed] The main plugin screen is now a short summary: one line confirming that optimized images are being served, or only the checks that still need attention. The full diagnostic Overview moved to the top of the System status screen. When the live delivery test confirms visitors receive the optimized images, the summary is shown in green and a leftover competing rewrite rule from another plugin is treated as optional cleanup rather than a warning; the note about it now lives on System status.<\/li>\n<li>[Changed] Removed the database table that tracked generated files. A generated WebP or AVIF file is now identified only by its exact name (<code>image.jpg.pio.webp<\/code>) and its location inside the uploads or active theme folder. Cleanup and uninstall never remove a file unless a real source extension precedes <code>.pio.<\/code> in its name and it sits in a managed folder, so a file you happened to name <code>something.pio.webp<\/code> is always left alone. The old table is dropped automatically on update. New filter <code>pdev_image_optimizer_generated_roots<\/code> adds folders to the scan for sites that store media elsewhere.<\/li>\n<li>[Changed] Overwriting a generated file no longer depends on a database record. Any file at the reserved <code>.pio.webp<\/code> or <code>.pio.avif<\/code> path derived from a real source image is treated as PDEV's own and refreshed normally.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>[Fixed] AVIF bulk optimization could stop with an \"HTTP 409\" error on some servers and never recover. A single image whose AVIF encode outruns the server's memory or time limit was killing the PHP worker before it could report a failure, so the job never advanced past that image and every retry hit it again and left the optimization lock stranded. That image is now detected after the first crash, recorded as a failed image, and skipped so the rest of the library finishes; AVIF batches also process one image at a time, the encoder runs at a bounded speed (filter <code>pdev_image_optimizer_avif_speed<\/code>), a batch the web server kills mid-request no longer holds the lock for 90 seconds (kept fresh while running, reclaimed within 45 seconds otherwise), and the optimizer waits out a busy lock or a dropped connection instead of failing immediately. The crash-skip threshold is adjustable through <code>pdev_image_optimizer_max_attachment_attempts<\/code>.<\/li>\n<li>[Fixed] Large photos near the megapixel limit could fail with \"cache resources exhausted\" on Imagick. The Imagick pixel-cache limits are now large enough to process an image up to the safe megapixel cap, including its orientation pass, and stay adjustable through the <code>pdev_image_optimizer_imagick_resource_limits<\/code> filter.<\/li>\n<li>[New] Filter <code>pdev_image_optimizer_preferred_driver<\/code> (<code>gd<\/code> or <code>imagick<\/code>) forces which encoder is tried first. The capability probe still runs, so forcing a driver that cannot encode the chosen format falls back to the other one.<\/li>\n<li>[Fixed] After moving a site, migrating its database, or restoring from a backup, every previously generated file reported \"a file with PDEV's reserved optimized-image name already exists and was not created by PDEV\" and could not be optimized again. A valid WebP or AVIF sitting at the reserved <code>.pio<\/code> path is now treated as an earlier PDEV conversion and re-created normally (the hard refusal is kept only for a file that is not a valid image of the target format), and the ownership table is recreated automatically if a migration left it behind.<\/li>\n<li>[Changed] A competing WebP or AVIF rewrite rule from another plugin - often left in <code>.htaccess<\/code> after that plugin is removed - no longer disables PDEV delivery. PDEV now installs its own rules regardless and shows a warning that names the competing block, says whether the plugin that created it is still active, tells you which <code># BEGIN<\/code> \/ <code># END<\/code> block to delete when it is not, and points to the live delivery test.<\/li>\n<li>[Changed] Overview cleanup: removed the \"View detailed status\" button (it only opened System status, which repeats what Overview already shows); after a competing rewrite rule is detected, the live delivery test result now appears in the conflict block where the test button is, instead of only in the Image delivery row; and once that test passes, the loud competing-rule warning collapses to a short \"delivery still works\" note, leaving the details one click away.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>[Fixed] The 1.3.0 release package was incomplete: several class files were missing, which caused a fatal error (<code>Class \"PDEV\\ImageOptimizer\\Rest\\CleanupRoute\" not found<\/code>) on sites that installed or updated to 1.3.0. This release ships the complete plugin.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>[Feature] Added registry-backed, preview-first cleanup for obsolete PDEV-generated WebP and AVIF files, with an optional \"all generated files\" mode that also clears the optimization state so images are regenerated.<\/li>\n<li>[Feature] Added a \"Delete generated files on uninstall\" setting; when enabled, the uninstaller removes registered <code>.pio.webp<\/code> \/ <code>.pio.avif<\/code> files (best effort, time-limited) while never touching originals.<\/li>\n<li>[Changed] Generated files now use the unambiguous <code>.pio.webp<\/code> and <code>.pio.avif<\/code> naming contract; legacy sidecars are no longer served or removed automatically.<\/li>\n<li>[Security] Cleanup accepts no browser-supplied paths and revalidates exact registry ownership immediately before deletion.<\/li>\n<li>[Fixed] The live delivery test no longer fails on a self-signed or mismatched certificate when the uploads URL is on this site's own host.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>[Release] First public build.<\/li>\n<\/ul>","raw_excerpt":"Speed up WordPress image delivery with local WebP and AVIF optimization. Free, unlimited, with no cloud service, account, subscription, or PRO version &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/349789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=349789"}],"author":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/grzegorzpuszka"}],"wp:attachment":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=349789"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=349789"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=349789"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=349789"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=349789"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=349789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}