Hosting Compatibility
What to look for in a host to get the most out of Compresso
Compresso works on most WordPress hosts out of the box, but some hosting configurations give better results than others. This page covers what to check and what to ask your host about.
Quick Compatibility Check
After installing Compresso, go to Compresso > Dashboard and check the System Status section. It shows a compatibility tier for your server:
| Tier | What it means |
|---|---|
| Excellent | All compression binaries available and shell execution enabled. Best possible results. |
| Good | Some binaries available. Most formats will be optimized, but you may miss one or two. |
| Limited | Few or no binaries detected. Compresso falls back to PHP's GD library — images are still optimized, but savings will be smaller. |
| Incompatible | No optimization tools available at all. Contact your host. |
What Compresso Needs
PHP Version
Minimum: PHP 7.4. Recommended: PHP 8.0 or higher for better performance.
PHP Extensions (Optional)
GD and Imagick are not required to run Compresso — the plugin relies on its bundled compression binaries first. However, if binaries aren't available (e.g., shell execution is disabled), these PHP extensions serve as a fallback:
- GD Library — The most common PHP image extension. Almost always pre-installed. Used as a fallback for basic image optimization when no binaries are available.
- Imagick — Higher quality image processing. Optional but provides a better fallback than GD if available.
Most WordPress hosts have GD installed by default, so you likely have this fallback available without doing anything.
Shell Execution
Compresso runs external compression binaries (cwebp, jpegoptim, pngquant, etc.) for the best possible compression. This requires the following PHP functions to not be disabled:
exec()shell_exec()proc_open()
Many shared hosts disable these for security. If they're disabled on your server, Compresso falls back to the GD library. Results are still good, but dedicated binaries typically produce files 20–40% smaller.
Compresso ships with bundled binaries for Linux, macOS, FreeBSD, and Windows — so you don't need to install them manually. They just need shell execution to be enabled.
What to ask your host: "Can you enable exec() and proc_open() for my site, or whitelist them for the Compresso plugin?"
Memory Limit
Minimum: 128 MB. Recommended: 256 MB or higher.
Image optimization is memory-intensive, especially for large images. If your memory limit is too low, large images may fail to optimize.
What to check: Look at memory_limit in the Compresso system status. If it's below 128 MB, ask your host to increase it.
Execution Time
Compresso allows up to 60 seconds per image for compression binaries to complete. If your server's max_execution_time is very low (under 30 seconds), some large images may time out.
Bulk optimization uses Action Scheduler to process images one at a time in the background, so server timeouts don't affect bulk runs — only individual image processing.
File Permissions
Compresso needs write access to:
wp-content/uploads/— Where optimized images and backups are storedwp-content/logs/compresso/— Where optimization logs are written
These directories are writable on virtually all WordPress hosts. If you see permission errors in your logs, ask your host to check directory ownership.
CDN Compatibility
Compresso works with CDN setups, but the configuration depends on how your CDN is connected.
Pass-through CDN (same domain)
Your CDN acts as a caching layer in front of your site but image URLs still point to your domain (e.g. https://yoursite.com/wp-content/uploads/...). No additional configuration needed — Compresso identifies these as local images automatically.
Pull-zone CDN (different domain)
Your CDN rewrites image URLs to a CDN subdomain (e.g. https://cdn.yoursite.com/...). In this case:
- Go to Compresso > Settings > CDN Integration
- Enter your CDN's root URL (e.g.
https://cdn.yoursite.com) - Save settings
Without this, Compresso treats CDN-hosted images as external and skips WebP/AVIF delivery and lazy-load placeholders for them.
WebP delivery method with a CDN
The .htaccess delivery method does not work with pull-zone CDNs — CDN requests never reach your server's rewrite rules. Use JavaScript delivery instead. Compresso will warn you in Settings if you have both a CDN URL configured and .htaccess selected.
| Delivery method | Pull-zone CDN |
|---|---|
| Picture tags | Works after setting CDN URL |
| JavaScript | Always works |
| .htaccess | Does not work |
Web Server Considerations
Apache
Full compatibility. All WebP delivery methods work, including the .htaccess rewrite method (requires mod_rewrite and mod_headers).
Nginx
Everything works except the .htaccess WebP delivery method — Nginx doesn't read .htaccess files. Use Picture tags or JavaScript delivery instead. These work on any server.
LiteSpeed
Full compatibility. LiteSpeed reads .htaccess files, so all delivery methods work.
Hosting Type Guide
Shared Hosting (cPanel, Plesk)
Works well in most cases. Compresso's bundled binaries are compiled for the Linux x86_64 architecture used by most shared hosts.
Watch out for:
- Disabled shell functions (
exec,proc_open) — the most common limitation on shared hosting - Low memory limits (64–128 MB) — ask for at least 256 MB
- PHP
open_basedirrestrictions that may block binary execution
Managed WordPress Hosting (Kinsta, WP Engine, Flywheel, Cloudways)
Generally works well. These hosts usually provide sufficient memory and execution time.
Watch out for:
- Some managed hosts disable shell execution entirely for security. If so, Compresso falls back to GD/Imagick for optimization with reduced compression ratios.
- Check with your host's support if the system status shows no binaries detected.
VPS / Dedicated Servers
Best experience. Full control over PHP settings, memory, and installed binaries. You can also install system binaries directly if needed:
# Ubuntu / Debian
sudo apt-get install jpegoptim pngquant optipng webp gifsicle
# CentOS / RHEL
sudo yum install jpegoptim pngquant optipng libwebp-tools gifsicleCompresso will still prefer its bundled binaries, but having system binaries available provides a secondary fallback.
Docker / Containerized
Works if the container allows shell execution. Make sure your container image doesn't strip exec() or proc_open() from PHP.
HTTPS Requirement
Core image optimization works on both HTTP and HTTPS sites.
Cloud Backup (Pro) requires HTTPS because it uses OAuth to connect to Google Drive and Dropbox. If your site is HTTP-only, local backups will still work, but you won't be able to use cloud backup.
Database
No special database requirements beyond what WordPress needs. Compresso creates one custom table (compresso_logs) and uses standard WordPress options and post meta for everything else. Works with MySQL 5.6+ and MariaDB.
Settings to Check
Here's a quick summary of the PHP settings Compresso reports in its system status:
| Setting | Recommended Value |
|---|---|
memory_limit | 256M or higher |
max_execution_time | 60 or higher |
upload_max_filesize | 100M or higher |
post_max_size | 100M or higher |
exec() | Enabled |
proc_open() | Enabled |