How stak.sh works
stak.sh collects usage data for every tool it tracks from npm, PyPI, crates.io, RubyGems, NuGet, Docker Hub, Homebrew, deps.dev, GitHub, GH Archive, Stack Overflow questions, Wikipedia, Hacker News, the Stack Overflow, JetBrains and State of JS surveys, and the stacks developers publish on stak.sh. It turns those numbers into comparable shares, combines them and charts the result week by week.
- tools tracked
- 30
- data platforms
- 11
- data feeds
- 217
one per tool, platform and metric
Example sources
Every tool is measured on all the sources that apply to it: a JavaScript library adds its npm downloads to GitHub, Stack Overflow, Wikipedia and the rest, a database adds its Docker Hub pulls, a language its survey results.
| Source | Measures | Known biases | Attribution |
|---|---|---|---|
| npm, PyPI, crates.io, RubyGems, NuGet | package downloads per day (RubyGems and NuGet are daily differences of cumulative totals) | inflated by CI, mirrors and bots; only comparable inside one ecosystem | public registry APIs; pypistats.org and the PyPI BigQuery dataset |
| Docker Hub | image pulls per day (difference of totals) | automated pulls dominate | Docker Hub API |
| Homebrew | installs in the last 30 days | macOS and Linux Homebrew users only; opt-in analytics | formulae.brew.sh analytics |
| deps.dev | number of dependent packages | counts published packages, not applications | deps.dev by Google (Open Source Insights) |
| GitHub | new stars per day (GH Archive), issues and pull requests opened, contributors, star total | stars measure attention, not use; archive names repositories as they were at the time | GitHub REST API; GH Archive on BigQuery |
| Wikipedia | daily pageviews of the English article, human traffic only | needs an article; depends on article naming | Wikimedia REST API |
| Stack Overflow | questions per tag per day | overall volume fell sharply after LLM assistants; only shares are meaningful | Stack Exchange API; content CC BY-SA |
| Hacker News | story and comment mentions per term; mentions in the monthly "Who is hiring?" threads | ambiguous names (Go, React, Swift, ...) may be noisy; no classifier currently runs for any source | Algolia HN Search API |
| Surveys | yearly usage share from the Stack Overflow, JetBrains and State of JS surveys | self-selected respondents; a single point per year | each survey's license (Stack Overflow survey: ODbL) |
| stak community | verified, opted-in profiles with the tool on their stack, per week | small and biased toward whoever signs up; past stints entered today change last year's numbers | stak.sh |
From raw numbers to shares
Downloads, stars and pageviews don't share a unit, so each week a tool's value is divided by the total across the tools in its category that the same source covers. That makes sources comparable and cancels platform-wide drift, such as a registry getting busier overall. A source only counts towards scores when it covers every tool in the category; partial sources are still charted.
Values are stored daily and shown per ISO week, because downloads have a strong weekday cycle. The current, unfinished week is never shown. A day above 5× a tool's 28-day median is treated as a spike and left out of shares, and charts mark where each source's data begins, so a new source doesn't look like growth.
Lenses and the stak index
Shares are grouped into three lenses, each the weighted mean of its sources. The stak index combines the lenses, so it adds up to 100% across a category, and every value can be traced back to its sources on the tool page.
adoption50%
Is it being installed and used?
crates.io downloadsdeps.dev dependentsDocker Hub pullsHacker News job postsHomebrew installs (30d)npm downloadsNuGet downloadsPyPI downloadsRubyGems downloadsstak communitySurveys
attention25%
Are people looking at it?
GitHub starsHacker News mentionsWikipedia pageviews
community25%
Are people building and asking around it?
GitHub contributorsGitHub issuesGitHub pull requestsStack Overflow questions
Hacker News counts ×0.5. A source without data for a tool that week counts as zero.
Publish your stack
Developers can sign in with GitHub and publish the tools they use, with how long and how well they know them, on a public profile at stak.sh/@you.
Those profiles power the stak community signal: how many verified developers actually have a tool on their stack each week. It feeds the adoption lens next to downloads and surveys, so every published stack makes the trends a little more honest.
@ada
Ada DevlinBackend engineer, mostly Go and Postgres
Community data and privacy
Only aggregates are published. A profile counts when its GitHub account is at least 90 days old with a public repository (re-checked at every login) and the owner has not opted out. Every community number comes from at least 30 profiles; below that, charts say "not enough data". Co-occurrence counts profiles currently using two tools; a migration is one profile that ended a tool and started another in the same category within six months. History is rebuilt every night, so community series are not a record of what people said at the time.
Catalog changes
Shares are relative to a category, so adding a tool changes every other tool's past shares in that category. The log below explains jumps in a chart.
Show the catalog log
- 2026-10-31: Claude Squad, cmux, herdr, Orca, Paradev, T3 Code, Aider, Claude Code, Cline, Continue, Gemini CLI, GitHub Copilot, Grok Build, Oh My Pi, OpenAI Codex, Pi, Sourcegraph Cody, Tabnine, Windsurf, AutoGen, CrewAI, LangGraph, Apollo GraphQL, GraphQL, gRPC, OpenAPI / Swagger, Postman, tRPC, Auth.js, Auth0, Clerk, Keycloak, Ory, Passport, Appwrite, Convex, Firebase, Hasura, PocketBase, Supabase, esbuild, Parcel, Rollup, Rspack, Vite, webpack, Argo CD, Buildkite, CircleCI, GitHub Actions, GitLab CI, Jenkins, Travis CI, Amazon Web Services, Cloudflare, DigitalOcean, Fly.io, Google Cloud, Heroku, Hetzner, Microsoft Azure, Netlify, Railway, Render, Vercel, Docker, Helm, Kubernetes, Nomad, Podman, Ant Design, Bootstrap, Bulma, Chakra UI, Material UI, Tailwind CSS, Apache Airflow, Apache Spark, Dagster, dbt, DuckDB, Jupyter, NumPy, pandas, Polars, Prefect, Avalonia, Electron, GTK, Qt, Tauri, awesome, Cinnamon, COSMIC, GNOME, Hyprland, i3, KDE Plasma, niri, Sway, Xfce, Cursor, Emacs, Helix, IntelliJ IDEA, Neovim, Sublime Text, Vim, Visual Studio Code, Zed, Alpine.js, Angular, Ember.js, htmx, Lit, Preact, Qwik, React, SolidJS, Svelte, Vue, Ansible, AWS CDK, Chef, OpenTofu, Pulumi, Puppet, Terraform, C, C#, C++, Dart, Elixir, Go, Haskell, Java, JavaScript, Kotlin, Lua, PHP, Python, Ruby, Rust, Scala, Swift, TypeScript, Zig, Biome, Black, ESLint, golangci-lint, mypy, Prettier, Pylint, Ruff, Stylelint, Context7, GitHub MCP Server, Playwright MCP, Apache Kafka, Apache Pulsar, NATS, RabbitMQ, Astro, Gatsby, Next.js, Nuxt, React Router / Remix, SvelteKit, Hugging Face Transformers, JAX, Keras, LangChain, LlamaIndex, ONNX, PyTorch, scikit-learn, TensorFlow, XGBoost, .NET MAUI, Capacitor, Expo, Flutter, Ionic, Jetpack Compose, Kotlin Multiplatform, React Native, SwiftUI, Apache Cassandra, ClickHouse, CouchDB, DynamoDB, Elasticsearch, MongoDB, Neo4j, OpenSearch, Redis, Valkey, Datadog, Grafana, Grafana Loki, Jaeger, New Relic, OpenTelemetry, Prometheus, Sentry, Diesel, Drizzle ORM, Entity Framework Core, GORM, Hibernate, Knex.js, Prisma, Sequelize, SQLAlchemy, sqlx, TypeORM, Arch Linux, Debian, Fedora, FreeBSD, Linux, macOS, NixOS, Ubuntu, Windows, npm, pip, Pipenv, pnpm, Poetry, uv, Yarn, CockroachDB, MariaDB, MySQL, Oracle Database, PostgreSQL, SQL Server, SQLite, Bun, Deno, Node.js, Jotai, MobX, Pinia, Redux, TanStack Query, XState, Zustand, Docusaurus, Eleventy, Hugo, Jekyll, MkDocs, VitePress, Alacritty, Bash, fish shell, Ghostty, kitty, Starship, tmux, WezTerm, Zsh, Cypress, Jest, Mocha, Playwright, pytest, Selenium, Vitest, Bitbucket, Forgejo, Gitea, GitHub, GitLab, Chroma, Milvus, pgvector, Pinecone, Qdrant, Weaviate, Actix Web, ASP.NET Core, Axum, Django, Echo, Express, FastAPI, Fastify, Fiber, Flask, Gin, Hono, Laravel, NestJS, Phoenix, Ruby on Rails, Spring Boot