Query Monitor
Query Monitor is the developer tools panel for WordPress and WooCommerce. It enables debugging of database queries, PHP errors, hooks and actions, block editor blocks, enqueued scripts and stylesheets, HTTP API calls, and more. It includes some advanced features such as debugging of Ajax calls, REST API calls, user capability checks, and full support for block themes and full site editing. It includes the ability to narrow down much of its output by plugin or theme, allowing you to quickly determine poorly performing plugins, themes, or functions. Query Monitor focuses heavily on presenting its information in a useful manner, for example by showing aggregate database queries grouped by the plugins, themes, or functions that are responsible for them. It adds an admin toolbar menu showing an overview of the current page, with complete debugging information shown in panels once you select a menu item. Query Monitor supports versions of WordPress up to three years old, and PHP version 7.4 or higher. For complete information, please see the Query Monitor website. Here’s an overview of what’s shown for each page load: Database queries, including notifications for slow, duplicate, or erroneous queries. Allows filtering by query type (SELECT, UPDATE, DELETE, etc), responsible component (plugin, theme, WordPress core), and calling function, and provides separate aggregate views for each. The template filename, the complete template hierarchy, and names of all template parts that were loaded or not loaded (for block themes and classic themes). PHP errors presented nicely along with their responsible component and call stack, and a visible warning in the admin toolbar. Usage of “Doing it Wrong” or “Deprecated” functionality in the code on your site. Blocks and associated properties within post content and within full site editing (FSE). Matched rewrite rules, associated query strings, and query vars. Enqueued scripts and stylesheets, along with their dependencies, dependents, and alerts for broken dependencies. Language settings and loaded translation files (MO files and JSON files) for each text domain. HTTP API requests, with response code, responsible component, and time taken, with alerts for failed or erroneous requests. User capability checks, along with the result and any parameters passed to the capability check. Environment information, including detailed information about PHP, the database, WordPress, and the web server. The values of all WordPress conditional functions such as is_single(), is_home(), etc. Transients that were updated. Usage of switch_to_blog() and restore_current_blog() on Multisite installations. In addition: Whenever a redirect occurs, Query Monitor adds an HTTP header containing the call stack, so you can use your favourite HTTP inspector or browser developer tools to trace what triggered the redirect. The response from any jQuery-initiated Ajax request on the page will contain various debugging information in its headers. PHP errors also get output to the browser’s developer console. The response from an authenticated WordPress REST API request will contain an overview of performance information and PHP errors in its headers, as long as the authenticated user has permission to view Query Monitor’s output. An an enveloped REST API request will include even more debugging information in the qm property of the response. By default, Query Monitor’s output is only shown to Administrators on single-site installations, and Super Admins on Multisite installations. In addition to this, you can set an authentication cookie which allows you to view Query Monitor output when you’re not logged in (or if you’re logged in as a non-Administrator). See the Settings panel for details. Browser extension Query Monitor is also available as an optional browser dev tools extension. This is an alternative to using the in-page panel that gets output into the admin toolbar. Using the browser extension has some advantages over the in-page panel: The Query Monitor panel doesn’t take up space within the page you are inspecting The panel can be resized, undocked, and moved around like any other developer tools panel Information about the Query Monitor browser extension can be found here. Other Plugins I maintain several other plugins for developers. Check them out: User Switching provides instant switching between user accounts in WordPress. WP Crontrol lets you view and control what’s happening in the WP-Cron system Thanks The time that I spend maintaining this plugin and others is in part sponsored by: Automattic ServMask WP Staging All my kind sponsors on GitHub Privacy Statement Query Monitor is private by default and always will be. It does not persistently store any of the data that it collects. It does not send data to any third party, nor does it include any third party resources. Query Monitor’s full privacy statement can be found here. Accessibility Statement Query Monitor aims to be fully accessible to all of its users. Query Monitor’s full accessibility statement can be found here.
Top keywords
- query18×2.25%
- monitor15×1.87%
- query monitor15×1.87%
- information9×1.12%
- panel7×0.87%
- wordpress7×0.87%
- browser6×0.75%
- output6×0.75%
- php6×0.75%
- api5×0.62%
- debugging5×0.62%
- full5×0.62%
WPHI Diagnostic Suite Lite
You already know something is wrong. This plugin tells you what, why, what the root cause is — and exactly how to fix it. 🔴 Try the live demo — no install required Most WordPress diagnostic tools show you a list of problems. WPHI Diagnostic Suite goes further: it reads your PHP error log, groups every error by severity and frequency, traces each one back to the cause, and checks whether a recent update triggered it. It then gives you a structured “error map” for each error — plain-English explanation, probable cause extracted from the actual function or class that failed, impact level, numbered fix steps, and WP-CLI commands specific to the error type. It also includes a live error log with its own PHP error handler. Clear it, reproduce the problem, and see exactly which new errors appeared — without wading through weeks of historical noise. This makes it a practical debugging workflow, not just a report. It does all of this without touching a single row of your data. Every query is SELECT-only. No cleanups, no automation, no risk. Who is this for? ✅ Site owners who see “something is wrong” on their dashboard and don’t know where to start. ✅ Developers who need to diagnose a client site quickly without installing Query Monitor on production. ✅ Agencies managing multiple WordPress sites who need a fast, reliable read on site health before and after maintenance. ✅ Anyone who has ever looked at a PHP error log and not known what to do next. What makes this different Most diagnostic plugins show you numbers. This one tells you what the numbers mean for your site, right now — and which plugin, theme, or other issue is responsible. Error maps, not error lists. When the Error Log Viewer finds a PHP fatal error, it doesn’t just show you the message and file. It opens a structured “error map” with five sections: what this error class means in plain English, the probable cause based on the actual function or class name extracted from the message, the impact on visitors, numbered fix steps specific to this error type, copyable WP-CLI commands, and a prevention tip. A “Call to undefined function wc_get_cart()” gets different advice than a “Cannot redeclare foo()” — because they’re different problems. A live error log you can clear and retest. Beyond your main PHP error log, the plugin registers its own PHP error handler that captures errors into a separate log you control. Clear it, reproduce the issue, and see exactly which new errors appear — without wading through weeks of accumulated historical noise. This turns error diagnosis into an actual workflow rather than a guessing game. Change correlation — which update caused it. The What Changed? module tracks every plugin and theme update, activation, and WordPress core update as a timestamped event. When a PHP error appears, it calculates a 0–99 correlation score between the error and the most likely change that caused it — using file-path matching (the error originates inside the updated plugin’s folder) as the primary signal, scoring 80–99 when it’s near-certain. You can see at a glance whether last night’s WooCommerce update is responsible for today’s fatal errors. Plugin attribution everywhere. It’s not enough to know you have custom database tables. You need to know which plugin owns each one, how many rows each table has, and what would happen if you deactivated that plugin. The Blast Radius module traces every custom table, every scheduled cron job, and every REST API namespace back to the plugin that created it — using callback Reflection, file scanning, and a curated fingerprint database covering 30+ popular plugins. Recommended diagnostic paths based on your live data. The dashboard reads your current error log, autoload size, overdue cron count, and pending update count, then surfaces the two or three diagnostic paths most likely to lead you to the root cause of your current problem — in the right order. No generic checklists. Paths are ordered by how strongly your live data points to each scenario. The 10 Lite Modules WPHI Diagnostic Suite Lite includes ten read-only diagnostic modules, free forever. Pro adds ten more for twenty in total — see below. 🏥 Health Score Dashboard An animated 0–100 gauge computed from all module findings. Issues are listed with severity labels and direct links to the relevant module. Opens instantly — no page scan required. 🔍 Error Log Viewer Parses your PHP error log and groups identical errors by severity and frequency. Each group shows severity, occurrence count, first and last seen timestamps, file path, line number, and a full error map with fix steps and WP-CLI commands. A “What Changed?” button on each card checks whether a recent update correlates with the error’s appearance. Error log search filters live without a page reload and composes correctly with pagination. Also includes a live error log powered by the plugin’s own PHP error handler — separate from debug.log. Clear it at any time, reproduce the issue, and see exactly which new errors are generated. This makes it a practical debugging workflow: clear, reproduce, read, fix, repeat. 📡 What Changed? — Timeline Correlation “Something broke after an update” is the most common WordPress problem — and the hardest to diagnose without this. Tracks plugin updates, activations/deactivations, WordPress core updates, and theme changes as timestamped events. Displays them on an interactive SVG timeline alongside PHP error spikes. Each error-to-change pairing gets a 0–99 confidence score: file-path matching (the error originates inside the updated plugin’s folder) scores 80–99 — near-certain attribution. Clicking any correlation finding shows the confidence score, the reasoning, and the specific files involved. 🗄️ DB Health Inspector Shows every autoloaded option ranked by size with colour-coded severity. Flags orphaned postmeta rows left by removed plugins, and lists every table exceeding 50 MB. Identifies the exact options driving your autoload overhead. ⚡ Autoload Governor Full per-plugin autoload attribution — know which plugin owns each option. Includes Deep Autoload Diagnostics with five detection passes: orphaned options from removed plugins (80+ plugin fingerprint database), autoloaded transients, duplicate cache clusters, migration remnants from backup tools, and stale WooCommerce sessions. Each finding shows the size in KB and includes a ready-to-run WP-CLI command. 🎯 Blast Radius Analyzer Every custom database table attributed to its owning plugin — with name, version, and approximate row count. Every non-core cron job attributed via callback Reflection and hook-name fingerprinting. Know exactly which plugins have the deepest footprint on your site and what removing them would affect. 🖼️ Asset Inspector Every JavaScript and CSS file WordPress enqueues on the front end, with individual file sizes and running totals. If a plugin loads a 400 KB script on pages where it’s not needed, this is where you find it. 🕐 Cron Inspector Every WP-Cron and Action Scheduler job with its next run time and recurrence interval. Overdue jobs are highlighted — they run on the next page request and spike load for that visitor. 💣 Time Bomb Detector Checks your SSL certificate expiry and warns you 30 days in advance. An expired SSL certificate is a site outage your visitors experience before you do. 🖥️ Server & PHP Environment PHP memory limit, max execution time, upload limits, OPcache status, and server software details. The configuration ceiling that caps everything else your site can do. Plus: Export Report Beyond the ten modules, Lite includes a built-in Export Report feature: download a self-contained HTML report covering health score, database metrics, error log summary, and system snapshot — useful for sharing findings with a developer or keeping as a pre-maintenance baseline. (Pro expands the report to cover every module in full detail.) Recommended Diagnostic Paths The dashboard evaluates seven common WordPress problem scenarios against your live site data and surfaces the ones most relevant right now: Something broke after an update — What Changed? → Error Log → Blast Radius Slow admin panel — Autoload Governor → Cron Inspector → DB Health Checkout or payment issues — Error Log → Cron Inspector → Blast Radius Random outages — Error Log → Server & PHP → Cron Inspector Plugin conflict suspected — Error Log → Blast Radius → Conflict Detector (Pro) Database errors — Error Log → DB Health → Blast Radius Performance regression — Asset Inspector → Autoload Governor → DB Health Each path shows specific errors from your log that triggered the recommendation, so you know exactly what you’re chasing before you open the first module. 100% Read-Only. Safe on Any Live Site. Every query this plugin runs is SELECT, SHOW, or SHOW INDEX. It never writes, updates, or deletes anything. There is no cleanup feature, no auto-fix button, no risk. It was designed from the ground up to be safe on live production sites — because that’s where you need a diagnostic tool most. Free. No Account. No Expiry. No Ads. All ten Lite modules listed above are free forever. No trial period, no nag screens, no email signup, no telemetry, no usage limits. Start free. Grow into Pro when you need it. Install Lite today — ten modules, no account, no expiration — and you already have enough to diagnose most “why did my site break?” emergencies. When you’re ready to go from diagnosing problems to preventing them, Pro runs alongside Lite and adds ten more modules, twenty in total: Root Cause Analysis — stops you guessing. Correlates findings from every module into one plain-language conclusion, names the plugin responsible, and gives you the WP-CLI commands to act — with a “Primary Suspect” callout when the evidence converges. Pre-Update Impact Analysis — see the risk before you click update. Each pending update gets a Blast Radius Score (0–100) and a Low/Moderate/High/Critical rating, so a routine update never becomes a Monday-morning outage again. Conflict Detector — finds the plugins fighting over the same hooks, loading duplicate assets, or stepping on each other’s functionality — with names, versions, and one-click deactivation. Request Profiler — per-request execution timing, memory, query counts, and a full hook timeline. The deep view for when “the site feels slow” needs a real answer. External Dependency Monitor — watches outbound calls to payment gateways, APIs, and CDNs, and flags the slow or failing ones dragging your site down. Performance Baselines — records snapshots over time and flags regressions automatically, so you catch the slow creep before your visitors do. Core Web Vitals Estimation — server-side LCP, CLS, and INP signals tied to the issues actually causing them. Security Audit — visibility into user roles, file integrity, and exposed endpoints, so you know where you’re exposed before someone else finds out. Risk Indicators — scans every plugin for deprecated functions and hooks against the WordPress.org compatibility API, surfacing tomorrow’s breakage today. Content Health — surfaces the content-layer issues — orphaned data, structural problems — that quietly accumulate and degrade a site over time. You don’t need any of this to get started. Install the free version, find your problem, and upgrade to Pro at any time. See the full twenty-module lineup and Pro pricing →