Daily download history for every model and dataset on the Hugging Face Hub, and likes for every Space, back to July 2024.
A model page on the Hub tells you its downloads for the last 30 days, but not how it got there. Model Pulse rebuilds the day-by-day history for 1.6M models, 1.06M datasets and 104K Spaces from the daily snapshots in cfahlgren1/hub-stats, and keeps it updated every day.
- Site: modelpulse.ifsp.dev, also as a Hugging Face Space
- Open data: modelpulse/model-pulse-data, one row per model per day
- Report: What 19 months of daily downloads say about the Hub
-
Look up any model, e.g. modelpulse.ifsp.dev/model/Qwen/Qwen3-8B: weekly, daily, 30-day and all-time downloads, likes, ranks and milestones
-
Look up any dataset or Space, e.g. HuggingFaceFW/fineweb: downloads or likes over time, the models trained on a dataset, and the Spaces using a model or dataset
-
Compare up to five models on one chart
-
See a model's family: how much of its reach comes from its quantizations, fine-tunes, adapters and merges
-
Galaxy: every model built on a base model, drawn as one picture
-
Wrapped: any author's last 12 months on the Hub in six shareable cards
-
Rankings: most downloaded, fastest growing, new breakouts, biggest families, top organizations
-
A badge for your model card, refreshed daily:
- Backfill.
pipeline/backfill_xet.pyreads every daily revision ofhub-statsmodels.parquetand keeps four columns per model per day.pipeline/build.pyturns them into monthly partitions, per-model metrics, family trees (viabase_modellinks), author and Hub-wide series, and the leaderboards. - Daily update.
pipeline/daily.pyappends each new snapshot, recomputes the metrics and uploads the changed files to the dataset. It runs inside the API container, which checks for new data every hour. - API and site.
space/appis a FastAPI + DuckDB service over the dataset (JSON API, badges, server-rendered pages, link previews and sitemaps).space/webis the Preact + uPlot frontend, served both on its own domain and as a static Hugging Face Space.
Download counts follow the Hub's own counting rules. All-time totals start on 2025-02-27, when the Hub began reporting them; the rolling 30-day series goes back to 2024-07-29.
| Path | What |
|---|---|
pipeline/ |
Backfill, full build and daily incremental update of the dataset (polars): build.py/daily.py for models, build_repos.py/daily_repos.py for datasets and Spaces, stalls.py for days when the Hub's counters stood still (fully or in part) or went backwards, and rebuild_hub.py to rebuild the Hub-wide series and skip days from the snapshots |
space/app/ |
FastAPI + DuckDB API, badges, server-rendered pages (seo.py), link previews (og.py), datasets and Spaces (repos.py), background jobs |
space/web/ |
Preact + Vite + uPlot frontend |
brand/ |
Logo, thumbnail and organization card |
# frontend, against the public API
cd space/web && npm install && VITE_API_BASE=https://modelpulse.ifsp.dev npm run dev
# API, with the dataset downloaded to ./data
cd space && pip install -r requirements.txt
DATA_DIR=../data DATA_REPO=modelpulse/model-pulse-data python -m app.servespace/deploy.sh builds the frontend and runs the API container on a server behind Traefik (set DEPLOY_HOST in space/.deploy.env). publish_site.sh publishes the frontend to the Space.
Made by Tardelli Stekel (@tardellirs, stekel.ifsp.dev). Built on the daily snapshots collected by @cfahlgren1. An independent project, not affiliated with Hugging Face.
Licensed under the Apache License 2.0.