{"id":344053,"date":"2026-07-23T23:09:49","date_gmt":"2026-07-23T23:09:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/squeezify\/"},"modified":"2026-08-09T21:26:34","modified_gmt":"2026-08-09T21:26:34","slug":"squishify","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/squishify\/","author":11984087,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.2","stable_tag":"1.2.2","tested":"7.0.3","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Squishify","header_author":"XCAST3D","header_description":"Optimize first, upload second. Batch-compress, convert, and resize images in your browser \u2014 the full-size originals never hit your server \u2014 then upload the finished files straight into the Media Library.","assets_banners_color":"17181c","last_updated":"2026-08-09 21:26:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/squishify.app\/wordpress","header_author_uri":"https:\/\/xcast3d.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":237,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"xcastaneda","date":"2026-07-23 23:09:13"},"1.1.0":{"tag":"1.1.0","author":"xcastaneda","date":"2026-07-30 16:34:32"},"1.1.2":{"tag":"1.1.2","author":"xcastaneda","date":"2026-08-01 05:28:13"},"1.2.0":{"tag":"1.2.0","author":"xcastaneda","date":"2026-08-08 15:06:39"},"1.2.2":{"tag":"1.2.2","author":"xcastaneda","date":"2026-08-09 21:26:34"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3620617,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3620617,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3620617,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3620617,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3620617,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.1.0","1.1.2","1.2.0","1.2.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3620617,"resolution":"1","location":"assets","locale":"","width":1032,"height":440},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3620617,"resolution":"2","location":"assets","locale":"","width":3454,"height":1982},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3620617,"resolution":"3","location":"assets","locale":"","width":624,"height":1010},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3620617,"resolution":"4","location":"assets","locale":"","width":1200,"height":789},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3620617,"resolution":"5","location":"assets","locale":"","width":1020,"height":912},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3620617,"resolution":"6","location":"assets","locale":"","width":1260,"height":968},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3620617,"resolution":"7","location":"assets","locale":"","width":1054,"height":704},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3620617,"resolution":"8","location":"assets","locale":"","width":1724,"height":498}},"screenshots":{"1":"The Squishify button, right next to Add New Media File on the Media Library screen.","2":"The Squishify editor \u2014 \"Let's get started\".","3":"Images added to the batch queue.","4":"Before\/after comparison preview on a photo.","5":"The resize control.","6":"Finalize \u2014 showing how much Squishify saved.","7":"Optimized files landed in the Media Library after upload.","8":"The Media \u2192 Squishify compatibility check, confirming your site is ready."}},"plugin_section":[],"plugin_tags":[194661,29161,233,2700,15376],"plugin_category":[],"plugin_contributors":[273058],"plugin_business_model":[],"class_list":["post-344053","plugin","type-plugin","status-publish","hentry","plugin_tags-avif","plugin_tags-image-optimization","plugin_tags-media-library","plugin_tags-resize-images","plugin_tags-webp","plugin_contributors-xcastaneda","plugin_committers-xcastaneda"],"banners":{"banner":"https:\/\/ps.w.org\/squishify\/assets\/banner-772x250.png?rev=3620617","banner_2x":"https:\/\/ps.w.org\/squishify\/assets\/banner-1544x500.png?rev=3620617","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/squishify\/assets\/icon.svg?rev=3620617","icon":"https:\/\/ps.w.org\/squishify\/assets\/icon.svg?rev=3620617","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/squishify\/assets\/screenshot-1.png?rev=3620617","caption":"The Squishify button, right next to Add New Media File on the Media Library screen."},{"src":"https:\/\/ps.w.org\/squishify\/assets\/screenshot-2.png?rev=3620617","caption":"The Squishify editor \u2014 \"Let's get started\"."},{"src":"https:\/\/ps.w.org\/squishify\/assets\/screenshot-3.png?rev=3620617","caption":"Images added to the batch queue."},{"src":"https:\/\/ps.w.org\/squishify\/assets\/screenshot-4.png?rev=3620617","caption":"Before\/after comparison preview on a photo."},{"src":"https:\/\/ps.w.org\/squishify\/assets\/screenshot-5.png?rev=3620617","caption":"The resize control."},{"src":"https:\/\/ps.w.org\/squishify\/assets\/screenshot-6.png?rev=3620617","caption":"Finalize \u2014 showing how much Squishify saved."},{"src":"https:\/\/ps.w.org\/squishify\/assets\/screenshot-7.png?rev=3620617","caption":"Optimized files landed in the Media Library after upload."},{"src":"https:\/\/ps.w.org\/squishify\/assets\/screenshot-8.png?rev=3620617","caption":"The Media \u2192 Squishify compatibility check, confirming your site is ready."}],"raw_content":"<!--section=description-->\n<p>Every major image plugin optimizes images <em>after<\/em> they're uploaded \u2014 the full-size originals still travel over the wire, still land on your server, and still eat disk space.<\/p>\n\n<p>Squishify flips the order. Drag a batch of images into the Squishify editor (right inside wp-admin), resize, tune format and quality with a live before\/after comparison, and nothing touches your site until you click Upload. Only the finished, optimized files reach your Media Library.<\/p>\n\n<ul>\n<li>Real encoders \u2014 libavif (AVIF), libwebp (WebP), MozJPEG, and Oxipng (PNG), running as WebAssembly in your browser<\/li>\n<li>Batch queue with per-image format, quality, and effort controls<\/li>\n<li>Resize images individually or all at once to the exact size needed<\/li>\n<li>Batch rename the whole set \u2014 base name plus automatic numbering<\/li>\n<li>Live before\/after comparison loupe<\/li>\n<li>Upload straight to the Media Library when you're ready<\/li>\n<li>No cloud API, no credits, no quotas \u2014 the work happens on your machine<\/li>\n<li>Your images stay private until you upload them to your own site<\/li>\n<\/ul>\n\n<p>Images are capped at 2560px on the longest edge before encoding \u2014 the same threshold WordPress core itself uses (<code>big_image_size_threshold<\/code>). Because the file you upload is already at or under that size, WordPress never generates its own separate <code>-scaled<\/code> copy: what you see in the editor is what ends up in your Media Library, one file, no server-side duplicate.<\/p>\n\n<h3>Credits<\/h3>\n\n<p>Squishify's WebAssembly encoders are provided via <a href=\"https:\/\/github.com\/jamsinclair\/jSquash\">jSquash<\/a> (MIT\/Apache-2.0), which wraps libavif (BSD-2-Clause), libwebp (BSD-3-Clause), MozJPEG (BSD-style), and Oxipng (MIT) \u2014 all GPL-compatible. The <code>.wasm<\/code> files are unmodified upstream builds.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>squishify<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip via Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open Media \u2192 Squishify, or click the Squishify button on the Media Library screen.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"are%20my%20images%20sent%20anywhere%20for%20processing%3F\"><h3>Are my images sent anywhere for processing?<\/h3><\/dt>\n<dd><p>No. All compression, conversion, and resizing happens locally in your browser. The only network transfer is the final upload of finished files to your own WordPress site.<\/p><\/dd>\n<dt id=\"what%20formats%20can%20it%20produce%3F\"><h3>What formats can it produce?<\/h3><\/dt>\n<dd><p>AVIF, WebP, JPEG (MozJPEG), and optimized PNG (Oxipng). AVIF uploads require WordPress 6.5+.<\/p><\/dd>\n<dt id=\"uploads%20fail%20with%20an%20error%20mentioning%20a%20security%20plugin%20or%20firewall\"><h3>Uploads fail with an error mentioning a security plugin or firewall<\/h3><\/dt>\n<dd><p>Some security hardening (Sucuri, ModSecurity, host firewalls) can block media uploads through the WordPress REST API before WordPress ever sees them. If uploads fail with that message, review your security plugin's hardening options or ask your host to allowlist REST media uploads (<code>\/wp-json\/wp\/v2\/media<\/code>). Squishify uses the same standard upload format as WordPress's own uploader.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20multisite%3F\"><h3>Does it work with multisite?<\/h3><\/dt>\n<dd><p>Yes. Squishify checks the standard <code>upload_files<\/code> capability on whichever site you're on, so it works whether the plugin is network-activated or activated per-site \u2014 no separate configuration either way.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20original%20files%3F\"><h3>What happens to my original files?<\/h3><\/dt>\n<dd><p>Nothing \u2014 Squishify never touches them. Everything happens in your browser on a copy of the image; your source file is only read, never modified. Only the optimized output you choose to upload leaves the editor, and only after you click Upload.<\/p><\/dd>\n<dt id=\"why%20is%20the%20first%20avif%20encode%20slower%20than%20the%20rest%3F\"><h3>Why is the first AVIF encode slower than the rest?<\/h3><\/dt>\n<dd><p>The AVIF encoder is a WebAssembly module that has to be downloaded and compiled by your browser the first time it's used in a session. After that one-time warmup, your browser caches the compiled module and subsequent encodes are much faster.<\/p><\/dd>\n<dt id=\"what%20browsers%20are%20supported%3F\"><h3>What browsers are supported?<\/h3><\/dt>\n<dd><p>Any current version of Chrome, Firefox, Safari, or Edge. All processing uses standard Web APIs (WebAssembly, Web Workers) with no browser-specific requirements.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Adding a batch now eases in: a brief loading pass, then your images arrive in the queue one after another \u2014 so you can see at a glance how many landed.<\/li>\n<li>The file heading now shows where you are in the queue (\"1 of 15\"), next to the filename and dimensions.<\/li>\n<li>\"Apply to all\" is now a checkbox on the main button instead of a second button competing with it \u2014 tick it and Next file becomes Finalize, which processes everything and takes you straight to the summary.<\/li>\n<li>Slimmer format and quality bar, leaving noticeably more room for the image you're actually working on.<\/li>\n<li>Images scaled down to the maximum working size are now reported once, with a count of how many were affected, instead of a separate notice per image.<\/li>\n<li>Notices and toasts no longer sit on top of dialogs.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Batch rename is now part of the free tier \u2014 give a whole set a base name and automatic numbering, no licence needed.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Fixed resized images looking softer or jagged compared to a desktop editor's export, especially on small or heavily cropped outputs \u2014 resizing now uses a sharper algorithm, with safeguards to keep large source photos fast.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Drag a whole folder of images onto the dropzone to queue everything inside it at once.<\/li>\n<li>SVG images now rasterize at a proper working size instead of their (often tiny) declared dimensions.<\/li>\n<li>Added an in-app \"what's new\" modal so you'll see a quick summary the next time a new version ships.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: guard against a file being added to the queue twice from a single drop\/select action.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release: editor overlay, batch queue, upload to Media Library.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First development release: editor overlay, batch queue, upload to Media Library.<\/li>\n<\/ul>","raw_excerpt":"Batch-resize, rename and compress a whole set of images at once, right in your browser \u2014 then upload only the finished files to your Media Library.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/344053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=344053"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/xcastaneda"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=344053"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=344053"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=344053"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=344053"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=344053"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=344053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}