By the author of the P3 Plugin Performance Profiler

See where your site's time goes.

Scrutoscope profiles server-side PHP execution in WordPress and shows you where time is spent. Every hook. Every plugin. Every query.

Request Timeline showing a 544ms WordPress request with phase markers, HTTP wait lane, query density, and memory curve

Source Attribution

Know which plugin costs you.

Each plugin and theme gets a cost breakdown: exclusive callback time, memory delta, weight percentage. Sorted so the expensive ones float to the top.

The bar at the top shows proportions at a glance. In this profile, one plugin owns 64% of execution time. You can see it in under a second.

Sources tab ranking each plugin and theme by exclusive callback time

Core Breakdown

See where time is spent in core.

Not all slowness comes from plugins. The Core Subsystems view breaks down WordPress internals: rewrite rules, locale loading, the options autoloader, taxonomy queries, and everything else under the hood.

When a plugin isn't the problem, this is where you look next.

Core subsystem breakdown showing rewrite rules, locale loading, and taxonomy query costs

Hook Execution Trace

11,883 callbacks. Searchable.

Filter by source, minimum duration, or query count. Presets for common questions: Top 10 Slowest, DB Heavy, HTTP Calls, Memory Heavy.

Every callback shows its hook, source plugin, query count, and HTTP call count. You see which function is responsible, not just which hook fired.

Trace tab with 11,883 callbacks, search, filter presets, and sortable columns

AI-Native Diagnostics

Hand it to your coding agent.

One click generates a diagnostic prompt with scoped, read-only API credentials. Paste it into Claude Code, Cursor, or any coding agent. It reads your profiles, runs the analysis, and tells you what to fix. Credentials expire in one hour.

API tab with prompt copied to clipboard, credential generated, and Revoke Access button
1. Generate prompt in wp-admin
AI coding agent terminal output diagnosing a blocking HTTP call as the top performance issue
2. Agent diagnoses the problem in two minutes

Live Demo

See a real report.

This is a WooCommerce cart page with 12 active plugins. 544 ms of server time, broken down to the callback.

The report is encrypted and decrypted entirely in your browser. The relay server never sees the contents.

Open live report →
Shared report opened in the zero-knowledge relay viewer, fully decrypted in the browser

Access Log

Full audit history.

Every shared report gets a full access log. See who opened it, when they opened it, and how many times.

Reports can expire on a schedule, burn after reading, or stay permanent. You pick the TTL when you share.

Shared reports ledger with access log showing viewer IPs, timestamps, and TTL settings

Route History

Catch regressions when things change.

Route History tracks load time across every profiled URL over time. Spot regressions after a plugin update, a theme change, or a new deploy.

Drill into any data point to open the full profile for that request.

Route history chart showing load time trends for each URL over multiple days

Configuration

Background profiling, hands-off.

Set a sample rate and let Scrutoscope profile in the background. Default 10% keeps overhead invisible while building a history of real-world performance data.

Capture logged-in requests, REST API calls, AJAX, or just front-end visitors. Your call.

Settings panel showing sample rate, request type filters, and background profiling toggle

Your data. Your server.

🔒
Zero telemetry All profiling data stays in your WordPress database. Nothing phones home. No accounts, no tracking, no analytics.
🔐
Encrypted sharing Shared reports use client-side AES-256-GCM. The relay stores only ciphertext it cannot read. Decryption keys never leave your browser.
Designed for production Non-profiled requests add under 2 ms. Profiled requests record full hook traces. The sample rate is your dial. Default 10% keeps overhead invisible.
📖
Open source GPL-2.0-or-later. Read every line. Fork it, audit it, contribute. No obfuscated code, no premium tier.
🧩
Pure PHP, no extensions Runs on any WordPress host. No compiled extensions, no custom PHP modules, no shell access needed. If WordPress runs, Scrutoscope runs.

Get Scrutoscope

Download the latest release from GitHub. Upload through Plugins > Add New > Upload. Activate.

Download Latest Release
Coming to wordpress.org