OmniPixy Browser Image Compressor
OmniPixy Browser Image Compressor
Description
OmniPixy Browser Image Compressor compresses images in the administrator’s browser right before uploading them to WordPress. Unlike other plugins, your image is not sent to a third-party cloud for processing: compression happens locally and only the optimized version reaches your server.
Features
- Automatic compression, no extra steps: works when uploading images in the Media Library, the editor’s media modal and WooCommerce.
- 100% local processing in the browser: your original image is not sent to any external service.
- Keeps the original format (JPEG/PNG) for maximum compatibility with themes and WooCommerce.
- Never makes it heavier: if recompression doesn’t reduce size, the original file is kept.
- Quality control (1-100) and minimum size to recompress.
- Optional WebP conversion with automatic fallback to the original format.
- Max width/height resizing before compressing.
- Automatic EXIF orientation fix and optional forced EXIF/GPS strip.
- Savings notice after each upload.
- Toggle to enable/disable compression.
- Reprocess library: recompress the images you already uploaded with the saved settings, one by one, with an optional zip of the originals.
- Optimize or convert selected images: pick images from the Media Library and recompress them or change their format, updating the old URLs in your posts.
Privacy
This plugin does not collect data, create accounts or call any external server. All processing happens in the administrator’s browser.
Guide and more tools
Step-by-step usage guide: Free WordPress plugin to compress images without third-party services. More free tools that run in your browser (compress, convert, resize, remove EXIF) at omnipixy.com.
Installation
- Upload the
omnipixy-browser-image-compressorfolder to/wp-content/plugins/. - Activate the plugin from the “Plugins” menu.
- Adjust settings in “Media” “OmniPixy”.
Screenshots
Faq
JPEG, PNG and WebP are compressed. By default every upload is tried in its own format and in WebP, and the lightest one is kept (a PNG only gets lighter as WebP). You can also pick images in Media > OmniPixy and optimize or convert them; if the format changes, the URLs in your posts are updated. Animated GIFs and SVGs are never touched. HEIC and AVIF are not supported yet.
JPEG compression uses a configurable quality factor (80% by default) and only applies if the result is lighter than the original (or if forced EXIF strip is enabled). Lower quality means a smaller file and less detail.
PHP 8.3 or newer. PHP 8.2 reaches end of life on 31 December 2026. On 21 October 2026 the PHP project released fixes for two critical remote code execution vulnerabilities (CVE-2026-109618 and CVE-2026-109619, “php2shell”) in PHP 8.2.35, 8.3.36, 8.4.27 and 8.5.12. PHP 8.1 and older receive no official releases; the PHP team published source backports for 7.4, 8.0 and 8.1, and some Linux distributions ship patched packages. If your site runs an unpatched version, update PHP or ask your host. This plugin cannot protect you from a vulnerability in PHP itself, because those flaws are reached before any plugin code runs.
Yes. WooCommerce uses the same WordPress media uploader, so it inherits this compression.
Yes. Originals are replaced and thumbnails regenerated; there is no undo. Make a backup first. Only the main image file is rewritten: when WordPress keeps an unscaled original (large images), that extra file is left untouched, except when the format changes (PNG to WebP), where the unscaled original is removed as well. The optional originals zip is built in browser memory (may fail on multi-GB libraries), is lost if you close the tab mid-way, and does not restore anything by itself. Images served from another domain (CDN) may fail to download. Processing is one image at a time.
Reviews
Changelog
0.4.7
- Improved: the savings notice now shows the quality used (“OmniPixy saved 2.629 KB · quality 45%”). If a setting stops working, you see it on the first upload.
- Improved: settings are passed to the browser with their real types (number, boolean) instead of text, so this kind of bug can’t come back.
- Improved: PHP 8.3+ is now recommended, and the FAQ explains the php2shell fixes (CVE-2026-109618 / CVE-2026-109619) and which PHP versions are patched.
- Improved: translatable strings use standard gettext placeholders, and the HTML in the footer goes through
wp_kses. - Added: a smoke test (25 assertions) and a version check that runs on every commit, so a release can’t ship with mismatched versions again.
0.4.6
- Fixed: the Quality setting had no effect, everything was compressed at 80%. WordPress turns every value passed to the browser into text, so the quality never arrived as a number.
- Fixed: the reprocess now generates the thumbnails before deleting the original file, so a failure can no longer leave an attachment without a file.
- Fixed: removing EXIF from an image could report negative savings.
- Fixed: plural forms in the reprocess and selection messages (“1 image” instead of “1 images”).
- Improved: the upload error is reported as such instead of “not a valid image”.
- Improved: the nonce is renewed during long reprocess runs, and the server upload size limit is enforced.
- Improved: the excerpt of posts is updated too when image URLs are rewritten.
- Fixed: numbers in the notices use the separator of your language.
- Improved: clearer wording in the settings panel.
0.4.5
- Fixed: “Always convert to WebP” had no effect while “lightest format” (on by default) was enabled; it now takes priority.
- Fixed: leaving Quality empty saved 1%; it now falls back to 80.
- Fixed: “Reprocess library” ignored the minimum size setting.
- Hardened: the reprocess endpoint now refuses attachments that are not images.
0.4.4
- Fixed: animated PNG and animated WebP files are no longer recompressed (the canvas kept only one frame).
- Fixed: the “lightest format” option is now removed when the plugin is deleted.
0.4.3
- Improved: “Reprocess library” now loads the image list in pages, so large libraries no longer build one huge query.
- Fixed: singular wording in the reprocess confirmation (“1 image”).
0.4.2
- New: link to the usage guide on the Plugins screen and in the settings page footer.
0.4.1
- New: automatic lightest format on upload (original vs WebP, the smaller one is kept); WebP files are recompressed too.
- New: optimize or convert selected images from Media > OmniPixy; when the format changes, old URLs in posts and pages are rewritten.
- Renamed to OmniPixy Browser Image Compressor; translations now come from translate.wordpress.org.
0.4.0
- New: “Reprocess library” button recompresses images already in the Media Library (browser-side, keeps format, regenerates thumbnails).
- Fixed: panel CSS missing when compression was disabled; duplicate “uploading…” placeholder; negative savings notice.
- Fixed: images larger than the server upload limit are now compressed instead of rejected before the plugin could run (Media Library, Add Media File page and block editor).
- Fixed: classic “Add Media File” page and Gutenberg direct uploads (REST) are now covered.
- Redesigned settings page to match omnipixy.com (light/dark switch, progress bar).
- Reprocess uses WP_Filesystem and only removes old thumbnails after the new file is written; plugin slug is now omnipixy-browser-image-compressor.
- Fixed: reprocess no longer marks an image as done when it can’t be downloaded (HTTP errors now count as errors); the upload queue can’t stay paused if compressing fails.
- Reprocess remembers which settings it used: changing quality or max size makes images pending again. Download timeout (30 s) and clearer error reasons.
- Max width/height capped at 20000 px; the file types filter is sanitized; the upload size limit is lifted on each uploader instance too.
- Accessibility: theme switch and progress bar announce their state.
0.3.1
- i18n: English as source language; Spanish translation (es_ES) bundled. Plugin now follows the WordPress site language (English by default; Spanish when locale is es_ES).
0.3.0
- Max width/height resizing before upload.
- Automatic EXIF orientation fix (portrait photos).
- Forced EXIF/GPS strip even without compression.
0.2.3
- Fixed: unchecked checkboxes weren’t saved; README limitations updated.
0.2.2
- Covered the second WordPress upload path: Gutenberg Image block that uploads directly to the REST API (without going through plupload).
0.2.1
- Fixed infinite loop when file doesn’t improve (e.g. PNGs or already compressed images).
- Complete cleanup of all registered options on uninstall in uninstall.php.
- Numeric array normalization for filtered MIME types.
- Visual identity fixes: SVG brand icon,
<h1>heading and cards aligned with the official site.
0.2.0
- Quality and minimum size controls from the panel.
- Optional WebP conversion with fallback to original.
- Cumulative savings notice after upload.
0.1.0
- Initial version: intercepts upload with plupload and compresses JPEG/PNG in the browser before sending to the server.


