{"id":317563,"date":"2026-06-01T08:46:57","date_gmt":"2026-06-01T08:46:57","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/puffpix-compress\/"},"modified":"2026-06-01T09:13:34","modified_gmt":"2026-06-01T09:13:34","slug":"puffpix-compress","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/puffpix-compress\/","author":23504870,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.20","stable_tag":"1.2.20","tested":"7.0","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"PuffPix Compress","header_author":"PuffPix","header_description":"Automatically compress and optimize images on upload and in bulk. Smaller files, faster site \u2014 powered by the PuffPix API.","assets_banners_color":"3bc9b0","last_updated":"2026-06-01 09:13:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/puffpix.com\/wordpress-plugin","header_author_uri":"https:\/\/puffpix.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":41,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.19":{"tag":"1.2.19","author":"xdmedia","date":"2026-06-01 08:46:28"},"1.2.20":{"tag":"1.2.20","author":"xdmedia","date":"2026-06-01 09:13:34"}},"upgrade_notice":{"1.2.2":"<p>Adds automatic update notifications via puffpix.com.<\/p>","1.2.1":"<p>Lowered minimum WordPress requirement to 5.0 for broader compatibility.<\/p>","1.2.0":"<p>Improved documentation and WordPress 6.7 compatibility confirmed. No functional changes.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3556479,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3556479,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3556479,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3556479,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.19","1.2.20"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings page \u2014 enter your API key, choose compression engine and quality level.","2":"Bulk compress page \u2014 real-time progress bar and live log showing savings per image.","3":"Media library column \u2014 per-image compression stats with single-image compress and retry buttons."}},"plugin_section":[],"plugin_tags":[56174,29161,84,247,15376],"plugin_category":[50,54],"plugin_contributors":[265297],"plugin_business_model":[],"class_list":["post-317563","plugin","type-plugin","status-publish","hentry","plugin_tags-compress-images","plugin_tags-image-optimization","plugin_tags-media","plugin_tags-performance","plugin_tags-webp","plugin_category-media","plugin_category-security-and-spam-protection","plugin_contributors-xdmedia","plugin_committers-xdmedia"],"banners":{"banner":"https:\/\/ps.w.org\/puffpix-compress\/assets\/banner-772x250.png?rev=3556479","banner_2x":"https:\/\/ps.w.org\/puffpix-compress\/assets\/banner-1544x500.png?rev=3556479","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/puffpix-compress\/assets\/icon-128x128.png?rev=3556479","icon_2x":"https:\/\/ps.w.org\/puffpix-compress\/assets\/icon-256x256.png?rev=3556479","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>PuffPix Compress<\/strong> automatically optimizes every image you upload to WordPress \u2014 reducing file sizes by 40\u201380% without visible quality loss. Faster pages, lower bandwidth, better Core Web Vitals scores.<\/p>\n\n<p>It works by connecting to the <a href=\"https:\/\/puffpix.com\">PuffPix<\/a> image compression API. When you upload an image, PuffPix compresses it server-side using industry-leading encoders (mozjpeg, pngquant, cwebp) and returns the optimized file, which replaces the original in your media library.<\/p>\n\n<h4>Why PuffPix?<\/h4>\n\n<ul>\n<li><strong>No server load<\/strong> \u2014 compression happens on PuffPix servers, not yours<\/li>\n<li><strong>Better results than GD<\/strong> \u2014 uses mozjpeg and pngquant for noticeably smaller files at the same quality<\/li>\n<li><strong>All thumbnail sizes<\/strong> \u2014 automatically compresses every generated thumbnail, not just the original<\/li>\n<li><strong>EXIF stripping<\/strong> \u2014 removes GPS coordinates and device metadata for privacy<\/li>\n<li><strong>Bulk optimization<\/strong> \u2014 compress your entire existing media library in one click with a live progress log<\/li>\n<li><strong>Per-image stats<\/strong> \u2014 see exactly how much each image was reduced, right in the media library<\/li>\n<\/ul>\n\n<h4>Compression Engines<\/h4>\n\n<ul>\n<li><strong>Standard (GD)<\/strong> \u2014 PHP's built-in image library. Fast and universally compatible. Quality 85 (balanced) or 72 (aggressive).<\/li>\n<li><strong>Pro (mozjpeg + pngquant)<\/strong> \u2014 significantly better compression than GD at the same visual quality. JPEGs typically 20\u201330% smaller than GD output.<\/li>\n<li><strong>Max<\/strong> \u2014 maximum compression using the best available encoder per format. Smallest possible file size. Requires Pro or Trial plan.<\/li>\n<\/ul>\n\n<h4>Supported Formats<\/h4>\n\n<p>JPEG, PNG, WebP, GIF. SVG support is available on the PuffPix web tool.<\/p>\n\n<h4>Free Trial<\/h4>\n\n<p>New users get <strong>100 free compressions over 30 days<\/strong> \u2014 no credit card required. Get your key at <a href=\"https:\/\/puffpix.com\/trial.php\">puffpix.com\/trial.php<\/a>.<\/p>\n\n<h4>How to Get Your API Key<\/h4>\n\n<ol>\n<li>Visit <a href=\"https:\/\/puffpix.com\">puffpix.com<\/a><\/li>\n<li>Click <strong>Get free trial<\/strong> \u2014 no credit card needed<\/li>\n<li>You'll receive 100 credits by email<\/li>\n<li>Paste the key into <strong>Settings \u2192 PuffPix Compress<\/strong><\/li>\n<\/ol>\n\n<h4>Privacy &amp; External Services<\/h4>\n\n<p>This plugin sends image data to the PuffPix API for compression. Please see the \"External Services\" section below for full disclosure.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the <strong>PuffPix image compression API<\/strong> to compress images.<\/p>\n\n<p><strong>What data is sent:<\/strong>\n* The image file(s) selected for compression\n* Your API key (to authenticate your plan)\n* Compression settings (engine, quality, strip EXIF)\n* Anonymous compression metrics: file format, engine, quality, bits-per-pixel range, and compression ratio (no image content, filename, or personal data)<\/p>\n\n<p><strong>What happens to your data:<\/strong>\n* Images are processed and the compressed version is returned to your server\n* Images are automatically deleted from PuffPix servers within 30 minutes\n* No image content is stored permanently\n* API keys are not logged beyond authentication<\/p>\n\n<p><strong>Service details:<\/strong>\n* Service name: PuffPix\n* Service URL: https:\/\/puffpix.com\n* API endpoint: https:\/\/puffpix.com\/api.php\n* Privacy policy: https:\/\/puffpix.com\/privacy\n* Terms of service: https:\/\/puffpix.com\/terms<\/p>\n\n<p>This plugin will <strong>not<\/strong> make any API calls unless an API key has been entered in the settings. Images are only sent to the PuffPix API when compression is explicitly triggered (on upload if auto-compress is enabled, or manually via the media library or bulk compress page).<\/p>\n\n<!--section=installation-->\n<h4>From the WordPress Plugin Directory (recommended)<\/h4>\n\n<ol>\n<li>In your WordPress admin, go to <strong>Plugins \u2192 Add New<\/strong><\/li>\n<li>Search for <strong>PuffPix Compress<\/strong><\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong><\/li>\n<li>Go to <strong>Settings \u2192 PuffPix Compress<\/strong> and enter your API key<\/li>\n<li>Done \u2014 images will be automatically compressed on upload<\/li>\n<\/ol>\n\n<h4>Manual installation<\/h4>\n\n<ol>\n<li>Download the plugin zip<\/li>\n<li>In your WordPress admin go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong><\/li>\n<li>Upload the zip and click <strong>Install Now<\/strong>, then <strong>Activate<\/strong><\/li>\n<li>Go to <strong>Settings \u2192 PuffPix Compress<\/strong> and enter your API key<\/li>\n<\/ol>\n\n<h4>After activation<\/h4>\n\n<ul>\n<li>To compress your <strong>existing<\/strong> media library: go to <strong>Media \u2192 PuffPix<\/strong> and click <strong>Compress images<\/strong><\/li>\n<li>To change settings: go to <strong>Settings \u2192 PuffPix Compress<\/strong><\/li>\n<li>To compress a <strong>single image<\/strong>: go to <strong>Media Library<\/strong> and click <strong>Compress<\/strong> in the PuffPix column<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20account%3F\"><h3>Do I need an account?<\/h3><\/dt>\n<dd><p>Yes, you need a free API key from <a href=\"https:\/\/puffpix.com\">puffpix.com<\/a>. New users get 100 free compressions \u2014 no credit card required.<\/p><\/dd>\n<dt id=\"are%20my%20images%20sent%20to%20an%20external%20server%3F\"><h3>Are my images sent to an external server?<\/h3><\/dt>\n<dd><p>Yes. Images are uploaded to the PuffPix API (puffpix.com) for compression, then returned to your server. Images are automatically deleted from PuffPix servers within 30 minutes of compression. See the External Services section for full details.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20replace%20my%20original%20files%3F\"><h3>Does the plugin replace my original files?<\/h3><\/dt>\n<dd><p>Yes. It overwrites the original file and all generated thumbnail sizes with the compressed versions. <strong>Make a backup before running bulk compression<\/strong> if you want to preserve originals.<\/p><\/dd>\n<dt id=\"what%20image%20formats%20are%20supported%3F\"><h3>What image formats are supported?<\/h3><\/dt>\n<dd><p>JPEG, PNG, WebP, and GIF. Unsupported formats (SVG, RAW, etc.) are skipped automatically.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20my%20existing%20media%20library%3F\"><h3>Does it work with my existing media library?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Media \u2192 PuffPix<\/strong> to bulk-compress all unoptimized images. The plugin tracks which images have already been compressed and skips them on re-runs.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20standard%2C%20pro%2C%20and%20max%20engines%3F\"><h3>What is the difference between Standard, Pro, and Max engines?<\/h3><\/dt>\n<dd><p><strong>Standard (GD)<\/strong> uses PHP's built-in GD library \u2014 fast and available everywhere, good for most use cases. <strong>Pro<\/strong> uses mozjpeg (JPEG) and pngquant (PNG) \u2014 these produce noticeably smaller files at the same visual quality compared to GD. <strong>Max<\/strong> applies the most aggressive settings available. Pro and Max require a paid plan or trial.<\/p><\/dd>\n<dt id=\"can%20i%20compress%20only%20certain%20images%3F\"><h3>Can I compress only certain images?<\/h3><\/dt>\n<dd><p>Yes. You can compress individual images from the media library by clicking the <strong>Compress<\/strong> button in the PuffPix column. Auto-compress on upload can also be disabled in settings.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20compression%20doesn%27t%20reduce%20the%20file%20size%3F\"><h3>What happens if compression doesn't reduce the file size?<\/h3><\/dt>\n<dd><p>If the compressed version is not smaller than the original (e.g. the image was already optimized), the plugin keeps the original file unchanged.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20down%20my%20uploads%3F\"><h3>Does it slow down my uploads?<\/h3><\/dt>\n<dd><p>Slightly \u2014 the plugin makes an API call during upload which adds a few seconds. This only affects the upload process, not your visitors.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20woocommerce%20product%20images%3F\"><h3>Is it compatible with WooCommerce product images?<\/h3><\/dt>\n<dd><p>Yes. Product images uploaded through WooCommerce go through the standard WordPress media upload flow and are compressed automatically.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20page%20builders%20like%20elementor%20or%20divi%3F\"><h3>Is it compatible with page builders like Elementor or Divi?<\/h3><\/dt>\n<dd><p>Yes. Any image uploaded via the WordPress media library is compressed, regardless of which plugin or theme triggers the upload.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20api%20is%20unavailable%3F\"><h3>What happens if the API is unavailable?<\/h3><\/dt>\n<dd><p>If the PuffPix API is unreachable, the upload completes normally with the original uncompressed file. No images are lost.<\/p><\/dd>\n<dt id=\"can%20i%20retry%20failed%20compressions%3F\"><h3>Can I retry failed compressions?<\/h3><\/dt>\n<dd><p>Yes. Images that failed compression show a <strong>Retry<\/strong> link in the media library column. You can also re-run bulk compression \u2014 already-compressed images are skipped.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.20<\/h4>\n\n<ul>\n<li>Security: pin API download URL to puffpix.com domain<\/li>\n<li>Security: replace innerHTML with textContent for error output in admin<\/li>\n<\/ul>\n\n<h4>1.2.19<\/h4>\n\n<ul>\n<li>Fix: Plugin URI corrected to wordpress-plugin page (WP.org review)<\/li>\n<li>Fix: Contributor username updated to xdmedia (WP.org review)<\/li>\n<li>Fix: All admin JS moved to enqueued files via wp_enqueue_script (WP.org review)<\/li>\n<\/ul>\n\n<h4>1.2.18<\/h4>\n\n<ul>\n<li>Fix: Plugin URI and Author URI must be different (WP.org requirement)<\/li>\n<\/ul>\n\n<h4>1.2.17<\/h4>\n\n<ul>\n<li>Fix: Auto-compress errors now visible in media library column<\/li>\n<\/ul>\n\n<h4>1.2.16<\/h4>\n\n<ul>\n<li>Fix: Remove auto-updater for WordPress.org directory compliance<\/li>\n<\/ul>\n\n<h4>1.2.15<\/h4>\n\n<ul>\n<li>Fix: Restore auto-updater for puffpix.com installs<\/li>\n<\/ul>\n\n<h4>1.2.14<\/h4>\n\n<ul>\n<li>Fix: Replaced cURL with wp_remote_post() for WordPress.org compliance<\/li>\n<li>Fix: Proper output escaping throughout (esc_attr, esc_html, esc_js, wp_kses)<\/li>\n<li>Fix: wp_unslash() applied to all $_POST inputs<\/li>\n<\/ul>\n\n<h4>1.2.13<\/h4>\n\n<ul>\n<li>Internal: auto-update verification release<\/li>\n<\/ul>\n\n<h4>1.2.12<\/h4>\n\n<ul>\n<li>Fix: Plugin zip rebuilt with forward-slash paths \u2014 resolves \"Plugin file does not exist\" error after auto-update on some Linux hosts<\/li>\n<\/ul>\n\n<h4>1.2.11<\/h4>\n\n<ul>\n<li>Improvement: Settings page now highlights the free 30-day trial directly on the API key field<\/li>\n<\/ul>\n\n<h4>1.2.10<\/h4>\n\n<ul>\n<li>Improvement: Settings page API key field links directly to the free trial page<\/li>\n<\/ul>\n\n<h4>1.2.9<\/h4>\n\n<ul>\n<li>Fix: Zip structure corrected after 1.2.7\/1.2.8 path fixes<\/li>\n<\/ul>\n\n<h4>1.2.8<\/h4>\n\n<ul>\n<li>Fix: Plugin zip now uses correct path structure \u2014 resolves \"Plugin file does not exist\" error after auto-update on Linux hosts<\/li>\n<\/ul>\n\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>Feature: Plan-aware settings \u2014 Pro and Max engine options automatically grayed out for non-Pro accounts<\/li>\n<li>Feature: Richer plugin details popup with description, installation guide, and FAQ tabs<\/li>\n<li>Improvement: Better error messages in media library column (Plan expired, Invalid key, Daily limit reached) with direct action links<\/li>\n<li>Fix: Max engine now correctly maps to Pro engine server-side<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Anonymous compression metrics reported to improve size estimates (file format, ratio, bpp range \u2014 no personal data)<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Plugin icon now shown in WordPress update screen<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>PuffPix stats now visible in attachment details popup (grid view)<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Fixed savings percentage calculation \u2014 now based on total before\/after across all files instead of thumbnails vs original size (prevented &gt;100% display)<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Added automatic update notifications \u2014 WordPress will now show \"Update Available\" when a new version is released<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Lowered minimum WordPress requirement from 5.8 to 5.0 for broader compatibility<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Improved readme and plugin description for clarity<\/li>\n<li>External services disclosure added<\/li>\n<li>Expanded FAQ (13 questions)<\/li>\n<li>Tested up to WordPress 6.7<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added per-image compress and retry buttons in media library column<\/li>\n<li>Added EXIF stripping option<\/li>\n<li>Added thumbnail compression option<\/li>\n<li>Improved bulk compress progress log<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Auto-compress images on upload<\/li>\n<li>Bulk compress entire media library with progress bar<\/li>\n<li>Support for Standard (GD), Pro (mozjpeg + pngquant), and Max compression engines<\/li>\n<\/ul>","raw_excerpt":"Automatically compress and optimize images on upload. Bulk-optimize your entire media library. Smaller files, faster site \u2014 no quality loss.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/317563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=317563"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/xdmedia"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=317563"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=317563"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=317563"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=317563"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=317563"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=317563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}