Title: Spinix Image Optimization
Author: Muheyuddin
Published: <strong>November 3, 2026</strong>
Last modified: November 4, 2026

---

Search plugins

![](https://ps.w.org/spinix-image-optimization/assets/banner-772x250.png?rev=3782094)

![](https://ps.w.org/spinix-image-optimization/assets/icon-256x256.png?rev=3782094)

# Spinix Image Optimization

 By [Muheyuddin](https://profiles.wordpress.org/muheyu/)

[Download](https://downloads.wordpress.org/plugin/spinix-image-optimization.1.1.0.zip)

 * [Details](https://wordpress.org/plugins/spinix-image-optimization/#description)
 * [Reviews](https://wordpress.org/plugins/spinix-image-optimization/#reviews)
 *  [Installation](https://wordpress.org/plugins/spinix-image-optimization/#installation)
 * [Development](https://wordpress.org/plugins/spinix-image-optimization/#developers)

 [Support](https://wordpress.org/support/plugin/spinix-image-optimization/)

## Description

Spinix Image Optimization makes your images smaller and your pages faster, right
on your own server. Every image is compressed and served as WebP whenever that makes
it smaller, the first images on each page load right away while the rest are lazy-
loaded, and the hero image gets priority. Your original files are never changed.

Spinix Image Optimization is developed and maintained by [Spinix Technologies Ltd](https://spinixtechnologies.com),
a UK company.

It fixes these PageSpeed Insights warnings:

 * **Serve images in next-gen formats.** Every JPEG and PNG is converted to WebP(
   the original is kept in the rare case it is already smaller).
 * **Efficiently encode images / Increase the compression factor.** Smart compression
   finds the right quality for each image automatically.
 * **Largest Contentful Paint image was lazily loaded.** The first images on a page
   are never lazy-loaded, and the hero image gets `fetchpriority="high"`.
 * **LCP request discovery / fetchpriority=high should be applied.** When the hero
   is a CSS background image (for example an Elementor section background), it is
   preloaded in the page head with high priority, so the browser finds it right 
   away.
 * **Image elements do not have explicit width and height.** Missing dimensions 
   are added to prevent layout shift.

#### Your originals are safe

All optimized files are written to a separate folder, `spinix-webp`, inside your
uploads folder. Your original uploads are never changed. Switch delivery off, pause,
deactivate or delete the plugin, and your site goes straight back to the original
images.

#### Fast

Images are encoded directly with GD or Imagick (whichever your server has). Each
image is read once, the right quality is found in memory before anything is written,
and the bulk optimizer processes several images in parallel. Progress, time per 
image and images per minute are shown live on the dashboard.

#### Features

 * Automatic optimization of every new upload
 * Background bulk optimization of your existing library, starting the moment you
   activate the plugin
 * Three compression levels: Smart (recommended), Smallest files and Best quality
 * PageSpeed-safe compression that stays above a safe quality floor
 * WebP delivery with `<picture>` tags (automatic fallback) or direct URL replacement
 * WebP for CSS background images, including page builder CSS files (Elementor and
   others)
 * Smart lazy loading that never delays the first images on the page
 * Hero image priority for a better LCP: automatic on every page, works for normal
   images and background images, with an optional manual choice per page
 * Missing width and height added to prevent layout shift (CLS)
 * Works with page caching plugins and CDNs (no server rewrite rules required)
 * Plays well with WP Rocket, Elementor and other plugins that also lazy-load or
   prioritize images: you choose which plugin does it, so nothing is done twice
 * Images list with status, savings, time taken and the reason for any image that
   could not be optimized
 * Media Library column with savings per image, optimize again or serve the original
 * Exclusions by file name, class or folder
 * Pause and resume, plus a choice to keep or delete all data when you deactivate
 * WP-CLI: `wp spinix-images optimize`, `wp spinix-images status`, `wp spinix-images
   reset`

### External services

This plugin does not connect to any external service. All images are processed on
your own server, nothing is sent anywhere and nothing is tracked.

The dashboard has a “Test on PageSpeed” button. Only when you click it, a new browser
tab opens Google PageSpeed Insights (https://pagespeed.web.dev/) with your site’s
home page address, so that you can test your site there. Google’s terms: https://
policies.google.com/terms, privacy policy: https://policies.google.com/privacy.

### Source code

All JavaScript and CSS in this plugin is the original, unminified source code. There
are no build tools, no compiled files and no third-party libraries.

## Screenshots

[⌊Dashboard: library progress, live speed timer, savings and PageSpeed boosters.⌉⌊
Dashboard: library progress, live speed timer, savings and PageSpeed boosters.⌉[

Dashboard: library progress, live speed timer, savings and PageSpeed boosters.

[⌊Images: every image with its status, savings, time taken and the reason for any
failure.⌉⌊Images: every image with its status, savings, time taken and the reason
for any failure.⌉[

Images: every image with its status, savings, time taken and the reason for any 
failure.

[⌊Settings: compression level, WebP delivery, Core Web Vitals and exclusions.⌉⌊Settings:
compression level, WebP delivery, Core Web Vitals and exclusions.⌉[

Settings: compression level, WebP delivery, Core Web Vitals and exclusions.

[⌊Tools: server and plugin compatibility checks, retry, re-optimize and delete.⌉⌊
Tools: server and plugin compatibility checks, retry, re-optimize and delete.⌉[

Tools: server and plugin compatibility checks, retry, re-optimize and delete.

[⌊Deactivation: keep your data, delete everything, or just pause.⌉⌊Deactivation:
keep your data, delete everything, or just pause.⌉[

Deactivation: keep your data, delete everything, or just pause.

[⌊Spinix hero image box in the page editor: automatic, choose the hero image yourself,
or switch it off for a page.⌉⌊Spinix hero image box in the page editor: automatic,
choose the hero image yourself, or switch it off for a page.⌉[

Spinix hero image box in the page editor: automatic, choose the hero image yourself,
or switch it off for a page.

## Installation

 1. Install the plugin from Plugins  Add New (search for “Spinix Image Optimization”)
    or upload the ZIP file, then activate it.
 2. Open **Spinix Image Optimization** in the admin menu.
 3. Your existing images are optimized in the background right away. New uploads are
    optimized automatically.

Your server needs WebP support in the GD or Imagick PHP extension. The Tools tab
shows whether it is available.

## FAQ

### What happens to my images if I remove the plugin?

Nothing. Your original images are never modified. Optimized copies live in the `
spinix-webp` folder inside your uploads folder. When you delete the plugin, that
folder and all plugin settings are removed (you can turn this off under Settings
When you uninstall).

### My server says WebP is not supported

Ask your hosting company to enable WebP support in the GD or Imagick PHP extension.
Most hosts can switch it on in a minute. The Tools tab shows exactly what is missing.

### Does it work with caching plugins and CDNs?

Yes. The WebP markup is written into the page itself, so cached pages and CDNs serve
it like any other HTML. Clear your page cache after the first bulk optimization.

### Another plugin also lazy-loads images or prioritizes the hero image. Is that a problem?

No. Spinix Image Optimization detects WP Rocket, Elementor, Perfmatters, FlyingPress,
Autoptimize, LiteSpeed Cache and other common plugins and lets you choose which 
plugin handles lazy loading and the hero image, so nothing is done twice.

### Can I use it together with another image optimizer?

Two image optimizers on one site convert and rewrite the same images and break each
other. Spinix Image Optimization therefore asks you to deactivate the other optimizer
first, and pauses itself if one is activated later.

### How does hero image priority work? Automatic or manual?

**Automatic** (the default, on every page): Spinix looks below your site header 
and takes the first large image or background image. A normal image gets `fetchpriority
="high"` and is never lazy-loaded. A background image (Elementor, other page builders,
inline styles) is preloaded in the page head with `fetchpriority="high"`, with a
separate image for phones and tablets if your design uses one. Only this image gets
priority, so other images no longer compete with it.

**Manual** (optional, per page): if PageSpeed Insights shows another image as the“
Largest Contentful Paint element”, open that page in the editor and use the **Spinix
hero image** box in the sidebar. Choose the right image, or switch hero priority
off for that page. Pages you do not change stay automatic.

You can see what Spinix chose at the end of the page source: `<!-- ... hero image
= ... -->`.

### How can I compare a page with and without optimization?

Add `?spinix_io=off` to the end of any page address. That page is then shown without
Spinix Image Optimization.

### Why are some images not served as WebP?

Spinix serves a WebP version only when it is really smaller than the original. Most
photos become 40-80% smaller, but a few images do not: very small icons, simple 
graphics with only a few colours, or JPEGs that were already compressed very hard.
For these, the WebP would be the same size or even bigger, and simple graphics can
lose sharpness. Spinix therefore keeps serving the original, which is already the
smallest file, and shows “Already optimal · Original kept”.

This does not cost you anything in PageSpeed Insights. Google only flags an image(“
Improve image delivery” / “Serve images in next-gen formats”) when converting it
would save a meaningful number of bytes, so an image that WebP cannot make smaller
is not flagged.

### Which images are optimized?

JPEG, PNG and WebP images in the Media Library, including all sizes WordPress creates.
GIF files are left as they are so animations are kept, and SVG files are left untouched.

### Does Spinix Image Optimization send my data anywhere?

No. All images are optimized on your own server. The plugin does not contact any
external service, does not track you and collects no data. The “Test on PageSpeed”
button only opens Google PageSpeed Insights in a new browser tab with your home 
page address when you click it.

### Are there hooks for developers?

 * `spinix_io_webp_quality` (int 1-100) – WebP quality.
 * `spinix_io_target_bytes_per_pixel` (float, default 0.085) – target for PageSpeed-
   safe compression.
 * `spinix_io_mime_types` (array) – image types to optimize.
 * `spinix_io_exclude_image` (bool, string $tag) – leave an image untouched.
 * `spinix_io_process_page` (bool) – skip optimization on a page.
 * `spinix_io_optimize_inline` (bool) – return false to optimize uploads in the 
   background instead of during the upload.
 * `spinix_io_fast_encoder` (bool) – return false to always use the WordPress image
   editor.
 * `spinix_io_cron_time_budget` (int seconds) – work per background run.
 * `spinix_io_write_htaccess` (bool) – return false to skip the .htaccess file with
   cache headers in the `spinix-webp` folder.
 * `spinix_io_lookup_unknown_images` (bool) – find images without a `wp-image-ID`
   class by their file name.
 * `spinix_io_hero` (array $choice, int $post_id) – change the hero choice of a 
   page: `array( 'mode' => 'auto'|'image'|'off', 'id' => attachment ID )`.
 * `spinix_io_optimized` (action, int $id, array $data) – after an image was optimized.
 * `spinix_io_before_optimize` (action, int $id) – before an image is optimized.
 * `spinix_io_image_row` (array $row, int $id), `spinix_io_media_status_html` (string
   $html, int $id) – extend the Images list and the Media Library column.
 * `spinix_io_admin_settings` (array), `spinix_io_settings_saved` (action, array
   $input) – add settings to the Settings tab (saved with the same Save button).
 * `spinix_io_admin_tabs`, `spinix_io_admin_panels`, `spinix_io_admin_dashboard`,`
   spinix_io_admin_settings_sections`, `spinix_io_admin_tools`, `spinix_io_admin_checklist`(
   actions) – add parts to the screen. In JavaScript, `window.spinixIo` offers `
   addFilter( 'hero' | 'rowFormats' | 'rowActions', fn )` and `on( 'render' | 'rows'
   | 'row' | 'saved' | 'response', fn )`.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Spinix Image Optimization” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ Muheyuddin ](https://profiles.wordpress.org/muheyu/)

[Translate “Spinix Image Optimization” into your language.](https://translate.wordpress.org/projects/wp-plugins/spinix-image-optimization)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/spinix-image-optimization/),
check out the [SVN repository](https://plugins.svn.wordpress.org/spinix-image-optimization/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/spinix-image-optimization/)
by [RSS](https://plugins.trac.wordpress.org/log/spinix-image-optimization/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.0

 * New: hooks for add-ons, so extensions (such as Spinix Image Optimization Pro)
   appear on the same screen, in the same tabs and with the same Save button.
 * New: a “Pro” tab that explains what the optional Pro add-on adds. It disappears
   when Pro is installed. Nothing in the free plugin is locked or limited.
 * New: a one-time, dismissible review request on the plugin’s own screen after 
   it has optimized your images for a week.

#### 1.0.0

 * Initial release.
 * Compression and WebP conversion of every new upload and of the existing library,
   with originals kept untouched. A WebP is served only when it is smaller than 
   the original.
 * Fast direct encoder (GD or Imagick) with in-memory quality search, and parallel
   bulk optimization with a live speed timer.
 * WebP delivery with `<picture>` tags or direct URL swap, including CSS background
   images and page builder CSS files.
 * Hero image priority for a better LCP: automatic detection below the site header
   for normal images and background images (Elementor and other page builders), 
   preloaded per device, plus a “Spinix hero image” box in the page editor to choose
   the hero image yourself or switch it off for a page.
 * Smart lazy loading and missing width/height for better Core Web Vitals.
 * Detection of other image optimizers and of plugins that also lazy-load or prioritize
   images.
 * Images list, Media Library column, exclusions, pause/resume, WP-CLI commands.

## Meta

 *  Version **1.1.0**
 *  Last updated **12 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [compress images](https://wordpress.org/plugins/tags/compress-images/)[core web vitals](https://wordpress.org/plugins/tags/core-web-vitals/)
   [image optimization](https://wordpress.org/plugins/tags/image-optimization/)[lazy load](https://wordpress.org/plugins/tags/lazy-load/)
   [webp](https://wordpress.org/plugins/tags/webp/)
 *  [Advanced View](https://wordpress.org/plugins/spinix-image-optimization/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/spinix-image-optimization/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/spinix-image-optimization/reviews/)

## Contributors

 *   [ Muheyuddin ](https://profiles.wordpress.org/muheyu/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/spinix-image-optimization/)