Tiny Online Tools logoTiny Online ToolssearchSearch tools…grid_viewAll Tools
Homechevron_rightReverse Engineering Toolschevron_rightWebpack Bundle InspectorWebpack Bundle Inspector

Webpack Bundle Inspector

Detects webpack's runtime bootstrap, module map and chunk-push metadata by AST shape, shows each module's real source, and says plainly when a file is not webpack output.

Bundle sourcePaste codeUpload file

Similar Tools

JS Bundle Dependency Visualizer

JS Bundle Dependency Visualizer

Find module boundaries inside a webpack, Rollup, esbuild or Vite bundle and see which module requires which — using real AST shape-matching, not text guessing.

Source Map Size Analyzer

Source Map Size Analyzer

Attribute a bundle's bytes to the original source files and folders that produced them, using its .map file — see what is actually taking up space.

WASM Import/Export Visualizer

WASM Import/Export Visualizer

See what a WebAssembly module needs from its host and what it offers back, grouped by module namespace, side by side.

Source Map Explorer

Source Map Explorer

Load a .map file and map any generated line and column back to the original file, line and source name it came from.

3D Dependency Inspector

3D Dependency Inspector

Audit what a GLB or GLTF file references against what it actually contains.

Audio Metadata Viewer

Audio Metadata Viewer

View duration, sample rate, channels, bitrate, and ID3 tags of any audio file in your browser. Fully private.

PDF Margin Adjuster

PDF Margin Adjuster

Add, remove, or resize the margins on every page of a PDF with exact control over top, right, bottom, and left values in points, millimeters, or inches.

apps

More Tools

Browse our full collection of free online tools.

What this tool checks

A lot of the web still ships webpack output, and its structure is worth understanding on its own terms — separate from the general, bundler-agnostic dependency graph that JS Bundle Dependency Visualizer draws. This tool looks specifically for the pieces of a webpack bundle:

  • The runtime bootstrap — the __webpack_require__-shaped function every webpack build ships, detected by the exact mechanism it uses to invoke a module (modules[moduleId].call(module.exports, module, module.exports, require)), not by searching for the literal name. That mechanism survives full identifier renaming, so it still matches a build where every name has been minified away.
  • The module map — either the classic object form ({0: fn, 1: fn, ...}) or the array form ([fn, fn, ...]) that newer webpack versions default to.
  • Chunk-push metadata — for code-split builds, the (self.webpackChunkXxx = self.webpackChunkXxx || []).push([[chunkIds], {modules}, runtime]) call, with the chunk name and ids pulled out.
  • Runtime helpers — which of .m (module map), .c (module cache), .d (define getter), .o (hasOwnProperty), .n (default export getter), .s (entry module id) and .p (public path) are present.

Select any module in the list to see its real source in a syntax-highlighted panel — no execution, just the text webpack itself wrapped around that module.

When it's not webpack

If neither the runtime nor a module map can be found, the tool says "this does not look like webpack output" rather than forcing a guess, and adds a cheap, honest hint when one is available — a //# sourceMappingURL= comment, or the file being parsed as an ES module (common for Rollup, esbuild and Vite output).

Known limitation

A bundle that went through webpack and then a second, more aggressive minification pass that also renames the runtime's own property names can slip past the .call() shape check and get reported as not-webpack. That is a deliberate trade-off: a rare false negative is better than inventing a module map that isn't really there.

Privacy

Everything runs in your browser through a real JavaScript parser (acorn). The file you paste or upload is never sent anywhere.