$ cnpm install rollup-plugin-visualizer
Visualize and analyze your bundle to quickly see which modules are taking up space.

npm install --save-dev rollup-plugin-visualizer
or via yarn:
yarn add --dev rollup-plugin-visualizer
This package requires Node.js >= 22.
Import the plugin:
import { visualizer } from "rollup-plugin-visualizer";
Or in CommonJS:
const { visualizer } = require("rollup-plugin-visualizer");
rollup.config.js)import { visualizer } from "rollup-plugin-visualizer";
export default {
plugins: [
// Keep it last.
visualizer(),
],
};
rolldown.config.ts)import { defineConfig, type RolldownPlugin } from "rolldown";
import { visualizer } from "rollup-plugin-visualizer";
export default defineConfig({
plugins: [visualizer() as RolldownPlugin],
});
vite.config.js)import { visualizer } from "rollup-plugin-visualizer";
export default {
plugins: [visualizer()],
};
vite.config.ts)import { defineConfig, type PluginOption } from "vite";
import { visualizer } from "rollup-plugin-visualizer";
export default defineConfig({
plugins: [visualizer() as PluginOption],
});
vite.config.js)import { visualizer } from "rollup-plugin-visualizer";
export default {
plugins: [
visualizer({
emitFile: true,
filename: "stats.html",
}),
],
};
SvelteKit may run Vite multiple times, so you can get 2-3 generated files in .svelte-kit/output (check Vite logs for exact locations).
You can also generate raw JSON reports and merge them with the CLI.
node_modules.The circular view is useful for spotting large chunks of code. Clicking an arc zooms into that section and enlarges nested arcs for inspection.
This is a top-down version of the sunburst view and should feel familiar if you use other JavaScript performance tooling.
This rectangular hierarchical view makes large modules easy to find quickly. It can also reveal repeated modules, because repeated content tends to show similar structure and relative size.
Use this view to answer, "Why is this included?"
After the force layout stabilizes, you can drag nodes around. Gray circles are tree-shaken files.
In real projects, network graphs can look noisy. A practical way to explore them is:
commonjsHelpers, tslib, react) when they dominate the graph.Clicking a node highlights nodes listed in its tooltip (the files that import that node).
Produces JSON output with raw data. Usually used together with the CLI.
Produces a YAML file with report data. This is useful to commit and track bundle changes over time.
Produces a Markdown report with summary tables and notes about config and size precision.
filename (string, default stats.{ext based on template}): Name of the generated report file.title (string, default Rollup Visualizer): HTML <title> value.open (boolean, default false): Open the generated file in your default browser.template (string, default treemap): Report type: sunburst, treemap, treemap-3d, network, raw-data, list, markdown, flamegraph.gzipSize (boolean, default false): Include gzip size in the report.brotliSize (boolean, default false): Include Brotli size in the report.emitFile (boolean, default false): Use Rollup emitFile to generate output. Useful when you want all assets managed by Rollup output settings. Also helpful for SvelteKit multi-build runs. When this is true, filename must be a file name, not a path.sourcemap (boolean, default false): Use source maps for module size calculations (for example after Terser/UglifyJS). Keep this plugin last.projectRoot (string | RegExp, default process.cwd()): Common root path used to trim absolute file paths in reports.include (Filter | Filter[], default undefined): Include filter.exclude (Filter | Filter[], default undefined): Exclude filter.Filter type: { bundle?: picomatchPattern, file?: picomatchPattern }
Note on include and exclude:
If include is omitted or empty, files are included by default.
Otherwise, an ID must match at least one include pattern and must not match any exclude pattern.
Filters use picomatch globs, and support these forms:
translation-*.js:*/**/index.jstranslation-*.js:*/**/index.jsFormat: BUNDLE_GLOB:FILE_GLOB (: is required when bundle matching is used).
This package provides a CLI utility: rollup-plugin-visualizer.
Use --help to see all available options:
rollup-plugin-visualizer [OPTIONS] stat1.json stat2.json ../stat3.json
This is useful when you have multiple build configs and want to combine reports into one chart.
For local development:
npm run build
Generated HTML files do not include your source code contents. They only include:
This metadata can include:
See CHANGELOG.md.
network, treemap, sunburst, flamegraph) without strict SemVer guarantees.raw-data uses its own version field.list outputs follow SemVer.markdown do not follow any versioning for now and will change as LLM development changesCopyright 2013 - present © cnpmjs.org | Home |