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:

TierWhat it means
ExcellentAll compression binaries available and shell execution enabled. Best possible results.
GoodSome binaries available. Most formats will be optimized, but you may miss one or two.
LimitedFew or no binaries detected. Compresso falls back to PHP's GD library — images are still optimized, but savings will be smaller.
IncompatibleNo 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 stored
  • wp-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:

  1. Go to Compresso > Settings > CDN Integration
  2. Enter your CDN's root URL (e.g. https://cdn.yoursite.com)
  3. 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 methodPull-zone CDN
Picture tagsWorks after setting CDN URL
JavaScriptAlways works
.htaccessDoes 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_basedir restrictions 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 gifsicle

Compresso 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:

SettingRecommended Value
memory_limit256M or higher
max_execution_time60 or higher
upload_max_filesize100M or higher
post_max_size100M or higher
exec()Enabled
proc_open()Enabled

On this page