npm Package Dependency Analyzer

Paste your package.json to analyze dependencies — count, categories, version ranges, license types, and bundle size estimates.

What is npm Package Dependency Analyzer?

Modern JavaScript and TypeScript projects depend on dozens — sometimes hundreds — of npm packages. The package.json file records them under dependencies (needed at runtime) and devDependencies (needed only while developing, building, or testing). Keeping an eye on that list helps you spot outdated version patterns, oversized dependency sets, and categories that have grown unintentionally.

This tool parses your package.json and breaks the dependency list down in four ways: a summary count split between production and dev, a distribution of version-range styles (caret, tilde, exact, and so on), a grouping of packages into coarse categories such as Framework, Testing, and Build Tool, and an estimate of the total footprint. The result is a quick health check you can run before a release or during a dependency cleanup.

What it analyzes

  • Counts — total, production, and dev-only dependency numbers.
  • Version range distribution — how versions are pinned, from exact to floating ranges.
  • Categories — a coarse grouping of each package by name pattern.
  • Size estimate — a rough production-plus-dev footprint.
  • Detailed table — every package with its version, type, and detected category.

What it does not do

  • It reads only dependencies and devDependencies. peerDependencies, optionalDependencies, and transitive packages are not counted.
  • Categories are inferred from package-name patterns, so an unusual name may land under "Other".
  • The size figure is a heuristic estimate, not a measurement of your actual bundle.

How to Use

  1. Copy your package.json — Open your project's package.json file and copy the entire contents to your clipboard.
  2. Paste into the input area — Paste the JSON content into the text area. You can also click "Example package.json" to see a sample analysis.
  3. Click Analyze — The tool parses your dependencies and generates an analysis with statistics, charts, and a detailed table.
  4. Review Insights — Check the summary cards for totals, the version range distribution for update patterns, and the dependency table for individual package details.

Version range styles explained

npm version specifiers control how much a dependency may drift when you run an install. The analyzer classifies each specifier into one of the following buckets.

Specifier Meaning Allows
^1.2.3Caretminor and patch updates
~1.2.3Tildepatch updates only
1.2.3Exactnothing — fully pinned
>=1.2 <2Rangeany version within the bound
1.2.xWildcardany patch within the minor
latest / nextTagwhatever the tag points to
*Anyany version at all

Caret ranges are a common default because they receive compatible fixes without silently taking a breaking major release. A large cluster of exact pins can be a sign the project has not been updated in a while.

Common use cases

  • Dependency cleanup — see how many packages a project carries before trimming unused ones.
  • Reviewing a new dependency — check what type and category a package falls into and whether it is only needed at build time.
  • Estimating footprint — get a rough sense of size impact before adding several packages at once.
  • Auditing version styles — find projects that pin everything exactly or float everything with *.
  • Documentation — summarise a project's dependency profile for a report or a README.

Frequently Asked Questions

How is bundle size estimated?

The tool applies a rough heuristic: each production dependency is estimated at about 50 KB and each dev dependency at about 10 KB, then the total is converted to megabytes. Actual sizes depend heavily on the specific packages and your bundler, so treat the figure as a rough indicator rather than a measurement.

How are dependencies categorized?

Each package name is matched against pattern lists for categories such as Framework (react, vue, angular), Testing (jest, vitest, cypress), Build Tool (vite, webpack, esbuild), Utility (lodash, axios, dayjs), Linting / Formatting, CSS / UI, Backend / API, and Database. Names that match nothing are grouped as Other.

What does the version range analysis tell me?

It shows how each dependency specifies its allowed versions — caret, tilde, exact, range, wildcard, tag, or any. A healthy project usually shows a mix dominated by caret ranges, which accept compatible fixes without taking a breaking major release.

Does it count transitive dependencies?

No. The analyzer looks only at the direct entries under dependencies and devDependencies in the file you paste. Transitive packages installed deep in the tree are not fetched or counted.

Are peerDependencies and optionalDependencies analyzed?

Not currently. Only the dependencies and devDependencies fields are read. If a package only appears under peerDependencies or optionalDependencies, it will not show up in the totals or the table.

Why is a package categorized as Other?

Categories are inferred from substrings of the package name. A package with an unusual or very new name that does not contain a known keyword falls through to Other. That does not affect its count in the totals.

Is this a security audit?

No. This tool reports structure and size, not vulnerabilities. For vulnerability scanning, run npm audit or a dedicated security scanner against your lockfile.

Is my package.json uploaded?

No. Parsing and analysis happen entirely in your browser. Your file never leaves your device, so it is safe to paste a private project manifest.