# vite-bundle-analyzer

> a modern vite bundle analyzer tool

Latest version **1.3.9** (published 2026-07-13) · MIT license · 0 weekly downloads

## Install

```sh
npm install vite-bundle-analyzer
pnpm add vite-bundle-analyzer
yarn add vite-bundle-analyzer
bun add vite-bundle-analyzer
```

Provides the command `analyze`.

## Health

**Score 60/100 (C)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 1.3.9 |
| Published | 2026-07-13 |
| First published | 2023-10-17 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 274.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 468 |
| Author | kanno |
| Maintainers | nonzzz |
| Keywords | vite, rollup, rollup-plugin, vite-plugin, visualizer, treemap, bundle-analyzer, rollup-bundle-analyzer |

## Links

- npm: https://www.npmjs.com/package/vite-bundle-analyzer
- Repository: https://github.com/nonzzz/vite-bundle-analyzer
- Homepage: https://github.com/nonzzz/vite-bundle-analyzer#readme
- Issues: https://github.com/nonzzz/vite-bundle-analyzer/issues
- npm.io page: https://npm.io/package/vite-bundle-analyzer

## Alternatives

- [raw-loader](https://npm.io/package/raw-loader.md) — 4.3M weekly downloads
- [plop](https://npm.io/package/plop.md) — 1.4M weekly downloads
- [webpack-deadcode-plugin](https://npm.io/package/webpack-deadcode-plugin.md) — 80.3K weekly downloads
- [@storybook/preact-vite](https://npm.io/package/@storybook/preact-vite.md) — 54.2K weekly downloads
- [vite-plugin-transform](https://npm.io/package/vite-plugin-transform.md) — 2.4K weekly downloads

## Recent versions

- 1.3.9 (latest) — 2026-07-13
- 0.16.0-beta.4 (beta) — 2024-12-29
- 1.3.8 — 2026-04-27
- 1.3.7 — 2026-04-06
- 1.3.6 — 2026-02-04
- 1.3.5 — 2026-02-03
- 1.3.4 — 2026-02-02
- 1.3.3 — 2026-02-02
- 1.3.2 — 2025-12-14
- 1.3.1 — 2025-12-08
- 1.3.0 — 2025-12-07
- 1.2.4 — 2025-12-05
- 1.2.3 — 2025-08-29
- 1.2.2 — 2025-08-28
- 1.2.1 — 2025-08-09
- … 66 more at https://npm.io/package/vite-bundle-analyzer/versions

## README

<p align="center">
  <img src="https://socialify.git.ci/nonzzz/vite-bundle-analyzer/image?font=KoHo&language=1&logo=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F65625612%3Fs%3D200%26v%3D4&name=1&owner=1&pattern=Circuit%20Board&theme=Auto" alt="vite-bundle-analyzer" width="640" height="320" />
</p>

<p align="center">
  <a href="https://npmjs.com/package/vite-bundle-analyzer">
    <img src="https://img.shields.io/npm/v/vite-bundle-analyzer.svg">
  </a>
  <a href="https://npmjs.com/package/vite-bundle-analyzer">
    <img src="https://img.shields.io/npm/dm/vite-bundle-analyzer.svg">
  </a>
  <a href='https://github.com/sindresorhus/awesome'>
    <img src='https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg' alt='Awesome'>
  </a>
</p>

<p align="center">
  <img src="https://cdn.jsdelivr.net/gh/nonzzz/vite-bundle-analyzer@latest/imgs/now.gif" width="640" height="320" />
</p>

# Vite Bundle Analyzer

A bundle analyzer for Vite, Rollup, and Rolldown that visualizes bundle size with an interactive treemap.

> [!WARNING]
> Vite enables minification by default. The parsed size may appear larger than actual size because bundle info from Rollup isn't compressed. Rolldown support is experimental.

## Installation

```bash
npm install vite-bundle-analyzer -D
# or
yarn add vite-bundle-analyzer -D
# or
pnpm add vite-bundle-analyzer -D
```

## Usage

Plugins only work during the build phase.

### Vite

```js
import { defineConfig } from 'vite'
import { analyzer } from 'vite-bundle-analyzer'

export default defineConfig({
  plugins: [
    analyzer()
  ]
})
```

### Rollup

```js
import { adapter } from 'vite-bundle-analyzer'
import { analyzer } from 'vite-bundle-analyzer'

export default {
  plugins: [
    adapter(analyzer())
  ]
}
```

### Rolldown Plugin (Experimental)

```js
import { unstableRolldownAdapter } from 'vite-bundle-analyzer'
import { analyzer } from 'vite-bundle-analyzer'

export default {
  plugins: [
    unstableRolldownAdapter(analyzer())
  ]
}
```

## Configuration

| Option          | Type                                          | Default                  | Description                                 |
| --------------- | --------------------------------------------- | ------------------------ | ------------------------------------------- |
| `analyzerMode`  | `'server' \| 'static' \| 'json' \| function`  | `'server'`               | Analysis output mode                        |
| `fileName`      | `string \| function`                          | `'stats'`                | Output filename (without extension)         |
| `reportTitle`   | `string`                                      | `'Vite Bundle Analyzer'` | Report page title                           |
| `gzipOptions`   | `Record<string, any>`                         | `{}`                     | Gzip compression options (see zlib module)  |
| `brotliOptions` | `Record<string, any>`                         | `{}`                     | Brotli compression options                  |
| `analyzerPort`  | `number \| 'auto'`                            | `8888`                   | Server port                                 |
| `openAnalyzer`  | `boolean`                                     | `true`                   | Auto-open browser (server/static mode only) |
| `defaultSizes`  | `'stat' \| 'gzip' \| 'brotli'`                | `'stat'`                 | Default size metric                         |
| `summary`       | `boolean`                                     | `true`                   | Show summary in console                     |
| `enabled`       | `boolean`                                     | `true`                   | Enable/disable plugin                       |
| `include`       | `string \| RegExp \| Array<string \| RegExp>` | `[]`                     | Include patterns                            |
| `exclude`       | `string \| RegExp \| Array<string \| RegExp>` | `[]`                     | Exclude patterns                            |
| `pathFormatter` | `(path: string, defaultWd: string) => string` | `undefined`              | Formatting Paths                            |

## CLI

```bash
npx vite-bundle-analyzer

# With options
npx vite-bundle-analyzer --help

# If you're using rolldown-vite pls using the following command

npx vite-bundle-analyzer -e=rolldown-vite
```

## Common Issues

### Empty Chunk Sizes

If chunk sizes appear empty, check for plugins that break source maps (e.g., `@vitejs/plugin-legacy`). The analyzer relies on source maps for accurate size calculation.

### Vite-based Frameworks

For frameworks built on Vite (VitePress, Remix, Qwik), use `analyzerMode: 'server'` for accurate results due to multiple build instances.

### Static Mode Without Server

When `analyzerMode: 'static'` and `openAnalyzer: false`, no development server is created.

## API Integration

```ts
import { SSE, createServer, injectHTMLTag, openBrowser, renderView } from 'vite-bundle-analyzer'

// Create custom server
const server = createServer()
server.get('/', async (c) => {
  const html = await renderView(data, { title: 'Custom Analyzer', mode: 'stat' })
  c.res.writeHead(200, { 'Content-Type': 'text/html' })
  c.res.write(html)
  c.res.end()
})
server.listen(3000)
```

## Debug

```bash
# Vite
vite build --debug

# Environment variable
ANALYZE_DEBUG=true npm run build
```

## Related

- [ROLLDOWN](./ROLLDOWN.md)
- [Q&A](./Q&A.md)
- [CHANGELOG](./CHANGELOG.md)

## Contributors

<p align="center">
  <a href="https://github.com/nonzzz">
    <img src="https://avatars.githubusercontent.com/u/52351095?v=4&s=40" width="40" height="40" alt="Kanno">
  </a>
  <a href="https://github.com/a3mitskevich">
    <img src="https://avatars.githubusercontent.com/u/77048647?v=4&s=40" width="40" height="40" alt="Aleksandr Mitskevich">
  </a>
  <a href="https://github.com/mengdaoshizhongxinyang">
    <img src="https://avatars.githubusercontent.com/u/37317008?v=4" width="40" height="40" alt="mengdaoshizhongxinyang">
  </a>
</p>

## Sponsors

<p align="center">
  <a href="https://cdn.jsdelivr.net/gh/nonzzz/sponsors/sponsorkit/sponsors.svg">
    <img src="https://cdn.jsdelivr.net/gh/nonzzz/sponsors/sponsorkit/sponsors.svg"/>
  </a>
</p>

## Credits

- [Geist UI](https://github.com/geist-org/geist-ui)
- The friend who proposed this idea.
- All contributors and sponsors

## License

[MIT](./LICENSE)

---
_Source: https://npm.io/package/vite-bundle-analyzer · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
