by Albert Peschar
4.9 (99 reviews)
PhastPress
PhastPress automatically optimizes your site for the best possible performance.
Tested up to WP 6.8.3 (Current: 6.9)
v3.8
Current Version v3.8
Updated 1 month ago
Last Update on 12 Dec, 2025
Synced 7 hours ago
Last Synced on
Rank
#1,708
—
No change
Active Installs
10K+
-43.3%
KW Avg Position
26
—
No change
Downloads
488.2K
+10 today
Support Resolved
0%
—
No change
Rating
98%
Review 4.9 out of 5
4.9
(99 reviews)
Next Milestone 20K
10K+
20K+
208
Ranks to Climb
-
Growth Needed
8,000,000
Active Installs
Pro
Unlock Exact Install Count
See the precise estimated active installs for this plugin, calculated from real-time ranking data.
- Exact install estimates within tiers
- Track install growth over time
- Milestone progress predictions
Need 2,562 more installs to reach 20K+
Rank Changes
Current
#1,708
Change
Best
#
Downloads Growth
Downloads
Growth
Peak
Upgrade to Pro
Unlock 30-day, 90-day, and yearly download history charts with a Pro subscription.
Upgrade NowReviews & Ratings
4.9
99 reviews
Overall
98%
5
96
(97%)
4
0
(0%)
3
2
(2%)
2
0
(0%)
1
1
(1%)
Tracked Keywords
Showing 2 of 2| Keyword | Position | Change | Type | Updated |
|---|---|---|---|---|
| optimisation | 23 | — | Tag | 19 hours ago |
| pagespeed insights | 29 | — | Tag | 19 hours ago |
Unlock Keyword Analytics
Track keyword rankings, search positions, and discover new ranking opportunities with a Pro subscription.
- Full keyword position tracking
- Historical ranking data
- Competitor keyword analysis
Track This Plugin
Get detailed analytics, keyword tracking, and position alerts delivered to your inbox.
Start Tracking FreePlugin Details
- Version
- 3.8
- Last Updated
- Dec 12, 2025
- Requires WP
- 6.2+
- Tested Up To
- 6.8.3
- PHP Version
- 7.3 or higher
- Author
- Albert Peschar
Support & Rating
- Rating
- ★ ★ ★ ★ ★ 4.9
- Reviews
- 99
- Support Threads
- 0
- Resolved
- 0%
Keywords
Upgrade to Pro
Unlock keyword rankings, search positions, and detailed analytics with a Pro subscription.
Upgrade NowSimilar Plugins
WP Adminify – White Label WordPress, Admin Menu Editor, Login Customizer
7K+ installs
#2,736
Master Addons For Elementor – White Label, Free Widgets, Hover Effects, Conditions, & Animations
40K+ installs
#929
WP-Sweep
100K+ installs
#284
SSL Insecure Content Fixer
100K+ installs
#293
TinyPNG – JPEG, PNG & WebP image compression
100K+ installs
#307
Frequently Asked Questions
Common questions about PhastPress
I recommend using the simple combination of PhastPress and WP Super Cache only. This reduces the potential for plugin conflicts, and it is really all you need.
Fast Velocity Minify is not compatible with PhastPress, and causes PhastPress not to work. Please use either plugin, but not both.
What about caching and compatibility with caching plugins?
Caching means saving the HTML from the first visit to a page for later visits, so it does not have to be generated each time. Caching also helps performance with PhastPress, because the page needs to be optimized only once. It is recommendable to use a caching plugin with PhastPress.
PhastPress is not a caching plugin. I recommend using WP Super Cache in combination with PhastPress to speed up your server response time (TTFB).
In case you are using another caching plugin, please read the notes below:
WP Fastest Cache: Compatible with PhastPress, but non-caching optimizations must be disabled. Turn off the WP Fastest Cache options in this screenshot.
W3 Total Cache: Compatible with PhastPress, but non-caching optimizations must be disabled. Specifically, the Prevent caching of objects after settings change option causes problems.
Cache Enabler (by KeyCDN): Not compatible with PhastPress. Cached pages will not be optimized.
Generally, PhastPress should be compatible with other caching plugins as well. Some caching plugins include optimizations of JavaScript, CSS and/or images. I recommend turning off all optimizations to avoid conflicts with PhastPress.
Is PhastPress compatible with Asset CleanUp: Page Speed Booster?
Yes. The core functionality of Asset CleanUp: Page Speed Booster complements PhastPress by removing unused JavaScript and CSS from the page.
Do not use Asset CleanUp's features for optimizing CSS and JS. These features can cause conflicts with PhastPress, and they are not needed, because PhastPress already does this.
PhastPress is enabled, but nothing happens
You might be using a plugin that compresses the page before PhastPress processes it. When that happens, PhastPress cannot apply optimizations.
For example, if you are using the Far Future Expiry Header plugin, disable the option "Enable Gzip Compression".
Why does PhastPress not impact the "Fully Loaded Time" measured by GTmetrix?
The "Fully Loaded Time" in GTmetrix is the amount of time taken until all network activity ceases. This measurement can be misleading because it does not take into account the order in which resources load.
Normally, external resources such as scripts and stylesheets must be downloaded, parsed and executed before the page can be rendered. PhastPress changes this sequence by including all necessary resources (that is, the critical CSS) in the page, and executing scripts asynchronously, so that they do not block the rendering of the page.
This causes the page to be visible earlier in the browser, but does not change GTmetrix's fully loaded time.
In order to see this effect, register and log in to GTmetrix and enable the "Video" option. Then test your site (with Phast enabled), and use the "Compare" button to again test your site, but while appending "?phast=-phast" to the URL (eg, https://example.com/?phast=-phast). When the comparison loads, select the "Filmstrips" tab and you'll see the difference. The Phast-optimized version of your site should start rendering much earlier.
Can I use a hook to disable PhastPress?
Should you need to disable PhastPress on certain pages, you can use the following code to do so:
add_filter('phastpress_disable', '__return_true');
Make sure that this code runs during template_redirect or earlier.
Can I use disable PhastPress on WooCommerce checkout and cart pages?
Add this code to your theme's functions.php, or to a new file in wp-content/mu-plugins:
add_filter('phastpress_disable', function ($disable) {
return $disable || is_cart() || is_checkout();
});
How and when does PhastPress clean the cache?
PhastPress uses filesize and modification time information to detect file changes, so clearing the cache is generally not needed. When you change a script or CSS file, the change should be visible immediately after reloading.
If you do want to clear the cache, you can delete all the data inside wp-content/cache/phastpress or wp-content/plugins/phastpress/cache.
How do I exclude a specific script from optimization?
By default, PhastPress delays the load of all scripts until after the DOM has finished loading, so that the browser can render the page as quickly as possible. If you wish to load specific scripts as soon as possible, such as Google Analytics, you may add the data-phast-no-defer attribute to the script. It would be preferable to also mark external scripts as async, when possible.
For example:
<script data-phast-no-defer>
// my script goes here
</script>
Or:
<script async data-phast-no-defer src="http://url.to.my.script/"></script>
If you (or a plugin) are using wp_enqueue_script to add the script to the page, you can use the phast_no_defer data key to stop PhastPress from processing the script:
wp_script_add_data('my_script_name', 'phast_no_defer', true);
Make sure this is run after registering the script. If you are trying to apply this to a script loaded by a plugin, you could use the wp_print_scripts hook:
add_action('wp_print_scripts', function () {
wp_script_add_data('my_script_name', 'phast_no_defer', true);
});
If you use the HTML source code to find the script name, note that -js and -js-extra are not part of the name. For example, for a script like <script id="jquery-core-js"> in the source code, the script name is jquery-core, and that is what you should pass to wp_script_add_data.
This is applied automatically for these scripts:
Google Analytics script inserted by Monsterinsights since PhastPress 1.29.
Tracking script inserted by Slimstat Analytics since PhastPress 1.30.
Google Analytics script inserted by Google Site Kit since PhastPress 1.75.
Google Analytics script inserted by GA Google Analytics since PhastPress 1.76.
Fast Velocity Minify is not compatible with PhastPress, and causes PhastPress not to work. Please use either plugin, but not both.
What about caching and compatibility with caching plugins?
Caching means saving the HTML from the first visit to a page for later visits, so it does not have to be generated each time. Caching also helps performance with PhastPress, because the page needs to be optimized only once. It is recommendable to use a caching plugin with PhastPress.
PhastPress is not a caching plugin. I recommend using WP Super Cache in combination with PhastPress to speed up your server response time (TTFB).
In case you are using another caching plugin, please read the notes below:
WP Fastest Cache: Compatible with PhastPress, but non-caching optimizations must be disabled. Turn off the WP Fastest Cache options in this screenshot.
W3 Total Cache: Compatible with PhastPress, but non-caching optimizations must be disabled. Specifically, the Prevent caching of objects after settings change option causes problems.
Cache Enabler (by KeyCDN): Not compatible with PhastPress. Cached pages will not be optimized.
Generally, PhastPress should be compatible with other caching plugins as well. Some caching plugins include optimizations of JavaScript, CSS and/or images. I recommend turning off all optimizations to avoid conflicts with PhastPress.
Is PhastPress compatible with Asset CleanUp: Page Speed Booster?
Yes. The core functionality of Asset CleanUp: Page Speed Booster complements PhastPress by removing unused JavaScript and CSS from the page.
Do not use Asset CleanUp's features for optimizing CSS and JS. These features can cause conflicts with PhastPress, and they are not needed, because PhastPress already does this.
PhastPress is enabled, but nothing happens
You might be using a plugin that compresses the page before PhastPress processes it. When that happens, PhastPress cannot apply optimizations.
For example, if you are using the Far Future Expiry Header plugin, disable the option "Enable Gzip Compression".
Why does PhastPress not impact the "Fully Loaded Time" measured by GTmetrix?
The "Fully Loaded Time" in GTmetrix is the amount of time taken until all network activity ceases. This measurement can be misleading because it does not take into account the order in which resources load.
Normally, external resources such as scripts and stylesheets must be downloaded, parsed and executed before the page can be rendered. PhastPress changes this sequence by including all necessary resources (that is, the critical CSS) in the page, and executing scripts asynchronously, so that they do not block the rendering of the page.
This causes the page to be visible earlier in the browser, but does not change GTmetrix's fully loaded time.
In order to see this effect, register and log in to GTmetrix and enable the "Video" option. Then test your site (with Phast enabled), and use the "Compare" button to again test your site, but while appending "?phast=-phast" to the URL (eg, https://example.com/?phast=-phast). When the comparison loads, select the "Filmstrips" tab and you'll see the difference. The Phast-optimized version of your site should start rendering much earlier.
Can I use a hook to disable PhastPress?
Should you need to disable PhastPress on certain pages, you can use the following code to do so:
add_filter('phastpress_disable', '__return_true');
Make sure that this code runs during template_redirect or earlier.
Can I use disable PhastPress on WooCommerce checkout and cart pages?
Add this code to your theme's functions.php, or to a new file in wp-content/mu-plugins:
add_filter('phastpress_disable', function ($disable) {
return $disable || is_cart() || is_checkout();
});
How and when does PhastPress clean the cache?
PhastPress uses filesize and modification time information to detect file changes, so clearing the cache is generally not needed. When you change a script or CSS file, the change should be visible immediately after reloading.
If you do want to clear the cache, you can delete all the data inside wp-content/cache/phastpress or wp-content/plugins/phastpress/cache.
How do I exclude a specific script from optimization?
By default, PhastPress delays the load of all scripts until after the DOM has finished loading, so that the browser can render the page as quickly as possible. If you wish to load specific scripts as soon as possible, such as Google Analytics, you may add the data-phast-no-defer attribute to the script. It would be preferable to also mark external scripts as async, when possible.
For example:
<script data-phast-no-defer>
// my script goes here
</script>
Or:
<script async data-phast-no-defer src="http://url.to.my.script/"></script>
If you (or a plugin) are using wp_enqueue_script to add the script to the page, you can use the phast_no_defer data key to stop PhastPress from processing the script:
wp_script_add_data('my_script_name', 'phast_no_defer', true);
Make sure this is run after registering the script. If you are trying to apply this to a script loaded by a plugin, you could use the wp_print_scripts hook:
add_action('wp_print_scripts', function () {
wp_script_add_data('my_script_name', 'phast_no_defer', true);
});
If you use the HTML source code to find the script name, note that -js and -js-extra are not part of the name. For example, for a script like <script id="jquery-core-js"> in the source code, the script name is jquery-core, and that is what you should pass to wp_script_add_data.
This is applied automatically for these scripts:
Google Analytics script inserted by Monsterinsights since PhastPress 1.29.
Tracking script inserted by Slimstat Analytics since PhastPress 1.30.
Google Analytics script inserted by Google Site Kit since PhastPress 1.75.
Google Analytics script inserted by GA Google Analytics since PhastPress 1.76.
During image optimization, the following data is sent to the API:
the URL on which PhastPress is used
the version of the plugin
the PHP version (to track compatibility requirements)
the image itself
Images are sent to the API only once. Processed images are stored locally, and not retained by the API.
If image optimization is switched off, the API will not be used.
I get an error saying "Headers already sent". How do I fix this?
Your theme or a plugin is trying to send HTTP headers after the page has started rendering and bytes have been sent to the browser. This is wrong, but it works when PHP output buffering is enabled.
PhastPress always sends output as soon as possible, to reduce the time to first byte. That means this problem cannot be fixed without slowing down sites without buggy themes/plugins.
To fix the problem on your site, the following code needs to be run in order to enable output buffering:
<?php
add_action('template_redirect', function () {
ob_start();
});
You can add this code to your theme's functions.php, or create a file output-buffer.php in wp-content/mu-plugins with the above code. You may have to create this directory first.
Alternatively, download output-buffer.zip and extract the contents into your web folder. You should end up with a file named output-buffer.php in wp-content/mu-plugins.
Can I optimize images without changing their URLs?
Yes. Add these two lines to your .htaccess file:
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^wp-content/.*[^/]\.(jpe?g|gif|png)$ wp-content/plugins/phastpress/phast.php [L,NC,E=PHAST_SERVICE:images]
Then in PhastPress settings, disable image optimization in tags and CSS.
Now, reload your site and check if images are optimized.
Is it possible to use PhastPress with a CSP?
Yes, as long as you use a CSP with a script-src policy containing nonce-*. To enable Phast's support for CSP implement the phastpress_csp_nonce filter:
<?php
add_filter('phastpress_csp_nonce', function () {
return 'my-nonce';
});
Why do images not get converted to WebP when using Cloudflare?
Cloudflare does not support Vary: Accept, so sending WebP via Cloudflare can cause browsers that don't support WebP to download the wrong image type. You can try using Cloudflare Polish instead.
the URL on which PhastPress is used
the version of the plugin
the PHP version (to track compatibility requirements)
the image itself
Images are sent to the API only once. Processed images are stored locally, and not retained by the API.
If image optimization is switched off, the API will not be used.
I get an error saying "Headers already sent". How do I fix this?
Your theme or a plugin is trying to send HTTP headers after the page has started rendering and bytes have been sent to the browser. This is wrong, but it works when PHP output buffering is enabled.
PhastPress always sends output as soon as possible, to reduce the time to first byte. That means this problem cannot be fixed without slowing down sites without buggy themes/plugins.
To fix the problem on your site, the following code needs to be run in order to enable output buffering:
<?php
add_action('template_redirect', function () {
ob_start();
});
You can add this code to your theme's functions.php, or create a file output-buffer.php in wp-content/mu-plugins with the above code. You may have to create this directory first.
Alternatively, download output-buffer.zip and extract the contents into your web folder. You should end up with a file named output-buffer.php in wp-content/mu-plugins.
Can I optimize images without changing their URLs?
Yes. Add these two lines to your .htaccess file:
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^wp-content/.*[^/]\.(jpe?g|gif|png)$ wp-content/plugins/phastpress/phast.php [L,NC,E=PHAST_SERVICE:images]
Then in PhastPress settings, disable image optimization in tags and CSS.
Now, reload your site and check if images are optimized.
Is it possible to use PhastPress with a CSP?
Yes, as long as you use a CSP with a script-src policy containing nonce-*. To enable Phast's support for CSP implement the phastpress_csp_nonce filter:
<?php
add_filter('phastpress_csp_nonce', function () {
return 'my-nonce';
});
Why do images not get converted to WebP when using Cloudflare?
Cloudflare does not support Vary: Accept, so sending WebP via Cloudflare can cause browsers that don't support WebP to download the wrong image type. You can try using Cloudflare Polish instead.