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