{"adoption": {"forks": 29, "observed_at": "2026-08-28T04:05:14.691880+00:00", "stars": 1636}, "canonical_url": "https://ross.abutalabs.com/products/subfont", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Command line tool to optimize your webfont loading. Aggressive subsetting based on your font use, self-hosting of Google fonts and preloading", "domain": ["web-development", "frontend", "performance", "developer-tools"], "enriched": true, "function": ["cli", "developer-tools", "build-tool", "web-scraping"], "health_score": 64, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["Munter/subfont"], "name": "Munter/subfont", "platform": ["cli", "cross-platform"], "pushed_at": "2026-03-21T20:54:02+00:00", "repo": "Munter/subfont", "stars": 1636, "tags": ["webfonts", "font-subsetting", "google-fonts", "woff2", "preload", "performance-optimization", "self-hosting", "nodejs"], "topics": [], "urls": [], "use_cases": ["subset webfonts to only the characters my page uses", "self-host Google Fonts instead of loading them from Google's CDN", "speed up page load by reducing font payload", "add preload hints for critical font files", "optimize variable fonts by reducing variation space", "optimize fonts in static site build artifacts before deployment"], "what_it_is": "A Node.js command line tool that statically analyzes HTML pages to generate optimal webfont subsets based on the characters actually used. It self-hosts Google Fonts, generates woff2/woff subsets, injects preload hints, and moves @font-face CSS off the critical path to speed up first meaningful paint.", "when_to_avoid": ["your fonts are loaded dynamically at runtime by client-side JavaScript", "you need font services other than Google Fonts or local files", "you work in a non-Node.js toolchain with no CLI integration"], "when_to_choose": ["you deploy static sites and want faster font loading", "you use Google Fonts or local font files and want to self-host optimized subsets", "you want automated font subsetting integrated into a build pipeline"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/subfont", "repo": "Munter/subfont", "role": "main", "score": 56}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.691880+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:46:57.290533+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "900abdbbd980f95b9cc7774558fa06b44177323f4c3e135f358050bd58883538", "fetched_at": "2026-08-28T04:05:14.691880+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Munter/subfont"}, {"content_hash": "a27a438d3664a6bfdba71d93e6ec5a66bf2e981830941485cf4c7498379c9172", "fetched_at": "2026-08-29T11:20:07.086521+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/subfont"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.691880+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:46:57.290533+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "900abdbbd980f95b9cc7774558fa06b44177323f4c3e135f358050bd58883538", "fetched_at": "2026-08-28T04:05:14.691880+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Munter/subfont"}, {"content_hash": "a27a438d3664a6bfdba71d93e6ec5a66bf2e981830941485cf4c7498379c9172", "fetched_at": "2026-08-29T11:20:07.086521+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/subfont"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:46:57.290533+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "900abdbbd980f95b9cc7774558fa06b44177323f4c3e135f358050bd58883538", "fetched_at": "2026-08-28T04:05:14.691880+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Munter/subfont"}, {"content_hash": "a27a438d3664a6bfdba71d93e6ec5a66bf2e981830941485cf4c7498379c9172", "fetched_at": "2026-08-29T11:20:07.086521+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/subfont"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.691880+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.691880+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.691880+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:46:57.290533+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "900abdbbd980f95b9cc7774558fa06b44177323f4c3e135f358050bd58883538", "fetched_at": "2026-08-28T04:05:14.691880+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Munter/subfont"}, {"content_hash": "a27a438d3664a6bfdba71d93e6ec5a66bf2e981830941485cf4c7498379c9172", "fetched_at": "2026-08-29T11:20:07.086521+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/subfont"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.691880+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.691880+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:46:57.290533+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "900abdbbd980f95b9cc7774558fa06b44177323f4c3e135f358050bd58883538", "fetched_at": "2026-08-28T04:05:14.691880+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Munter/subfont"}, {"content_hash": "a27a438d3664a6bfdba71d93e6ec5a66bf2e981830941485cf4c7498379c9172", "fetched_at": "2026-08-29T11:20:07.086521+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/subfont"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.691880+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.691880+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.691880+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:46:57.290533+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "900abdbbd980f95b9cc7774558fa06b44177323f4c3e135f358050bd58883538", "fetched_at": "2026-08-28T04:05:14.691880+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Munter/subfont"}, {"content_hash": "a27a438d3664a6bfdba71d93e6ec5a66bf2e981830941485cf4c7498379c9172", "fetched_at": "2026-08-29T11:20:07.086521+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/subfont"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.691880+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.691880+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:46:57.290533+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "900abdbbd980f95b9cc7774558fa06b44177323f4c3e135f358050bd58883538", "fetched_at": "2026-08-28T04:05:14.691880+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Munter/subfont"}, {"content_hash": "a27a438d3664a6bfdba71d93e6ec5a66bf2e981830941485cf4c7498379c9172", "fetched_at": "2026-08-29T11:20:07.086521+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/subfont"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:46:57.290533+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "900abdbbd980f95b9cc7774558fa06b44177323f4c3e135f358050bd58883538", "fetched_at": "2026-08-28T04:05:14.691880+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Munter/subfont"}, {"content_hash": "a27a438d3664a6bfdba71d93e6ec5a66bf2e981830941485cf4c7498379c9172", "fetched_at": "2026-08-29T11:20:07.086521+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/subfont"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:46:57.290533+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "900abdbbd980f95b9cc7774558fa06b44177323f4c3e135f358050bd58883538", "fetched_at": "2026-08-28T04:05:14.691880+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Munter/subfont"}, {"content_hash": "a27a438d3664a6bfdba71d93e6ec5a66bf2e981830941485cf4c7498379c9172", "fetched_at": "2026-08-29T11:20:07.086521+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/subfont"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:46:57.290533+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "900abdbbd980f95b9cc7774558fa06b44177323f4c3e135f358050bd58883538", "fetched_at": "2026-08-28T04:05:14.691880+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Munter/subfont"}, {"content_hash": "a27a438d3664a6bfdba71d93e6ec5a66bf2e981830941485cf4c7498379c9172", "fetched_at": "2026-08-29T11:20:07.086521+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/subfont"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 73, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3412, "days_push": 165, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 56, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}