Read a .cpuprofile without opening DevTools
Upload the V8 profile your Node process wrote and get findings, not a flame chart to scrub through.
Node ships a perfectly good profiler and a viewer that assumes you are sitting in front of a browser with the tab still open. That is a poor fit for a profile captured from a container at three in the morning. flamelens takes the file itself.
The formats Node already produces
Whatever wrote the profile, flamelens reads it.
- V8 .cpuprofile from `--cpu-prof` or the inspector
- Chrome DevTools performance traces
- speedscope exports
Findings across the async boundary
Where the time went, including the parts that are not on one stack.
- Hot synchronous paths ranked by self time
- Event-loop blocking called out explicitly
Dependency time separated from yours
Knowing it is in a library is half the fix.
- Findings attribute frames to the package they came from
- Your code and node_modules reported distinctly
A report per capture
History and a PDF, same as every other format.
- Compare a capture before and after a change
- Attach the PDF to the pull request
How to capture a Node.js profile →
Frequently asked questions
How do I capture a .cpuprofile?
The simplest way is `node --cpu-prof your-app.js`, which writes a .cpuprofile on exit. For a long-running service, start the inspector and take a profile through it, or use a library that triggers one on demand.
Does this work for a profile taken in the browser?
Yes. A Chrome DevTools performance trace is one of the supported formats, so a front-end capture analyses the same way a server-side one does.
Will it find my event-loop stalls?
Long synchronous work on the main thread is exactly the shape a CPU profile captures well, and it is called out as its own finding rather than left for you to infer from a wide frame.
Upload a profile. Leave with a plan.
Free to start — 10MB recordings, full reports, no card.
Create a free account