Client-side media processing ships enabled by default in WordPress 7.1 on supported browsers.
Learn WordPress 7.1 wasm-vips browser processing for resize, thumbnails and conversion, plus PHP memory, HEIC, AVIF, hooks and fallback behavior.
Client-side media processing ships enabled by default in WordPress 7.1 on supported browsers.
Compression, resizing, format conversion, EXIF rotation and thumbnail generation can run in the browser via wasm-vips/libvips, after which processed files are uploaded.
WordPress Core explicitly highlights eliminating PHP memory-limit failures for large-image processing and reducing server CPU/RAM load.
When requirements are not met, WordPress transparently falls back to the traditional server-side GD/Imagick path.
In the traditional pipeline, PHP uses GD or Imagick to decode the original image, scale it, create intermediate sizes, rotate from EXIF and perform format conversions. A high-megapixel image can require far more RAM when decoded than its compressed file size suggests.
This is why Allowed memory size exhausted, post-processing failures and incomplete thumbnails are common on constrained hosting. WordPress 7.1 moves much of that heavy work to the uploader's browser.
WordPress uses wasm-vips, a WebAssembly build of libvips, inside a Web Worker. Compression, resizing, format conversion, rotation and sub-size generation happen client-side before upload, so PHP does not need to generate every derivative in server memory.
After processing, generated files are sideloaded to the server and a finalize step completes attachment metadata. WordPress still completes the media lifecycle; the expensive pixel processing has moved.
The developer guide says the full WASM pipeline currently depends on Document-Isolation-Policy and supported Chromium browsers such as Chrome/Edge 137+. It also requires WebAssembly, SharedArrayBuffer, Web Workers and a CSP that permits blob workers.
Reported device memory of 2 GB or less, fewer than two CPU cores, very slow network or Save-Data can disable the client pipeline. Upload still works, but processing falls back to the server.
One notable benefit is browser-side HEIC decoding and conversion to JPEG on supported platforms, allowing uploads even when the host lacks server-side HEIC support.
AVIF becomes less dependent on server image-editor capability when client processing is available. Opaque animated GIFs can also gain efficient companion MP4/WebM output; themes and plugins should be tested against this new media lifecycle.
Some server-side image-editor hooks no longer run in the same role because pixel processing is not happening in PHP. WordPress still runs `wp_generate_attachment_metadata` during finalization so plugins can observe the complete sub-size metadata.
Plugins that depend on a custom WP_Image_Editor implementation or image_make_intermediate_size behavior should be tested on staging. WordPress documents disabling client-side processing when a site depends on a custom server-side image editor.
WordPress 7.1 exposes the `wp_client_side_media_processing_enabled` filter. If a plugin or custom workflow is incompatible, you can disable it site-wide and return to traditional server-side processing.
Do not permanently disable the feature as the first response. Compare browser console, CSP, plugin-hook behavior and server fallback to identify the failing layer.
add_filter( 'wp_client_side_media_processing_enabled', '__return_false' );
No. WordPress 7.1 reduces PHP-memory pressure for image processing when the client path is active. Plugins, imports, backups, WooCommerce, admin AJAX, cron and fallback media processing still consume PHP memory.
upload_max_filesize, post_max_size, web-server body limits and disk/inode quotas do not disappear. The server still has to accept and store the processed files.
| Task | Traditional server path | 7.1 client path |
|---|---|---|
| Resize/thumbnails | PHP + GD/Imagick | Browser + wasm-vips |
| PHP memory pressure | Can be high | Largely removed for pixel processing |
| When unsupported | N/A | Server-side fallback |
Before production changes, verify context and keep backups and a rollback plan. Do not change several DNS, TLS, recovery, Docker or WordPress variables at once because it obscures the root cause.
No. It reduces memory pressure for client-side image processing only; other WordPress PHP workloads still depend on memory limits.
According to current developer docs, the full WASM pipeline is not supported in Firefox due to the DIP requirement, so server-side fallback is used.
Yes. Use the `wp_client_side_media_processing_enabled` filter to return to the traditional server-side path.
If the problem persists in hosting, VPS, Docker, Cloudflare, Windows or WordPress infrastructure, open a technical support request with the exact error output and current architecture.