npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

rollup-plugin-visualizer

v7.1.1

Published

Visualize and analyze your bundle to quickly see which modules are taking up space.

Readme

Rollup Plugin Visualizer

Visualize and analyze your bundle to quickly see which modules are taking up space.

NPM Version Node.js CI

Screenshots

pic

Installation

npm install --save-dev rollup-plugin-visualizer

or via yarn:

yarn add --dev rollup-plugin-visualizer

Requirements

This package requires Node.js >= 22.

Usage

Import the plugin:

import { visualizer } from "rollup-plugin-visualizer";

Or in CommonJS:

const { visualizer } = require("rollup-plugin-visualizer");

Rollup (rollup.config.js)

import { visualizer } from "rollup-plugin-visualizer";

export default {
  plugins: [
    // Keep it last.
    visualizer(),
  ],
};

Rolldown (rolldown.config.ts)

import { defineConfig, type RolldownPlugin } from "rolldown";
import { visualizer } from "rollup-plugin-visualizer";

export default defineConfig({
  plugins: [visualizer() as RolldownPlugin],
});

Vite (vite.config.js)

import { visualizer } from "rollup-plugin-visualizer";

export default {
  plugins: [visualizer()],
};

Vite + TypeScript (vite.config.ts)

import { defineConfig, type PluginOption } from "vite";
import { visualizer } from "rollup-plugin-visualizer";

export default defineConfig({
  plugins: [visualizer() as PluginOption],
});

SvelteKit (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.

Understanding The Report

  • Blue marks project files (including files generated by your build tool).
  • Green marks dependencies.
  • This is determined by whether a file path starts with node_modules.
  • All chart layouts refresh when the window is resized.

Sunburst

The circular view is useful for spotting large chunks of code. Clicking an arc zooms into that section and enlarges nested arcs for inspection.

Flamegraph

This is a top-down version of the sunburst view and should feel familiar if you use other JavaScript performance tooling.

Treemap

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.

Network

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:

  1. Remove highly connected helper nodes (for example commonjsHelpers, tslib, react) when they dominate the graph.
  2. Wait for layout stabilization.
  3. Explore clusters that become easier to read.

Clicking a node highlights nodes listed in its tooltip (the files that import that node).

Raw-data

Produces JSON output with raw data. Usually used together with the CLI.

List

Produces a YAML file with report data. This is useful to commit and track bundle changes over time.

Markdown

Produces a Markdown report with summary tables and notes about config and size precision.

Options

  • 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.

Advanced options (only if needed)

  • 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.

Include And Exclude

Filters use picomatch globs, and support these forms:

  • Bundle + file in one string: translation-*.js:*/**/index.js
  • Bundle only: translation-*.js:
  • File only (default): */**/index.js

Format: BUNDLE_GLOB:FILE_GLOB (: is required when bundle matching is used).

CLI

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.

Build plugin

For local development:

npm run build

Disclaimer about generated files

Generated HTML files do not include your source code contents. They only include:

  • JS/HTML/CSS required for the chart UI
  • Statistical metadata about your code

This metadata can include:

  • Sizes of files in the bundle
  • Sizes of files in source maps
  • File paths
  • File hierarchy

Upgrades

See CHANGELOG.md.

Versioning

  • The plugin API (the part used in your build config) follows SemVer.
  • Frontend report templates can change visual details (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 changes