Skip to main content

Profinspect

A local web app for visualizing profiling data. Wraps gprof2dot and Graphviz dot with an interactive browser UI featuring pan/zoom, configurable thresholds, and format selection.

Requirements

  • Python 3.12+
  • Graphviz (dot command must be available)
  • gprof2dot (defaults to running via uvx gprof2dot)

Installation

Install from PyPI:

pip install profinspect

Or with uv:

uv pip install profinspect

Usage

profinspect [file] [--port PORT] [--no-browser]

Run with no arguments to open the UI with an empty file input:

profinspect

Pass a profile file to open the UI and immediately render the graph:

profinspect output.pstats
profinspect --port 8080 callgrind.out

The --no-browser flag starts the server without opening a browser window.

You can also run as a module:

python -m profinspect output.pstats

Supported Profile Formats

All formats supported by gprof2dot: prof, pstats, callgrind, perf, collapse, axe, dtrace, hprof, json, sleepy, sysprof, xperf

The format is auto-detected from the file extension when possible (e.g. .pstats, .prof, callgrind.out.*), otherwise, you can override the format manually in the dropdown.

These correspond to the formats supported by gprof2dot. Common examples:

Profiler Format Example
Python cProfile / profile pstats python -m cProfile -o out.pstats script.py
Linux perf perf perf record -g -- ./app && perf script
Valgrind callgrind callgrind valgrind --tool=callgrind ./app
gprof prof gprof ./app gmon.out
FlameGraph / py-spy collapse py-spy record -f raw -o out.collapse

UI Overview

The main view has a collapsible sidebar with options and a pannable/zoomable display area for the SVG graph view.

The graph view updates automatically as you change parameters. You can disable this if you prefer to control the updates with the "Generate" button (or use shortcut Ctrl+Enter).

Sidebar options:

  • File picker (browse button) with auto-detected format
  • Format dropdown with auto-detect or manual override
  • Node and edge threshold sliders (prune low-impact nodes/edges)
  • Filters for functions called from/to
  • Colormap selection (color, bw, gray, pink, print)
  • Advanced: max depth, color skew, path filter, strip C++ names, wrap labels, color by self time, show samples

Zoom controls: buttons for zoom in/out, 1:1 reset, and fit-to-view. Mouse wheel zooms at cursor. Click-drag to pan. Ctrl+Enter triggers generation.

Text selection: click-drag on text within graph nodes to select and copy function names. Panning is disabled over text elements to allow selection.

Settings

Accessible from the Settings tab in the UI. Persisted to ~/.config/profinspect/settings.json.

Configurable values:

  • command to run gprof2dot (default: gprof2dot, you can use uvx gprof2dot)
  • command to run Graphviz dot (default: dot)
  • Default values for all generation options (thresholds, colormap, etc.)

Metadata

Release files for profinspect 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for profinspect 0.1.1
File Size Uploaded
profinspect-0.1.1.tar.gz 23.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for profinspect 0.1.1
File Interpreter ABI Platform
profinspect-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 40.8 kB

Release files / profinspect-0.1.1.tar.gz

Download URL profinspect-0.1.1.tar.gz
Size 23.1 kB
Tags Source
SHA-256 checksum
How to use checksums
15e2cabd040ed2fc56dec473e4ad5f1420d29414b36bb085e1581a6353b1e4d7
BLAKE2b-256 checksum
How to use checksums
07975b5bec37bf8fb8d860a7737bc8209799b90b0b5b6c184542b83e87cab356
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 28, 2026.

Transparency log

Release files / profinspect-0.1.1-py3-none-any.whl

Download URL profinspect-0.1.1-py3-none-any.whl
Size 17.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d8861f4248375ce22796ea7457de9e29f45428a5fe578cbb7d010e85bd85300b
BLAKE2b-256 checksum
How to use checksums
d1d06cdb11a245f078bd17fabd5deb159e4069115d3ee99e21750d7e792c605b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page