What is npm Trends?
npm Trends is a comparison tool that visualizes download statistics for any npm package over time. By plotting weekly download counts on a line chart, it lets you see at a glance which packages are growing, which are declining, and how alternatives stack up against each other — helping you make informed dependency decisions before writing a single line of code.
Every week, billions of npm packages are downloaded by developers worldwide. These download numbers are publicly available through the npm registry API. Our tool fetches that data, aggregates it into weekly points, and presents it alongside metadata like bundle size, GitHub stars, license, and last publish date — giving you a complete picture of any package's health and community adoption.
Why Compare npm Packages?
The JavaScript ecosystem moves fast. New packages emerge constantly, old ones get abandoned, and the community periodically shifts from one solution to another. What was the standard choice two years ago might be in decline today — and something new might already be taking over. Without data, you're making dependency decisions based on outdated blog posts, personal recommendations, or GitHub stars alone.
Download trends tell a different story. A package with 2 million weekly downloads and a rising curve is a safe bet. A package with 500k downloads and a curve that's been falling for 18 months is a warning sign — even if it still has impressive GitHub stars from its peak. Growth rate compared to the previous period shows momentum, not just size.
Bundle size matters too, especially for frontend packages. Adding a 70kB dependency for something a 3kB alternative does just as well is a performance decision you'll regret. This tool surfaces bundle size (gzipped) alongside download data so you can weigh both factors at once.
How To Use It
1. Add Packages
Type any npm package name and click Add. You can compare up to 5 packages simultaneously. Or click one of the popular comparison presets — HTTP clients, date libraries, state management tools — to jump straight into a meaningful comparison.
2. Select a Time Range
Choose from 1 month, 3 months, 6 months, 1 year, or 2 years. Longer time ranges reveal macro trends — whether a package has been steadily growing or slowly dying. Shorter ranges show recent momentum.
3. Read the Chart
Each package gets its own colored line on the downloads chart. Hover over any point to see exact weekly download counts. A rising line indicates growing adoption. A flat line means stable but not growing. A falling line is worth investigating.
4. Compare Stats Side by Side
Below the chart, each package gets a card showing weekly downloads, monthly downloads, growth vs the previous equivalent period, GitHub stars, bundle size, license, and last publish date. The comparison table puts all of these side by side with a 👑 winner per metric.
Who Is This For?
Frontend Developers
Choosing between animation libraries, form libraries, or component systems? Compare download trends and bundle sizes to find the option the community is actually using — not just the one that got the most press last year.
Backend / Node.js Developers
Evaluating HTTP clients, loggers, ORMs, or test runners? Download trends for backend packages reflect real production usage — teams don't swap out core infrastructure lightly, so these numbers are especially meaningful.
Tech Leads & Architects
Making decisions that will affect your stack for years? Use trend data to back up your choices. A package with strong, growing downloads is a lower maintenance risk than one with declining community support.
Open Source Authors
Curious how your package is performing against alternatives in your space? Track your download growth, compare it to competitors, and spot whether you're gaining or losing market share over time.
What the Metrics Mean
- —Weekly Downloads: The number of times the package was downloaded in the last 7 days. The most reliable signal of current adoption.
- —Monthly Downloads: Downloads in the last 30 days. Smooths out weekly volatility for a more stable comparison.
- —Growth %: Compares total downloads in the selected period against the equivalent previous period. Positive growth means the package is gaining adoption. Negative growth is a warning sign.
- —GitHub Stars: Community interest indicator. Stars don't directly reflect usage — a package can have millions of stars but low downloads if it was popular then abandoned. Always combine with download trends.
- —Bundle Size (gzip): The compressed size of the package as it would be delivered to a browser. Critical for frontend packages. Fetched from Bundlephobia.
- —Last Publish: When the latest version was released. A package last published 3 years ago with declining downloads is likely abandoned. One published last week is actively maintained.
- —License: Matters for commercial projects. MIT and Apache 2.0 are permissive. GPL has copyleft implications. Always verify before using in production.
Popular Package Comparisons
HTTP Clients
axios vs got vs node-fetch
axios dominates in browser environments, node-fetch is growing rapidly with the native fetch API push, and got remains popular in Node.js CLIs.
Date Libraries
date-fns vs dayjs vs moment
Moment.js is in maintenance mode and downloads are falling. date-fns and dayjs are the modern alternatives — dayjs wins on bundle size, date-fns on feature coverage.
State Management
redux vs zustand vs jotai
Redux still has massive download numbers but growth is flat. Zustand is growing rapidly as the simpler React alternative. Jotai is gaining in atomic state circles.
Testing Frameworks
jest vs vitest vs mocha
Vitest is the fastest-growing testing tool in the ecosystem, powered by the rise of Vite. Jest remains dominant but growth is slowing as Vite-based projects adopt vitest.
FAQ
Where does the download data come from?+
Download statistics come directly from the npm registry public API at api.npmjs.org. The data is official and the same source used by npmjs.com itself.
Are CI/CD downloads included in the count?+
Yes. npm download counts include all downloads — from developers, CI systems, Docker builds, and automated tools. This is why absolute numbers can be very high. What matters most is relative trends between packages, not absolute counts.
Why does a popular package show fewer downloads than I expected?+
Some packages are bundled into other packages and their downloads are counted indirectly. Others may have multiple versions with downloads split across them. Scoped packages (e.g. @scope/package) may also behave differently.
What does negative growth mean?+
It means the package had fewer downloads in the current period than in the equivalent previous period. This could indicate declining adoption, seasonal variation, or a major version migration splitting downloads across package names.
Why is bundle size missing for some packages?+
Bundle size is fetched from Bundlephobia. Some packages — particularly CLI tools, Node.js-only packages, or very large packages — may not have bundle size data available.
Can I compare more than 5 packages?+
The tool supports up to 5 packages at once to keep the chart readable. For broader ecosystem analysis, compare in batches — the top 5 first, then swap some out to compare against others.
Pick the Right Package
Don't add a dependency based on a two-year-old blog post. Check the trends first — search any package above and see exactly where it stands in the ecosystem right now.