- Category
- Developer Tools
- Rank
- No. 2938Tools index
Previous survey · No. 2811 ·
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Data Processing
- Interfaces
- CLI · Web
- Builder
- Manavarya09
- GitHub
- 10 stars
- Date
About
Your npm package portfolio — lifetime and recent downloads across every package you maintain, in one command or one page.
What it does
Give it a registry username and it finds every package that account co-owns, pulls usage counts from the public npm statistics service, and sums them into one table. It ships as a terminal program you run through npx, plus a hosted site that shows the same numbers as a card grid with sparklines, adjustable date ranges, and live SVG badges for a README.
Why it's ranked here
A small, honest utility that solves one annoying chore: adding up numbers npm only shows one package at a time. The terminal version has a single runtime dependency, needs no API key or signup, and the site's badge generator was built around how GitHub's image proxy strips styling. The ceiling is scope. There are no tests, and one headline figure is labelled more generously than it is computed.
What's good
The fetching is careful about rate limits: a small pool of concurrent workers, retries with growing backoff, and on the site a check that re-requests a daily series when fewer days come back than were asked for. Wide date ranges are split into windows the npm service accepts. The README embeds carry every style inline and escape package names, so a badge renders instead of showing a broken image.
Tradeoffs
The number called "lifetime" is really a count from January 2025 onward, fixed in code, so older packages look smaller than they are. In the terminal version a request that keeps failing returns zero silently, which reads as a real zero in the table. The site stops at 1,250 packages per maintainer. No test files appear anywhere in the repository, and the promised JSON API is still a roadmap item.
How to use it well
Run it with npx for a quick look at your own reach across many small packages, or drop the badge into a profile README where a live total is useful. Treat a surprise zero as a possible fetch failure and rerun before trusting it. It does not cover organization views, maintainer comparisons, or anything beyond download counts, such as dependents or version adoption.
Technical notes+
bin/cli.js pages the registry search with maintainer:<name> at size 250 until a short page, then runs four workers each issuing a point query for 2025-01-01:today plus a 30-day range query; fetchDownloads retries 429/503 (and a literal 1015 status) four times and returns 0 on exhaustion. website/lib/npm.ts caps search at five pages, caches the base list with unstable_cache for 3600s and range data for 600s, chunks range calls at 500 days, flags truncation when under 90% of expected days, and downsamples sparklines to 60 points. website/lib/embed.ts emits style-free SVG with xmlEscape and max-age=300 headers. package.json depends only on chalk.
Observed
- License
- MIT
- Language
- JavaScript CLI, TypeScript Next.js web app
- Install surface
- npx pkgfolio <username> or global npm install; Node 18 or newer
- Interfaces
- CLI, hosted web dashboard, SVG embed endpoints
- Runtime dependencies (CLI)
- chalk only
- Authentication
- None; uses public npm registry and downloads endpoints
- Tests
- No test files in the repository tree
Read from README.md, package.json, bin/cli.js, website/lib/npm.ts, website/lib/embed.ts, website/app/u/[username]/page.tsx, LICENSE.
What it can do
Display lifetime download statistics for all npm packages
npm package maintainer username or package list → Aggregated lifetime download counts across all maintained packages
Show recent download statistics for npm packages
npm package maintainer username or package list → Recent download metrics for maintained packages
Generate package portfolio via command line
Command line execution with maintainer credentials → Text-based portfolio report in terminal
Generate package portfolio via web page
Web browser access with maintainer username → Interactive web page displaying package statistics
Aggregate download metrics across multiple packages
Multiple npm package names from same maintainer → Consolidated download statistics and portfolio overview
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.