Heavy JPG and PNG files slow every page down. NibblePic converts your images to WebP the moment you upload them, uses the fastest converter your server actually has, and only ever serves a WebP file it has confirmed exists, so a visitor never gets a broken image.
A single page can load a hero photo, a row of thumbnails, product shots and a logo, and WordPress saves every one of them in several sizes. When those files are JPG or PNG, visitors download more than they need to, and page speed and Core Web Vitals suffer for it.
NibblePic converts your images to WebP, a smaller modern format that every current browser supports, and swaps it in automatically wherever WordPress shows the image. It works out which converter your server can really run, checks it with a real test, and stays out of the way of everything else on your site.
NibblePic is a clean, focused WordPress image plugin that converts your JPG and PNG images to WebP automatically when they are uploaded. It tests which converter your server can genuinely run, including the cwebp command line tool, the Imagick extension and PHP's built-in GD library, and uses the best one, with nothing for you to configure.
It hooks into the image URLs WordPress itself builds, including the responsive srcset lists, and swaps in the WebP file only when that file exists and NibblePic created it. It never buffers your page output, so it stays out of the way of caching plugins that do.
It also looks after itself: it re-checks your server after plugin, theme and WordPress updates, steps a converter down automatically if it starts failing on real files, and tracks every file it creates in its own table, so it only ever deletes files it made.
On activation, NibblePic tests each WebP converter your host might offer and uses the best one that passes, in this order:
Google's command line WebP encoder. NibblePic finds the binary, confirms your host allows running it, then converts a tiny throwaway image as a real test before trusting it. Because cwebp runs as its own process, it also sits outside PHP's memory limit.
The Imagick PHP extension. Being installed is not enough, because many hosts ship it without WebP support built in, which can crash on a real conversion. NibblePic checks that the extension is loaded, that it lists WebP as a supported format, and that a real test conversion succeeds.
PHP's built-in image library, present on most shared hosting. If it can write WebP, NibblePic uses it as the dependable baseline.
If your server can't write WebP at all, an admin notice tells you so, and your site keeps serving your original images exactly as before.
The result is remembered for 24 hours and checked again after activation, after any plugin, theme or WordPress update, and whenever you click Re-check environment on the settings screen.
Every one of these is in the current version, not a roadmap item, and not gated behind a paid tier.
The converter picked at detection time is a starting point, not a blind commitment. If it fails on a real file, NibblePic falls back to the next best converter for that one image.
Before Imagick or GD touches an image, NibblePic reads just the file header, estimates how much memory the conversion needs and compares it with your PHP memory limit. If it won't fit, the image is skipped with a clear status instead of causing a fatal error. cwebp is exempt from this check because it runs outside PHP entirely.
Once WordPress has generated its thumbnails, NibblePic converts the original image and every size. Each WebP file is saved in the same folder as its source, with a _nibble_pic_.webp ending, for example banner-800x600.jpg becomes banner-800x600_nibble_pic_.webp.
NibblePic reads the actual contents of each file to decide what it is, so a renamed file can't slip through. Only genuine JPEG and PNG images are ever touched.
Click Convert All and NibblePic works through your existing Media Library in small batches of five, with a live progress bar. It runs the same conversion code as a normal upload, not a separate shortcut.
NibblePic swaps URLs through WordPress's own image functions, covering single images, responsive srcset lists and attachment URLs. A WebP URL is returned only if the file exists and NibblePic's own records confirm it made it. In every other case, the original URL is left completely untouched.
NibblePic keeps its own record of every WebP file it makes. That record, not a guess based on the file name, decides what is safe to delete. When you delete an image from the Media Library, its WebP copies, records and CDN copy go with it.
If Smush, EWWW Image Optimizer, LiteSpeed Cache or ShortPixel is already serving WebP, running two converters helps nobody. NibblePic checks whether those plugins are active and actually serving WebP, using their real server rules and settings.
Paste a Bunny.net API key and NibblePic sets up the Storage Zone and Pull Zone for you, then serves your WebP files from Bunny's global network. There is no DNS or custom hostname setup, because NibblePic uses Bunny's default .b-cdn.net address.
Deactivating NibblePic deletes nothing, so your settings, converted files and CDN connection all survive a deactivate and reactivate. Only deleting the plugin cleans up, and a remove data on uninstall checkbox controls whether your converted files, its records table and the Bunny zones it created are removed too.
One settings screen, with its styles and script loaded only on that screen and nowhere else in the admin. Nothing is added to your public pages. Every admin action is protected by a security nonce and a permission check.
No dashboard tour required. This is the entire mental model.
NibblePic checks what the file really is, not just what its name says.
After WordPress makes its thumbnails, the original and each size get a WebP copy saved beside them.
If you connected Bunny, a background task uploads each file, without slowing your upload.
WebP is served only when it is confirmed to exist. Otherwise the original loads, so an image never breaks.
There is no paid tier of NibblePic holding features back. This is what installing it actually gets you.
| Capability | NibblePic | Typical Free Plugins | Typical Paid or Cloud Services |
|---|---|---|---|
| Tests each converter with a real conversion before trusting it | ✓ | Often just checks the extension exists | Varies |
| Supports cwebp, Imagick and GD | ✓ | Often one or two | Often converts on the vendor's servers |
| Falls back automatically if the chosen converter fails | ✓ | Varies | Varies |
| Checks memory before in-process conversion | ✓ | Rarely | Varies |
| Converts every thumbnail size | ✓ | Usually | ✓ |
| One-click, resumable bulk conversion | ✓ | Varies | ✓ |
| Serves WebP only after confirming the file exists | ✓ | Varies | Varies |
| Detects other WebP plugins and pauses itself | ✓ | Rarely | Varies |
| Optional CDN offload with automatic zone setup | ✓ | Rarely | Often a separate add-on |
| Only deletes files it created, tracked in its own table | ✓ | Varies | Varies |
| Image quotas or credits | None | Usually none | Common |
| Price | Free | Free | Subscription or credits |
There is no setup wizard. Everything after the first step is optional.
From the WordPress Plugins screen, or by uploading the plugin's .zip file directly. NibblePic needs PHP 8.0 or newer.
On activation, NibblePic tests your server and picks the best converter. Every JPG and PNG you upload from now on is converted automatically.
Open NibblePic in the WordPress admin menu and click Convert All. You can close the tab at any time and continue later.
Paste your Bunny.net API key on the NibblePic settings screen. NibblePic creates the Storage Zone and Pull Zone for you.
NibblePic is completely free, open-source, and built without hidden paywalls or bloated features. If it helped lighten your pages and speed up your site, consider supporting our ongoing development to keep it that way!
Yes. Every feature described on this page is included with the free plugin, with no license key and no feature paywall.
The only thing that costs money is optional and external: if you choose to connect Bunny CDN, that is a third-party service with its own pricing, entirely separate from NibblePic itself.
JPEG (JPG) and PNG. NibblePic identifies files by their real contents, not their extension, and leaves every other type alone, GIFs included.
NibblePic tests cwebp, Imagick and GD. If none of them can write WebP, an admin notice tells you, and your site carries on serving your original images exactly as before. Nothing breaks.
No. Each WebP file is saved as a separate file next to the original. Visitors get the WebP only when it is confirmed to exist, and otherwise they get the original. NibblePic only deletes files it created itself, and only when you delete the image from your Media Library or choose to remove data when uninstalling.
Yes. The Convert All button processes your existing Media Library in small background batches with a progress bar, so even a large library doesn't time out. If you close the page, click the button again and it picks up where it stopped.
NibblePic checks whether any of them is actively serving WebP. If one starts while NibblePic is converting, it pauses itself and shows a notice, then resumes automatically once the conflict is gone.
No, and that is deliberate. NibblePic only changes the image URLs WordPress builds through its own image functions, such as featured images, galleries and responsive srcset lists. Rewriting hardcoded tags or stylesheets would mean buffering your whole page, which is exactly what tends to clash with caching plugins.
Before Imagick or GD converts an image, NibblePic estimates whether it will fit in your PHP memory limit. If it won't, that image is skipped with a clear status and the original keeps being served. cwebp runs outside PHP, so it is tried regardless of file size.
No. Conversion and serving from your own server work fully on their own. Bunny is an optional extra that offloads the WebP files to a global CDN.
Disconnecting Bunny in NibblePic only clears its saved settings and never deletes anything on Bunny. If you later delete the plugin with the remove data option enabled, the Storage Zone and Pull Zone it created are removed too.
Not by default. All conversion happens locally on your own server. The one optional exception is Bunny CDN offload, which uploads the converted WebP files to your own Bunny Storage Zone.
Deactivating deletes nothing. Your settings, converted files and CDN connection are all still there when you reactivate. Deleting the plugin removes its settings and records, and a remove data checkbox decides whether your converted files and Bunny zones go as well.
No. Install and activate the plugin, and it handles the rest. The settings screen shows which converter was chosen if you are curious, but nothing about normal use requires understanding it.
Install NibblePic and let it find the fastest WebP converter your server already has.
NibblePic is completely free, open-source, and built without hidden paywalls or bloated features. If it helped lighten your pages and speed up your site, consider supporting our ongoing development to keep it that way!
Small, focused WordPress plugins built without bloat.