Introduction
Speedscope is a web-based performance profile viewer that renders interactive flame charts. It supports profiles from dozens of tools across many languages, making it a universal viewer for CPU and memory profiling data. It runs entirely in the browser with no server-side processing.
What Speedscope Does
- Renders flame charts, left-heavy (aggregated) views, and sandwich views
- Imports profiles from pprof, perf, Chrome DevTools, Instruments, and many more
- Provides smooth zooming and panning through large profile datasets
- Highlights individual functions across all call stacks (sandwich view)
- Runs entirely client-side with no data uploaded to any server
Architecture Overview
Speedscope is built with TypeScript and WebGL for high-performance rendering. Profile data is parsed client-side from various formats into a normalized internal model. The flame chart renderer uses WebGL to draw thousands of rectangles efficiently, enabling smooth interaction even with millions of samples. All processing happens in the browser.
Self-Hosting & Configuration
- Use the hosted version at speedscope.app (no install needed)
- Install the CLI globally with
npm install -g speedscope - Run
speedscope profile.jsonto open a profile in your default browser - Self-host by serving the static build output from any web server
- Pipe profiler output directly:
py-spy record -o profile.json && speedscope profile.json
Key Features
- Supports 20+ profile formats across Python, Ruby, Go, Node.js, Java, and native code
- WebGL-based rendering handles profiles with millions of samples smoothly
- Three complementary views: time-ordered flame chart, left-heavy, and sandwich
- No data leaves your machine; all processing is client-side
- Keyboard shortcuts for quick navigation and function search
Comparison with Similar Tools
- Chrome DevTools — Built into Chrome but limited to Chrome profiles; Speedscope supports many formats
- Perfetto UI — Powerful trace viewer; Speedscope is lighter and focused on flame charts
- FlameGraph (Brendan Gregg) — Generates static SVGs; Speedscope provides interactive exploration
- pprof web UI — Go-specific; Speedscope supports profiles from any language
FAQ
Q: Is my profile data uploaded anywhere? A: No. All processing happens in the browser. Your data never leaves your machine.
Q: What profile formats are supported? A: pprof, Chrome DevTools, Instruments, perf, collapsed stacks, Pyinstrument, VizTracer, and many more.
Q: Can I use it offline? A: Yes. Install via npm and run locally, or download the static build for fully offline use.
Q: How does the sandwich view work? A: It shows a selected function in the center, with callers above and callees below, aggregated across all occurrences.