Find answers to common questions about Speedix. Can't find what you're looking for? Check the WordPress.org support forum.
Try different keywords or browse the categories above.
After installing Speedix, go to Tools > Speedix. You'll see the Quick Setup wizard on first launch. Choose a preset (we recommend starting with "Balanced"), then click "Start Profiling". The plugin will begin collecting data immediately.
For best results:
Step 1: Initial Assessment - Start with Balanced preset to identify which plugins consume the most time. Run for 30 minutes to 1 hour.
Step 2: Deep Dive - If you find a problematic plugin, switch to Detailed mode temporarily to see exactly which hooks are slow.
Step 3: Take Action - Either disable/replace slow plugins, contact the developer, or accept the tradeoff if the plugin is essential.
Step 4: Ongoing Monitoring - Switch to Safe Mode for continuous monitoring with minimal overhead. This helps catch regressions after updates.
Focus on pages that matter most for your site's performance:
You don't need to add every page. 3-5 key pages give you a good picture of overall performance.
Speedix is designed to be lightweight, but there is some overhead:
Additionally, sample rate reduces the percentage of requests that are profiled. At 25% sample rate, only 1 in 4 requests is profiled.
If overhead ever gets too high, the overload protection automatically pauses profiling to protect your site.
Frontend Timing tracks real user experience metrics directly from the browser using the Performance API. These metrics directly align with Google's Core Web Vitals:
These metrics impact your Google rankings and user experience. Speedix shows desktop vs mobile comparisons to identify device-specific issues.
Frontend Timing is enabled by default for new installations (v2.1.0+). To check or toggle:
Speedix injects a small JavaScript beacon (<2KB) that sends timing data via sendBeacon() with minimal performance impact.
The Frontend Timing card shows side-by-side comparison bars for each metric:
This helps identify mobile-specific performance issues. Mobile is often slower due to slower network connections and less powerful devices. Click the chart icon to see full history with trend lines.
Yes! Unlike server-side profiling which gets bypassed by page caching, Frontend Timing works on cached pages because it measures from the browser perspective.
Speedix even detects when a page was served from cache using the Navigation Timing API (when transferSize=0 and response is very fast). The dashboard marks cached page loads so you can see the difference.
Google's Core Web Vitals thresholds for LCP:
Common causes of slow LCP on WordPress:
Focus on TTFB first (server-side), then optimize the largest content element (usually a hero image or heading).
The 22-point Site Health Scan runs comprehensive diagnostics:
Database Checks:
Configuration Checks:
Performance Checks:
You can trigger a Site Health Scan in several ways:
After scanning, you can:
Autoload bloat occurs when too much data is loaded into memory on every page request from the wp_options table.
Healthy: <500KB autoload size
Warning: 500KB-900KB
Critical: >900KB
Common causes:
How to fix:
Speedix uses these thresholds for enqueued scripts and stylesheets:
Tips to reduce:
Yes! You can enable daily automated Site Health reports:
The email includes a mobile-responsive HTML report with all 22 diagnostic checks, color-coded by severity. This helps you catch issues (like growing autoload size or OPcache problems) before they impact users.
Safe Mode (10% sample rate, 2ms threshold, Plugin ID off)
Balanced (25% sample rate, 1ms threshold, Plugin ID on)
Detailed (100% sample rate, 0.5ms threshold, Plugin ID on)
The threshold is the minimum execution time (in milliseconds) a hook must take to be logged. Hooks faster than this are ignored.
Guidelines:
Use the Auto-Calibrate button to let Speedix analyze your site and recommend an optimal threshold based on your actual performance data.
Sample rate controls what percentage of requests are profiled:
Lower sample rates mean:
For most sites, 25% gives good data while keeping overhead low. Use 10% on high-traffic production sites.
Plugin identification uses PHP Reflection to trace each hook callback back to its source file, then maps that to a plugin, theme, or WordPress Core.
Benefits:
Trade-offs:
Recommendation: Enable it when actively optimizing (Balanced/Detailed modes). Disable it for lightweight ongoing monitoring (Safe Mode).
Auto-Calibrate profiles your homepage multiple times and analyzes the results to recommend optimal settings.
How it calculates the threshold:
Example: If your homepage takes 400ms on average, the threshold would be ~2.0ms. This ensures you only capture hooks that represent a meaningful portion of response time.
Speedix supports retention periods from 1 hour to 7 days.
Recommendations:
Longer retention means more database storage. If you're using Safe Mode with low sample rate, you can safely use 7 days. With Detailed mode, keep it shorter (1-24 hours).
Response time targets for WordPress/WooCommerce sites:
Note: These are server response times (TTFB), not total page load time. They don't include frontend rendering, JavaScript execution, or asset loading.
This is completely normal. WordPress Core handles essential functions like:
Core typically uses 40-60% of hook time on a healthy site. Focus on:
By Hook shows individual WordPress hooks (actions/filters) sorted by execution time:
By Plugin aggregates all hooks by their source plugin:
Start with "By Plugin" to identify problematic plugins, then switch to "By Hook" for detailed analysis.
The Health Score (0-100) gives you a quick performance assessment based on average response time:
The score is calculated relative to a 200ms baseline for excellent performance and scales down as response time increases.
DB Time - Time spent on database queries. High DB time indicates:
HTTP Time - Time spent on external HTTP requests. High HTTP time indicates:
The Hotspots card shows your top 5 slowest hooks at a glance. These are the hooks with the highest average execution time.
Hotspots help you:
Click on any hotspot to see full details in the By Hook view.
The External APIs section tracks all HTTP requests your WordPress site makes to third-party services during page loads. This includes:
The dashboard shows:
Click any host row to expand and see individual endpoints. Click the chart icon to view historical trends for any API endpoint.
Why it matters: External API calls are often the biggest source of slow page loads because they depend on network latency and third-party server response times. Identifying slow APIs helps you decide what to cache, defer, or replace.
History Charts let you see performance trends over time. Click the chart icon (📈) on any metric card or table row to open the history modal.
Available history views:
Time range options: 1 hour, 2 hours, 6 hours, 24 hours, 3 days, 7 days
Summary stats: Each chart shows summary statistics (average, min, max, total) for the selected period.
Use history charts to spot patterns (e.g., slowdowns during peak traffic), verify that optimizations worked, and track long-term trends.
OPcache is PHP's built-in bytecode cache that dramatically speeds up PHP execution by caching compiled scripts.
Speedix tracks:
What to look for:
opcache.memory_consumptionClick the OPcache card to view historical trends showing hit rate and memory usage over time.
When WooCommerce is active, Speedix automatically adds a dedicated WooCommerce tab that categorizes hooks by commerce area:
For WooCommerce stores, add these pages to your profiled pages list:
Checkout and cart are often the slowest due to shipping calculations, payment gateway initialization, and cart validations.
Checkout is often the slowest page because it involves:
Optimization tips:
Overload protection automatically pauses profiling when overhead gets too high. This protects your site from performance degradation.
When it triggers:
What happens:
Solution: Switch to Safe Mode preset which has much lower overhead, or reduce sample rate.
Common causes for no data appearing:
Some variation is normal. Server response time varies due to:
For accurate results:
Speedix shows environment notices to help you understand factors affecting results:
OPcache not enabled - Without OPcache, PHP code is compiled every request. Enable OPcache for much faster performance (and more accurate profiling).
WP_DEBUG is enabled - Debug mode adds overhead. Results will be slower than production. This is expected.
Xdebug is active - Xdebug significantly slows PHP. Disable it for accurate benchmarks.
SAVEQUERIES is enabled - Query logging adds overhead. Consider disabling for profiling.
Low memory limit - Profiling many hooks may hit memory limits. Consider increasing to 128M+.
Full-page caching detected - Cached pages won't be profiled. This is expected behavior.
There are several reset options:
Clear Data Only: Use the "Clear All Data" button in the dashboard to delete profiling data while keeping your settings.
Reset Settings: Use "Reset to Defaults" in Settings to restore default configuration without clearing data.
Full Reset: Deactivate and reactivate the plugin to reset both settings and show the Quick Setup wizard again.
Complete Removal: Deactivate and delete the plugin. This removes all data, settings, and database tables.
Speedix uses WordPress's all hook to capture every action and filter as it fires. Here's the process:
all hook at priority -999999 (start) and 999999 (end)hrtime(true) for nanosecond precision timingWhen plugin identification is enabled, Speedix:
ReflectionFunction or ReflectionMethod on each callbackThe cache stores up to 500 callback-to-plugin mappings. This keeps repeat overhead low after the initial discovery.
Speedix creates four custom database tables:
wp_speedix_stats - Hook-level timing data with plugin attributionwp_speedix_stats_plugins - Pre-aggregated plugin totals for faster dashboard querieswp_speedix_responses - Response time, memory, OPcache, and DB metrics historywp_speedix_http_log - External API call tracking by host and endpointData is aggregated by minute to reduce the number of rows. A cron job runs hourly to clean up data older than the retention period.
All tables are removed when the plugin is uninstalled (deleted, not just deactivated).
Minimum Requirements:
Tested Up To:
Speedix uses PHP features like typed properties (PHP 7.4+) and hrtime() (PHP 7.3+), with polyfills for PHP 8.0 string functions.
Yes, Speedix works on WordPress Multisite installations. Each site in the network has its own:
Network admins can activate it network-wide or allow individual site activation.
Yes, Speedix supports multiple export formats:
Export options are available for both "By Hook" and "By Plugin" views. Click the download icon in the toolbar to access export options.
Yes, Speedix is fully compatible with object caching solutions. When object caching is enabled:
Object caching is recommended for database-heavy WordPress sites and doesn't interfere with profiling.
Check the WordPress.org support forum or browse the plugin documentation.