{"id":256153,"date":"2025-10-19T16:33:27","date_gmt":"2025-10-19T16:33:27","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/imgoptimizer\/"},"modified":"2026-09-27T16:00:59","modified_gmt":"2026-09-27T16:00:59","slug":"imgsmaller","status":"publish","type":"plugin","link":"https:\/\/arg.wordpress.org\/plugins\/imgsmaller\/","author":22038821,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.1","stable_tag":"1.1.1","tested":"7.1.2","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"ImgSmaller - Optimize Images | Compress Images | Convert WebP & AVIF","header_author":"ImgSmaller","header_description":"Compress and optimize WordPress media library images using the ImgSmaller API with automated backups and restore controls.","assets_banners_color":"f1f1ea","last_updated":"2026-09-27 16:00:59","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/imgsmaller.com","header_plugin_uri":"","header_author_uri":"https:\/\/imgsmaller.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":459,"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":"subarnadip","date":"2025-10-19 17:45:20","revision":3380918},"1.1.0":{"tag":"1.1.0","author":"subarnadip","date":"2026-09-27 10:55:50","revision":3715360},"1.1.1":{"tag":"1.1.1","author":"subarnadip","date":"2026-09-27 16:00:59","revision":3715698}},"upgrade_notice":{"1.1.1":"<p>Fixes compression result downloads for the updated authenticated API. Select Start Compression to retry failed images with new jobs.<\/p>","1.1.0":"<p>Recommended security, data-integrity, WordPress compatibility, and background-processing update. Exported backup ZIPs now require a same-site manifest.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3380889,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3380889,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3380889,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3380889,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.1.0","1.1.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3380889,"resolution":"1","location":"assets","locale":"","width":1891,"height":848},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3380889,"resolution":"2","location":"assets","locale":"","width":1907,"height":856},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3380889,"resolution":"3","location":"assets","locale":"","width":1912,"height":857},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3380889,"resolution":"4","location":"assets","locale":"","width":1903,"height":875}},"screenshots":{"1":"Dashboard with plan, usage, settings, and compression actions.","2":"Compression progress, metrics, and activity log.","3":"Searchable exclusion and failed-image browsers.","4":"Backup export\/import and bulk or selected restore tools."}},"plugin_section":[],"plugin_tags":[194661,163,233,247,15376],"plugin_category":[50,54],"plugin_contributors":[232585],"plugin_business_model":[],"class_list":["post-256153","plugin","type-plugin","status-publish","hentry","plugin_tags-avif","plugin_tags-images","plugin_tags-media-library","plugin_tags-performance","plugin_tags-webp","plugin_category-media","plugin_category-security-and-spam-protection","plugin_contributors-subarnadip","plugin_committers-subarnadip"],"banners":{"banner":"https:\/\/ps.w.org\/imgsmaller\/assets\/banner-772x250.png?rev=3380889","banner_2x":"https:\/\/ps.w.org\/imgsmaller\/assets\/banner-1544x500.png?rev=3380889","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/imgsmaller\/assets\/icon-128x128.png?rev=3380889","icon_2x":"https:\/\/ps.w.org\/imgsmaller\/assets\/icon-256x256.png?rev=3380889","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/imgsmaller\/assets\/screenshot-1.png?rev=3380889","caption":"Dashboard with plan, usage, settings, and compression actions."},{"src":"https:\/\/ps.w.org\/imgsmaller\/assets\/screenshot-2.png?rev=3380889","caption":"Compression progress, metrics, and activity log."},{"src":"https:\/\/ps.w.org\/imgsmaller\/assets\/screenshot-3.png?rev=3380889","caption":"Searchable exclusion and failed-image browsers."},{"src":"https:\/\/ps.w.org\/imgsmaller\/assets\/screenshot-4.png?rev=3380889","caption":"Backup export\/import and bulk or selected restore tools."}],"raw_content":"<!--section=description-->\n<p>ImgSmaller connects your site to the ImgSmaller API and optimizes Media Library images in small background batches. Original-format output is the default, so existing media URLs remain unchanged. WebP, AVIF, JPEG, and PNG conversion are also available when the server's WordPress image editor supports the selected format.<\/p>\n\n<p>Key features:<\/p>\n\n<ul>\n<li>Background compression through WP-Cron, with an optional authenticated external-cron URL.<\/li>\n<li>Original, WebP, AVIF, JPEG, and PNG output options.<\/li>\n<li>Automatic original-image backups, bulk or selected restore, and cancellation-safe restore jobs.<\/li>\n<li>Backup export\/import and optimized-replacement ZIP import with archive safety checks.<\/li>\n<li>Searchable exclusions and failed-image browsers.<\/li>\n<li>Current-plan usage, billing-cycle quota, allowed-domain management, and automatic retry after API throttling.<\/li>\n<li>Short-lived signed media proxy URLs when ImgSmaller cannot fetch a public attachment URL directly.<\/li>\n<li>Activity logs and live compression\/restore progress.<\/li>\n<\/ul>\n\n<p>Backups are kept in a randomized directory below WordPress uploads and protected with server configuration files where supported. Backup archives include a site identity manifest and can only be imported back into the same WordPress installation. Archives made before version 1.1.0 do not contain this manifest and cannot be imported by version 1.1.0.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the ImgSmaller service at https:\/\/imgsmaller.com to compress images and obtain account information.<\/p>\n\n<p>When compression is running, the plugin sends your API key, compression settings, and either an attachment's public URL or a short-lived signed proxy URL. ImgSmaller fetches the image, processes it, and returns status and download information. The plugin then downloads the optimized image.<\/p>\n\n<p>When the dashboard loads account information or you manage allowed domains, the plugin sends authenticated requests for plan usage, available plans, service information, and the allowed-domain list. Saving domains replaces that list with the submitted hostnames.<\/p>\n\n<p>Terms of Service: https:\/\/imgsmaller.com\/terms<\/p>\n\n<p>Privacy Policy: https:\/\/imgsmaller.com\/privacy<\/p>\n\n<p>Do not enter an API key or start compression if you do not want this data sent to ImgSmaller.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin ZIP through Plugins -&gt; Add New -&gt; Upload Plugin, or copy the plugin folder into <code>wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate ImgSmaller.<\/li>\n<li>Open ImgSmaller in WordPress administration.<\/li>\n<li>Enter an ImgSmaller API key and select Connect.<\/li>\n<li>Add your hostname to the account's Allowed Domains if it is not already covered by an allowed parent domain.<\/li>\n<li>Review output, target-size, backup, and exclusion settings, then select Start Compression.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"are%20backups%20required%3F\"><h3>Are backups required?<\/h3><\/dt>\n<dd><p>No, but they are strongly recommended. Restore and backup export require stored originals.<\/p><\/dd>\n<dt id=\"will%20it%20work%20on%20private%20or%20protected%20sites%3F\"><h3>Will it work on private or protected sites?<\/h3><\/dt>\n<dd><p>The plugin can retry with a short-lived signed media URL. ImgSmaller still needs network access to your site, so a firewall, maintenance mode, or HTTP authentication can prevent remote fetching.<\/p><\/dd>\n<dt id=\"how%20does%20quota%20handling%20work%3F\"><h3>How does quota handling work?<\/h3><\/dt>\n<dd><p>The dashboard reads the authenticated plan's billing-cycle limit and usage. New jobs stop when that plan quota is exhausted or the API returns HTTP 429, then resume after the reported renewal or retry time.<\/p><\/dd>\n<dt id=\"can%20i%20restore%20specific%20images%3F\"><h3>Can I restore specific images?<\/h3><\/dt>\n<dd><p>Yes. The Backup &amp; Restore page can restore all valid backups or a selected set. Restored items stay in a restored state until Start Compression is selected again.<\/p><\/dd>\n<dt id=\"does%20it%20support%20avif%20and%20webp%3F\"><h3>Does it support AVIF and WebP?<\/h3><\/dt>\n<dd><p>Yes, when WordPress reports that the server image editor can process the selected format. Format conversion changes the attachment URL; Original output keeps the existing extension and URL.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20uninstall%20the%20plugin%3F\"><h3>What happens when I uninstall the plugin?<\/h3><\/dt>\n<dd><p>Uninstall removes ImgSmaller settings, status, attachment metadata, schedules, operation state, and the plugin-managed backup directory. Export any backups you need before uninstalling.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fix authenticated optimized-image downloads by sending X-API-Key on submission, polling, and download requests.<\/li>\n<li>Use the current \/api\/v1\/result\/ endpoint when constructing a polling URL from a progress key.<\/li>\n<li>Send the ImgSmallerClient\/1.0 User-Agent and JSON Accept header for compression API requests.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Compatibility: tested with WordPress 7.1 and modern PHP while retaining PHP 7.4 support.<\/li>\n<li>Security: require administrator capability and nonces for administration actions; never expose the API key to dashboard JavaScript or page markup.<\/li>\n<li>Security: replace reusable file-proxy tokens with short-lived HMAC signatures and restrict files to image attachments inside uploads.<\/li>\n<li>Security: validate API hosts, redirects, downloaded image content, upload archives, paths, sizes, and backup manifests.<\/li>\n<li>Reliability: add source-file identity checks, bounded batching, retry backoff, remote-job expiry, trusted result handling, and atomic operation locking.<\/li>\n<li>Reliability: make replacement and restore writes rollback-safe and prevent restores from overwriting externally modified files.<\/li>\n<li>Lifecycle: cleanly remove schedules, options, attachment metadata, and protected backups when deactivating or uninstalling on single-site and multisite installations.<\/li>\n<li>Restore: add generation-scoped, cancellation-safe background jobs with accurate live and cron progress.<\/li>\n<li>Backups: use randomized protected storage, portable relative metadata, same-site manifests, and source\/target hashes.<\/li>\n<li>Settings: default to Original output, detect unsupported conversion formats, preserve saved keys when fields are blank, and add explicit key removal.<\/li>\n<li>Plan handling: use billing-cycle plan limits and API retry timing instead of the informational daily counter.<\/li>\n<li>UI: correct filtered pagination, final-page loading, backup notices, allowed-parent-domain checks, and secret masking.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Prevent direct access to view files.<\/li>\n<li>Clean up plugin headers and external-service documentation.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Compress WordPress Media Library images through ImgSmaller with background processing, protected backups, and safe restore controls.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/256153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=256153"}],"author":[{"embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/subarnadip"}],"wp:attachment":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=256153"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=256153"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=256153"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=256153"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=256153"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=256153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}