30% off Pro plugins with LAUNCH30 See plugins
Dragon Speed Doctor box
All plugins

Dragon Speed Doctor

Find which plugins are slowing your WordPress site — measured on your own server, explained in plain English.

Leave-one-out profiling times your site with each plugin briefly removed, then tells you in plain English exactly what each one costs — in milliseconds and extra database queries.

Features

What Dragon Speed Doctor does

Per-Plugin Timing

What each plugin costs on the front end and in wp-admin, as honest measured ranges

Asset Audit

Every script and stylesheet on your pages, attributed to the plugin that ships it, with render-blocking flags

Database Signals

Autoloaded-option weight and probable owners, a common hidden slowdown

Plain-English Verdicts

Low, Medium and High impact badges, sorted worst first, no jargon

Before & After

Scan before updating plugins and again after, and see exactly what changed

Dependency Awareness

Plugins that cannot be separated are measured together and labelled honestly

Honest Confidence

Says "inconclusive" when the server is too noisy, instead of inventing a number

WP-CLI

`wp speed-doctor scan` for scripted or scheduled diagnosis

No External Services

Everything runs on your own server; nothing is sent anywhere

Guides

Put Dragon Speed Doctor to work

Step-by-step guides from the team that builds it. All guides

Requirements

  • · WordPress 6.2 or newer
  • · PHP 8.0 or newer
  • · WordPress 6.0+ · PHP 8.0+

Changelog

v1.0.4

Asset sizes and plugin attribution are now correct on subdirectory, relocated wp-content and mixed-scheme sites, and the loopback base works on subdirectory installs. ## What's fixed in 1.0.4 - **Asset sizes are no longer 0 for local files the doctor could not find.** A script or style with a scheme-relative (`//`), `http://` or document-relative address, a percent-encoded file name, a subdirectory install, or a wp-content folder outside the WordPress directory all reported 0 bytes. Every address is now resolved against the page it was found on, then located with the site path stripped and wp-content resolved to its real directory. Only files inside the WordPress and wp-content folders are ever read. - **Plugins get credit for their own scripts.** The asset table attributed a plugin's assets to "core/other" when the address differed from the site's wp-content URL in scheme, letter case or a `www.` prefix, or used `../` segments, which understated that plugin's page weight. Attribution now matches on the resolved host and path. - **`DRAGONSPEEDDOCTOR_LOOPBACK_BASE` works on subdirectory installs.** A base with a path, such as `http://app-container/wp`, was prefixed onto every request and produced `/wp/wp/...` 404s whose timings were recorded as page performance. The base is now used as an origin only (scheme, host, port); each request keeps its own path. - **The loopback base is validated more strictly.** IP literals must be a full dotted IPv4 or bracketed IPv6 address in a loopback, private or link-local range; integer, shorthand and public IPv6 forms are refused. A hostname is accepted only when every address it resolves to is in such a range, and a name that does not resolve is refused. Signed admin probes can never leave your infrastructure. - **Setup is verified, retried and reported.** Activation recorded the install as complete even when the scans table or the signing secret had not been stored. Both are now checked first; an incomplete install is retried on each admin page load and shown as an admin notice until it succeeds. Existing sites are checked once after updating. - **A diagnosis that cannot be saved is reported as an error.** If the scan could not be started, its progress saved or its results written, it appeared to start or finish normally. It now stops with a clear message. No settings changes. If you use the loopback base with a path, it keeps working; the path is simply ignored.

View full changelog →