MITS Profiler

Description

MITS Profiler adds a diagnostic bar to any page by appending ?mits_prof=1 to the URL. It captures timing data from the moment PHP starts and presents it in a dark-themed panel at the bottom of the page — visible only to logged-in administrators.

Tabs included:

  • Timeline — absolute and relative timing between WordPress lifecycle hooks (plugins_loaded init wp_head wp_footer)
  • Hooks — top 50 slowest action/filter hooks with total time and call count
  • Options — most-queried WordPress options + full autoload audit with sizes
  • Plugins — loaded PHP file sizes per plugin (proxy for load time)
  • Assets — all enqueued scripts and styles, external ones highlighted
  • HTTP — outgoing wp_remote_* requests with response time and status
  • SQL — all database queries with slow-query highlighting (requires SAVEQUERIES)
  • PHP — PHP version, OPcache status and hit rate, memory and execution limits

Key features:

  • Zero HTTP loopback — works behind Cloudflare, reverse proxies and strict firewall rules
  • No external dependencies or requests
  • Admin-only: the panel and all data are never shown to guests
  • Export to JSON or CSV for offline analysis
  • Works on front-end pages, WooCommerce pages, and WP Admin

SQL query logging requires adding the following to wp-config.php:

define('SAVEQUERIES', true);

Screenshots

Installation

  1. Upload the mits-profiler folder to /wp-content/plugins/
  2. Activate the plugin in Plugins Installed Plugins
  3. Go to MITS Profiler in the admin menu to open the control panel
  4. Click Profiluj w nowej karcie or manually append ?mits_prof=1 to any URL

FAQ

Does this plugin slow down my site for visitors?

No. The profiler only activates when ?mits_prof=1 is present in the URL, and even then it only renders its output for logged-in administrators. Regular visitors are completely unaffected.

Does it work behind Cloudflare?

Yes. Unlike profilers that rely on HTTP loopback requests (which Cloudflare blocks), MITS Profiler measures time inline within the same PHP process — no outgoing requests needed.

How do I see database queries?

Add define('SAVEQUERIES', true); to your wp-config.php before the line /* That's all, stop editing! */. Remember to remove it when done, as it adds overhead on every page load.

The panel does not appear

Make sure you are logged in as an administrator and that the URL contains ?mits_prof=1 (or &mits_prof=1 if the URL already has a query string).

Reviews

There are no reviews for this plugin.

Contributors & Developers

“MITS Profiler” is open source software. The following people have contributed to this plugin.

Contributors

Translate “MITS Profiler” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.3.0

  • All CSS/JS now enqueued via wp_add_inline_style() and wp_add_inline_script() — no direct / output
  • Admin page assets enqueued through admin_enqueue_scripts hook
  • Static profiler bar functions extracted from render() to a registered script handle
  • Added wpaluchmits to Contributors
  • All echoed variables escaped or cast to int/float; $row() closure wraps every cell in wp_kses()

1.2.0

  • Added full MITS wordmark logo in admin panel header
  • Admin notices from other plugins are now hidden on the profiler page
  • Fixed $_SERVER sanitization (wp_unslash + sanitize_text_field)
  • Added phpcs:ignore annotations for intentional direct DB queries

1.1.0

  • Added SQL tab with slow-query highlighting (requires SAVEQUERIES)
  • Added PHP environment tab with OPcache stats
  • Added JSON and CSV export buttons
  • Added HTTP outgoing request tracking via wp_remote_*

1.0.0

  • Initial release: Timeline, Hooks, Options, Plugins, Assets tabs