Generates flamegraphs with Node.js or in the browser


Generates flamegraphs with Node.js or in the browser.

cat instruments-callgraph.csv | flamegraph -t instruments > flamegraph.svg

Try the online flamegraph app

npm install flamegraph

Requires Node.js version 0.11.13 or higher.

flamegraph <options>
Generates a flamegraph from the callgraph data of the given `inputtype` that is streamed into it.
  --inputtype -t      the type of callgraph 'instruments | perf | cpuprofile'
  --fonttype          font family used                  default: 'Verdana'
  --fontsize          base text size                    default: 12
  --imagewidth        max width, pixels                 default: 1200
  --frameheight       max height is dynamic             default: 16.0
  --fontwidth         avg width relative to fontsize    default: 0.59
  --minwidth          min function width, pixels        default: 0.1
  --countname         what are the counts in the data?  default: 'samples'
  --colors            color theme                       default: 'hot'
  --bgcolor1          background color gradient start   default: '#eeeeee'
  --bgcolor2          background color gradient stop    default: '#eeeeb0'
  --timemax           (override the) sum of the counts  default: Infinity
  --factor            factor to scale counts by         default: 1
  --hash              color by function name            default: true
  --titletext         centered heading                  default: 'Flame Graph'
  --nametype          what are the names in the data?   default: 'Function:'
  --removenarrows     removes narrow functions instead of adding a 'hidden' class   default: true
  --internals         include internal functions        default: false
  --optimizationinfo  include optimization indicators   default: false
  --help      -h  print this help message 
  cat instruments-callgraph.csv | flamegraph -t instruments > flamegraph.svg

The input data needs to be generated as follows:

Converts an array of call graph lines into an svg document.

Name Type Description
arr Array.<string>

input lines to render svg for

opts Object

objects that affect the visualization

Name Type Description
profile Object

options passed to cpuprofilify @see cpuprofilify.convert params

fonttype string

type of font to use default: 'Verdana'

fontsize number

base text size default: 12

imagewidth number

max width, pixels default: 1200

frameheight number

max height is dynamic default: 16.0

fontwidth number

avg width relative to fontsize default: 0.59

minwidth number

min function width, pixels default: 0.1

countname string

what are the counts in the data? default: 'samples'

colors string

color theme default: 'hot'

bgcolor1 string

background color gradient start default: '#eeeeee'

bgcolor2 string

background color gradient stop default: '#eeeeb0'

timemax number

(override the) sum of the counts default: Infinity

factor number

factor to scale counts by default: 1

hash boolean

color by function name default: true

titletext string

centered heading default: 'Flame Graph'

nametype string

what are the names in the data? default: 'Function:'


svg the rendered svg

Type string

Converts a stream of call graph lines into an svg document. Not truly streaming, concats all lines before processing.


var fromStream = require('flamegraph/from-stream');
fromStream(process.stdin, opts).pipe(process.stdout);
Name Type Description
stream ReadableStream

that will emit the call graph lines to be parsed

opts Object

same as flamegraph


stream that emits the lines of generated svg

Type ReadableStream

Creates a context from a call graph that has been collapsed (stackcollapse-*) and renders svg from it.

Name Type Description
collapsedLines Array.<string>

callgraph that has been collapsed

opts Object




Type string

generated with docme

This library is an adaptation of @brendangregg's FlameGraph perl scripts.