Choose your input mode from the dropdown in the bottom bar: 'Webpack Stats' for webpack stats JSON, 'Source Map Explorer' for source-map-explorer output, or 'package.json' for a dependency size estimate.
Generate your input data. For webpack stats, run 'npx webpack --json > stats.json' in your project. For source-map-explorer, run 'npx source-map-explorer --json dist/main.js > sme.json'. For package.json mode, copy your package.json file.
Paste the JSON into the input area, or click 'Upload JSON' in the bottom bar to load a file directly from disk.
Press ⌘↵ (or click the Analyze button) to run the analysis. Results appear instantly in the output panel.
Explore the Overview tab for total bundle size, gzip estimate, top packages bar chart, and node_modules vs app code ratio.
Switch to the Treemap tab for an interactive proportional visualization. Click any block to zoom into that package or directory, and use the breadcrumb navigation to zoom back out.
Open the Modules tab to browse a sortable, filterable table of all modules. Sort by size, gzip size, or package name to identify heavy files quickly.
Review the Suggestions tab for rule-based optimization recommendations. Each suggestion shows severity (HIGH/MED/LOW), estimated byte savings, and the affected modules.
Use the AI sidebar (if enabled) to ask questions like 'Why is my bundle so large?' or 'How should I code-split this?' for context-aware advice.
Share or bookmark your analysis by saving the input to localStorage — the tool automatically persists your last input across sessions.
Webpack stats JSON parser: reads the full output of 'webpack --json', including nested module concatenation groups, to give an accurate per-file size breakdown.
Source Map Explorer support: parse the JSON output of source-map-explorer to get exact parsed sizes per module from production source maps.
Package.json dependency estimation: enter your package.json and get estimated bundle sizes for all dependencies based on a built-in lookup table of 30+ popular packages.
Interactive squarified treemap: a custom CSS-based treemap layout (no D3 dependency) renders package sizes proportionally. Click any block to zoom in; breadcrumbs let you navigate back.
Zoom and drill-down: click into any package or directory in the treemap to explore its individual modules at a deeper level.
Sortable module table: browse all modules with columns for name, package, raw size, estimated gzip size, and percentage of total bundle. Sort by any column ascending or descending.
Module search/filter: type in the filter box to instantly narrow the module list by name or package name.
Paginated module list: large bundles with hundreds of modules are paginated at 50 rows per page for smooth performance.
Package aggregation: modules are grouped by npm package name to show total package size, module count, and percentage of bundle.
Duplicate package detection: identifies when the same package appears nested under multiple node_modules directories (version conflicts), showing wasted bytes.
Rule-based optimization suggestions: automatically generates actionable suggestions for large packages, duplicates, CJS/UMD imports, and high node_modules ratios.
Lighter-alternative lookup: for heavy packages like moment, lodash, jQuery, and D3, suggests smaller alternatives (date-fns, lodash-es, native APIs, etc.) with estimated byte savings.
Code-splitting suggestions: packages over 200 KB trigger dynamic import suggestions with estimated savings if lazy-loaded.
Tree-shaking suggestions: detects CJS/UMD module paths and suggests switching to ESM entry points for better tree-shaking.
Gzip size estimation: estimates compressed size using a 33% compression ratio heuristic — clearly labelled as an estimate, not an exact measurement.
node_modules ratio indicator: visual progress bar showing what percentage of your bundle is third-party dependencies vs. your own application code.
Severity badges: optimization suggestions are rated HIGH, MED, or LOW by severity based on potential byte savings and impact.
AI-enhanced analysis: the built-in AI sidebar (Explain, AutoFix, Suggest) can answer specific questions about your bundle's contents and optimization strategies.
Runs entirely in your browser: no bundle data, package.json, or stats files are ever sent to a server. Analysis is 100% client-side.
500-module safety limit: for very large bundles, the visualization uses the first 500 modules to keep the UI responsive, while size totals still reflect the full bundle.
File upload support: click 'Upload JSON' to load any .json stats file directly from disk without copying and pasting.
URL state persistence: input mode and active tab are persisted in the URL via nuqs for bookmarkable, shareable analysis sessions.
localStorage persistence: your last bundle stats input is automatically saved and restored across browser sessions.
Keyboard shortcuts: ⌘↵ to analyze, ⌘⇧K to clear — optimized for developer workflows.