Plugin Directory

Query Monitor

View debugging and performance information on database queries, hooks, conditionals, HTTP requests, redirects and more.


  • Add a new panel which lists duplicated database queries.
  • Add support for displaying QM's output when viewing an embed.
  • Differentiate regular plugins from mu-plugins when displaying components.
  • Ensure early errors are always reported regardless of system level error reporting.
  • Ensure that script and style dependency highlighting is restricted to the scripts and styles tables, respectively.
  • Rearrange the Environment section output a little.
  • Various minor tweaks.


  • Query callers and query components can now be clicked to filter the main query list by that caller or component.
  • Add support for pausing Jetpack's Infinite Scroll module when viewing QM output in the footer.
  • Add support for WordPress.com VIP Go shared plugins as an explicit component.
  • Send nocache headers when QM is active.
  • Various minor tweaks.


  • Introduce a new panel which displays all matching rewrite rules for the current request.
  • Remove the deprecated is_comments_popup() from the list of conditionals.
  • Improve the display of scripts and styles which are blocked by Airplane Mode (0.1.4 and later).
  • Gracefully handle enqueued assets which are deregistered late without being unenqueued.
  • Add a filter to hide the extended query information prompt.
  • Various minor bugfixes and code quality tweaks.


  • Correctly detect the file name and line number responsible for loading translation files in plugins which use load_textdomain().
  • Correct the visibility of the before_output() method in the REST dispatcher.
  • Load the languages collector early so it catches plugins which load their translation files when they initialise.
  • Remove an erroneous double quote.
  • Remove connection as param in mysqli_get_client_version().
  • Various CSS fixes.


  • A new Languages component for debugging languages and text domains. Thanks, @MPolleke!
  • REST API debugging in the form of HTTP headers when performing an authenticated REST API request. Shows PHP errors when relevant, along with an overview of memory usage, processing time, database query number, and database query time.
  • Various visual improvements, including displaying the relevant file name below stack trace functions, and a more visible stack trace expansion toggle.
  • Add is_embed(), is_comment_feed(), and is_user_admin() to the list of conditional functions.
  • Add HHVM, SAPI, and MySQL client info to the Environment component.
  • QM is now not loaded at all on the CLI.
  • Avoid an issue with the CloudFlare Flexible SSL plugin.
  • Improve the output of Multisite's $current_blog and $current_site in the Request component.
  • Fully handle Windows paths when detecting a file component.
  • Don't display the symlink warning when using a secondary instance of WPDB.
  • Whole bunch of internal structure refactoring, escaping, and other misc tweaks.


  • An unknown component now gets marked as such, not as Core.
  • Support for invokable objects in action and filter callbacks.
  • Fix fatal error when activating Debug Bar plugin after Query Monitor has already been activated.
  • Implement escaping inside QM_Output_Html::format_url() which can deal with unsafe output. Thanks to Stephen Harris for the responsible disclosure.


  • Improvements to the shutdown handler for PHP errors, so it handles syntax and compilation errors too.


  • Implement a shutdown handler for PHP errors to avoid fatals being unintentionally hidden when display_errors is on.
  • Don't attempt to do anything with scripts and styles if a corresponding header action hasn't fired.
  • Don't sort the enqueued scripts and styles, so they're output in the order in which they're enqueued.
  • For the time being, let's not load QM when using the CLI because we've no persistent storage and no means of outputting collected data on the CLI.
  • Call static methods using their class name, not a variable. Fixes compatibility with PHP 5.2.


  • Display a warning (rather than triggering a fatal error) for scripts and style dependencies which have gone missing during the duration of the page load.
  • Tweak some more Debug Bar add-on styles.
  • Ensure erroneous non-SELECT queries are also highlighted in red.
  • Further tweaks to QM's output if JavaScript isn't available for any reason.
  • Add PHP4-style constructors to the Debug Bar classes to avoid fatals with Debug Bar add-ons which are explicitly using them.
  • In the event that QM's JavaScript doesn't get enqueued, force the QM output to display so users can at least debug the issue.
  • Remove the abstract output() methods from abstract classes which implement QM_Output to avoid PHP bug #43200.
  • Fixing a notice in the admin component when get_current_screen() isn't an object.


  • Detect broken dependencies for scripts and styles.
  • Calculate and output the dependents of scripts and styles.
  • Add transparent support for Debug Bar add-on panels.
  • Add support for WordPress.com VIP plugins in the component detection.
  • Sortable and filterable columns for HTTP requests.
  • Display a warning when something's hooked onto the all action.
  • Clearer output for the template file and component names when a child theme is in use.
  • Move the current blog information to the Request component. Display current site information if we're running a multi-network.
  • Allow default error handlers, such as error logging, to continue to function as expected.
  • Don't skip outputting the calling function name in the database error list.
  • New namespaced filter names for a bunch of filterable things.
  • Add a qm/process filter to allow users to disable QM's processing and output.
  • Display the value of WP_HTTP_BLOCK_EXTERNAL and WP_ACCESSIBLE_HOSTS in the HTTP component.
  • New storage and registration mechanisms for collectors, dispatchers, and output handlers.
  • CSS tweaks to better match wp-admin styles.


  • Add compatibility with PHP 5.3.6 and lower. DirectoryIterator::getExtension() isn't available on this version (and also as it's part of SPL it can be disabled).
  • Simplify the admin CSS to avoid QM's output being covered by the admin menu.
  • Add support for footer styles in the scripts and styles component.
  • Update the authentication JavaScript so it works cross-protocol.


  • New Scripts & Styles component
  • Support for the new is_customize_preview() conditional
  • More robust handling of HTTP requests short-circuited with pre_http_request
  • Introduce a query_monitor_silent_http_error_codes filter to allow certain WP_Error codes to be silenced in HTTP requests
  • Split SQL queries on LEFT, OUTER, and RIGHT too
  • Gracefully avoid fatal errors if a site is moved and the db.php symlink is no longer pointing to the correct location
  • Pause Infinite Scroll when Query Monitor is viewed
  • Support the new admin menu behaviour in WP 4.1
  • Fix the positioning of output when using the Twenty Fifteen theme
  • Switch to an AJAX call for setting and clearing QM's authentication cookie


  • RTL layout tweaks
  • Correct the component detection logic so it's more accurate
  • Re-implement output on the login screen which went missing
  • Display a few more proxy and debugging related constants


  • Use an actual authentication cookie instead of a nonce in the Authentication component
  • Implement some extra methods of determining the current user/group
  • Move the loading of dispatchers to the plugins_loaded hook so plugins can add their own
  • Misc performance improvements


  • More robust support for alternative database drivers (including mysqli in core)
  • Avoid warnings and notices when a custom database class is in place and it's not saving queries (ie. HyperDB)
  • Better handling when certain functions (such as memory_get_peak_usage()) are disabled


  • Avoid the "Class 'QM_Backtrace' not found" error
  • Correct the layout of the Slow Queries and Query Errors panels
  • Move back-compat CSS into its own file
  • Huge simplification of code in db.php by using parent::query()
  • Misc visual tweaks


  • Introduce sortable columns for database query times and numbers
  • Display the queried object in the Request panel
  • Fix the admin menu behaviour when viewing QM output
  • Fixes for output buffering and AJAX requests
  • Several bits of code cleanup


  • Clickable stack traces and file names if you've configured Xdebug's file_link_format setting
  • Show the number of times each PHP error has been triggered
  • Visual bugfixes when using Firefox
  • Fix a bug which was preventing AJAX debugging from being output
  • Fix a fatal error when using PHP 5.2 on Windows
  • Display HTTP proxy information when appropriate
  • Introduce the QM_DISABLE constant for unconditionally disabling Query Monitor
  • Always return true from our PHP error handler to suppress unwanted PHP error output (eg. from Xdebug)
  • Internals: Much more robust logic and even more separation of data collection and output
  • Internals: Many performance improvements


  • Fix two fundamental stability and compatibility issues (great news)
  • Various visual tweaks
  • Handle some uncommon use cases of the HTTP API


  • Remove a file that was accidentally committed to the wordpress.org repo


  • Toggleable stack traces for queries
  • Show deprecated errors in the PHP Errors panel
  • Replace the Query Vars panel with a Request panel with more information
  • Display a warning when db.php isn't in place
  • Fix some PHP 5.2 compatibility
  • Considerable restructuring of the underlying code to increase abstraction


  • Fix the "Invalid header" issue. Woo!


  • Better layout for the Hooks panel
  • Fix some AJAX issues
  • Fix some output buffer compatibility issues which were causing fatal errors


  • Avoid a fatal error when strict errors are triggered at compile time
  • Avoid a warning when PDO or Mysqli is in use
  • Updated CSS for WordPress 3.8. Retains support for default 3.7 and MP6 on 3.7
  • Tweak PHP error_reporting in the Environment component


  • Show an inline error when a hook has an invalid action
  • Show a warning in the admin toolbar when HTTP requests fail
  • Fix the time shown when filtering queries
  • Fix empty stack traces (regression at some point)


  • Prevent uncaught exceptions with static method actions
  • Misc formatting tweaks


  • Un-break query filtering
  • Performance improvements


  • Display the component for HTTP requests, transients, PHP errors, and hook actions
  • Improved visual appearance and layout
  • Add an action component filter to the Hooks panel
  • Log errors returned in the pre_http_request filter
  • QM_DB_LIMIT is now a soft limit
  • Performance improvements


  • Add a hook name filter to the Hooks panel
  • Update db.php to match latest wp-db.php
  • Avoid fatal error if the plugin is manually deleted
  • Add the new is_main_network() conditional
  • Lots more tweaks


  • Un-break all the things


  • New Redirect component
  • Add support for strict errors
  • Display the call stack for HTTP requests
  • Display the call stack for transients
  • Remove pre-3.0 back-compat code
  • Many other bugfixes and tweaks


  • Compat with Xdebug
  • Display the call stack for PHP errors


  • Introduce AJAX debugging (just PHP errors for now)
  • Visual refresh
  • Add theme and stylesheet into to the Theme panel


  • Add error reporting to the Environment panel


  • Don't output QM in the theme customizer


  • Add the database query time to the admin toolbar
  • Various trace and JavaScript errors


  • Load QM before other plugins
  • Show QM output on the log in screen


  • Add filtering to the qyer panel


  • Show component information indicating whether a plugin, theme or core was responsible for each database query
  • New Query Component panel showing components ordered by total query time


  • Show memory usage as a percentage of the memory limit
  • Show page generation time as percentage of the limit, if it's high
  • Show a few bits of server information in the Environment panel
  • Log PHP settings as early as possible and highlight when the values have been altered at runtime


  • A few formatting and layout tweaks


  • Breakdown queries by type in the Overview and Query Functions panels
  • Show the HTTP transport order of preference in the HTTP panel
  • Highlight database errors and slow database queries in their own panels
  • Add a few PHP enviroment variables to the Environment panel (more to come)


  • Change i18n text domain
  • Hide Authentication panel for non-JS
  • Show database info in Overview panel


  • Full WordPress 3.4 compatibility


  • Small tweaks to conditionals and HTTP components
  • Allow filtering of ignore_class, ignore_func and show_arg on QM and QM DB


  • Tweak a few conditional outputs
  • Full support for all WPDB instances
  • Tweak query var output
  • Initial code for data logging before redirects (incomplete)


  • Add full support for multiple DB instances to the Environment component
  • Improve PHP error function stack


  • Fix display of wp_admin_bar instantiated queries
  • Fix function trace for HTTP calls and transients


  • Lots more behind the scenes improvements
  • Better future-proof CSS
  • Complete separation of data/presentation in db_queries
  • Complete support for multiple database connections


  • Lots of behind the scenes improvements
  • More separation of data from presentation
  • Fewer cross-component dependencies
  • Nicer way of doing menu items, classes & title


  • Let's split everything up into components. Lots of optimisations to come.


  • Localisation improvements


  • Admin bar tweaks for WordPress 3.3
  • Add some missing l10n
  • Prevent some PHP notices


  • Just a few rearrangements


  • Show warnings next to MySQL variables with sub-optimal values


  • Fix list of non-default query vars
  • Fix list of admin screen column names in 3.3
  • Lots of other misc tweaks
  • Add RTL support


  • Lots of interface improvements
  • Show counts for transients, HTTP requests and custom query vars in the admin menu
  • Add backtrace to PHP error output
  • Hide repeated identical PHP errors
  • Filter out calls to deprecated*() and trigger_error() in backtraces
  • Show do_action_ref_array() and apply_filters_ref_array() parameter in backtraces
  • Remove the 'component' code
  • Remove the object cache output
  • Add a 'qm_template' filter so themes that do crazy things can report the correct template file


  • Display all custom column filter names on admin screens that contain columns


  • Display more accurate $current_screen values
  • Display a warning message about bug with $typenow and $current_screen values
  • Improve PHP error backtrace


  • Introduce a 'view_query_monitor' capability for finer grained permissions control


  • List body classes with the template output
  • Display calling function in PHP warnings and notices
  • Fix admin bar CSS when displaying notices
  • Remove pointless non-existant filter code

  • Fix a formatting error in the transient table


  • Tweaks to counts, HTTP output and transient output
  • Upgrade routine which adds a symlink to db.php in wp-content/db.php


  • PHP warning and notice handling
  • Add some new template conditionals
  • Tweaks to counts, HTTP output and transient output

Requires: 3.7 or higher
Compatible up to: 4.5.1
Last Updated: 1 month ago
Active Installs: 10,000+


4.9 out of 5 stars


9 of 14 support threads in the last two months have been marked resolved.

Got something to say? Need help?


Not enough data

1 person says it works.
0 people say it's broken.

100,2,2 100,1,1 100,3,3 100,1,1 100,1,1 100,1,1 100,1,1
100,4,4 100,1,1 100,2,2 100,1,1 100,1,1
0,1,0 100,2,2 100,4,4 100,2,2
100,3,3 50,2,1
100,3,3 100,6,6
100,2,2 100,1,1
100,2,2 100,3,3 100,2,2
100,2,2 100,2,2 100,3,3 100,1,1 100,2,2 100,1,1
100,1,1 100,8,8 100,2,2
100,2,2 100,1,1
100,3,3 100,4,4 100,1,1