Harvify Image Optimizer helps WordPress administrators convert Media Library images to modern WebP and AVIF formats without running heavy compression work inside PHP.
The plugin scans lightweight attachment metadata first, then your browser converts selected images in a small queue. Images are processed with Web Workers and OffscreenCanvas where available, uploaded back through authenticated WordPress REST API requests, and released from browser memory as each item finishes.
This client-side approach is designed for shared hosting environments where PHP memory limits and execution timeouts can interrupt large image optimization jobs.
Key features
- Convert JPEG, PNG, WebP, and AVIF source images to WebP or AVIF.
- Scan one source format at a time so existing target-format images are not accidentally reprocessed.
- Select a few images for a test run before processing the full queue.
- Skip small files, very large images, selected upload paths, or filename patterns.
- Deliver Pro sidecar variants through PHP picture tags when available.
- Adjust quality and queue concurrency from the admin screen.
- Save queue state in the browser with IndexedDB so work can resume after interruption.
- Keep wp-admin responsive by doing conversion work in browser workers.
- Process images locally in your browser without using an external optimization API.
- Optional original-file deletion, disabled by default.
Privacy and external services
Harvify Image Optimizer does not send images to a third-party compression service, load scripts from external CDNs, or track usage. Images are fetched by your browser from your own WordPress site and uploaded back to your own WordPress REST API.
AVIF encoding uses bundled WebAssembly encoder files. The current AVIF path uses the Apache-2.0 licensed @jsquash/avif single-thread encoder, with the earlier bundled wasm-avif encoder retained as a local fallback.
Format testing
If you want to experiment with AVIF conversion outside your WordPress Media Library first, you can use this browser-based test tool: