Search by

sandermuller / stopwatch

SanderMuller

Lightweight profiler for PHP and Laravel. Add checkpoints, measure closures, track queries and memory, and surface results as HTML, Server-Timing headers, log entries, or Debugbar timelines.

Package info

github.com/SanderMuller/Stopwatch

pkg:composer/sandermuller/stopwatch

Statistics

Installs: 56 406

Dependents: 0

Suggesters: 0

Stars: 9

Open Issues: 0

v0.14.0 2026-09-02 12:03 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub PHPStan Action Status Total Downloads License Laravel Compatibility

A lightweight profiler for PHP and Laravel. Add checkpoints, measure closures, track queries, memory and outbound HTTP, and see where the time goes. Use it when a request, command or job feels slow and an APM is more than you need. It runs in production, in tests and in CI.

PHP 8.3+ · Laravel 12.x / 13.x

Installation

composer require sandermuller/stopwatch
php artisan vendor:publish --tag=stopwatch-config   # optional

Quick start

stopwatch()->withQueryTracking()->start();

$users  = User::all();
stopwatch()->checkpoint('Load users');

$orders = Order::where('status', 'pending')->get();
stopwatch()->checkpoint('Load orders');

stopwatch()->toLog('Profile:');
// Profile:
//   [3ms / 3ms]   Load users  (queries=1)
//   [12ms / 15ms] Load orders (queries=1)
//   Total: 15ms

checkpoint() starts the stopwatch on its own, so start() is only needed to reset an earlier run.

Render it as a self-contained HTML card instead:

@stopwatch

The rendered card

Documentation

Published at https://sandermuller.github.io/Stopwatch/.

The sources are in docs/.

Testing

composer test

Changelog

CHANGELOG lists the recent changes.

Contributing

CONTRIBUTING covers local setup and the pull-request process.

Security vulnerabilities

Report a vulnerability through the security policy rather than a public issue.

Credits

License

The MIT License (MIT). Please see the License File for more information.