{"adoption": {"forks": 169, "observed_at": "2026-08-28T04:07:18.912334+00:00", "stars": 2771}, "canonical_url": "https://ross.abutalabs.com/products/hyperformula", "card": {"archived": false, "artifact_type": "library", "description": "HyperFormula is an open-source headless spreadsheet for business web apps. It comes with over 400 formulas, CRUD operations, undo-redo, clipboard support, and sorting.", "domain": ["web-development", "developer-tools", "spreadsheets", "apis"], "enriched": true, "function": ["parser", "interpreter", "sdk"], "health_score": 100, "homepage": "https://hyperformula.handsontable.com/", "language": "TypeScript", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["handsontable/hyperformula"], "name": "handsontable/hyperformula", "platform": ["browser", "cross-platform"], "pushed_at": "2026-08-26T03:34:35+00:00", "repo": "handsontable/hyperformula", "stars": 2771, "tags": ["spreadsheet-engine", "excel-formulas", "headless", "calculation-engine", "typescript", "formula-evaluator", "openformula", "crud", "undo-redo", "nodejs", "web-server"], "topics": ["calculation-engine", "formula", "typescript", "evaluator", "spreadsheet", "excel", "xlsx", "headless-spreadsheet", "forms", "sheets", "xls"], "urls": [], "use_cases": ["evaluate Excel formulas in a web app", "add calculated fields to a CRM or ERP", "build a custom spreadsheet-like application", "implement a form builder with formula support", "create an online calculator", "use a deterministic compute layer for AI and LLM workflows", "run spreadsheet calculations on a Node.js backend"], "what_it_is": "HyperFormula is an open-source headless spreadsheet engine written in TypeScript that parses and evaluates Excel-compatible spreadsheet formulas. It provides ~400 built-in functions, CRUD operations, undo-redo, clipboard support, and sorting, and runs in the browser or on Node.js backends.", "when_to_avoid": ["you need a full spreadsheet UI component rather than a headless engine", "your project is incompatible with GPLv3 and you cannot purchase a proprietary license", "you need to parse complex .xlsx files with charts and formatting rather than compute formulas", "you need non-deterministic or volatile external data recalculation beyond the engine's scope"], "when_to_choose": ["you need Excel/Google Sheets-compatible formula evaluation with deterministic results", "you want spreadsheet calculation logic without any bundled UI", "you need high-speed recalculation with a dependency graph and undo-redo", "you want to embed formula-driven business logic in frontend frameworks or backend services"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/hyperformula", "repo": "handsontable/hyperformula", "role": "main", "score": 94}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.912334+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:16:39.387148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37c71bf1dfc8d0cba0ca6d72f7f0fd3883eb9d922c04c7843a18e36a589a44f2", "fetched_at": "2026-08-28T04:07:18.912334+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handsontable/hyperformula"}, {"content_hash": "f7c0037611efef587c20716bdcc632e65cc63f7c2ef27db356e41211fa1bce72", "fetched_at": "2026-08-29T09:56:20.412959+00:00", "kind": "homepage", "missing": false, "url": "https://hyperformula.handsontable.com/"}, {"content_hash": "f1ef703e45c173d60373d52b277ec63423cc3caef5f4b778c3eed44497ef2936", "fetched_at": "2026-08-29T09:56:20.422180+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs"}, {"content_hash": "5f82596fe70f75d098023f61359e81bc41363ddbcd231c3199b59ba686775f77", "fetched_at": "2026-08-29T09:56:20.424064+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/license-key.html"}, {"content_hash": "b95aa64059940da81c69761871ab142c1bb5ff51c329d2a068afb671311a369b", "fetched_at": "2026-08-29T09:56:20.425705+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/demo.html"}, {"content_hash": "eb0acdc1bfe9cd3f04e8807ed2fa05932114972b8f4476055da9b6db565459d4", "fetched_at": "2026-08-29T09:56:20.427570+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hyperformula"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.912334+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:16:39.387148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37c71bf1dfc8d0cba0ca6d72f7f0fd3883eb9d922c04c7843a18e36a589a44f2", "fetched_at": "2026-08-28T04:07:18.912334+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handsontable/hyperformula"}, {"content_hash": "f7c0037611efef587c20716bdcc632e65cc63f7c2ef27db356e41211fa1bce72", "fetched_at": "2026-08-29T09:56:20.412959+00:00", "kind": "homepage", "missing": false, "url": "https://hyperformula.handsontable.com/"}, {"content_hash": "f1ef703e45c173d60373d52b277ec63423cc3caef5f4b778c3eed44497ef2936", "fetched_at": "2026-08-29T09:56:20.422180+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs"}, {"content_hash": "5f82596fe70f75d098023f61359e81bc41363ddbcd231c3199b59ba686775f77", "fetched_at": "2026-08-29T09:56:20.424064+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/license-key.html"}, {"content_hash": "b95aa64059940da81c69761871ab142c1bb5ff51c329d2a068afb671311a369b", "fetched_at": "2026-08-29T09:56:20.425705+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/demo.html"}, {"content_hash": "eb0acdc1bfe9cd3f04e8807ed2fa05932114972b8f4476055da9b6db565459d4", "fetched_at": "2026-08-29T09:56:20.427570+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hyperformula"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:16:39.387148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37c71bf1dfc8d0cba0ca6d72f7f0fd3883eb9d922c04c7843a18e36a589a44f2", "fetched_at": "2026-08-28T04:07:18.912334+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handsontable/hyperformula"}, {"content_hash": "f7c0037611efef587c20716bdcc632e65cc63f7c2ef27db356e41211fa1bce72", "fetched_at": "2026-08-29T09:56:20.412959+00:00", "kind": "homepage", "missing": false, "url": "https://hyperformula.handsontable.com/"}, {"content_hash": "f1ef703e45c173d60373d52b277ec63423cc3caef5f4b778c3eed44497ef2936", "fetched_at": "2026-08-29T09:56:20.422180+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs"}, {"content_hash": "5f82596fe70f75d098023f61359e81bc41363ddbcd231c3199b59ba686775f77", "fetched_at": "2026-08-29T09:56:20.424064+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/license-key.html"}, {"content_hash": "b95aa64059940da81c69761871ab142c1bb5ff51c329d2a068afb671311a369b", "fetched_at": "2026-08-29T09:56:20.425705+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/demo.html"}, {"content_hash": "eb0acdc1bfe9cd3f04e8807ed2fa05932114972b8f4476055da9b6db565459d4", "fetched_at": "2026-08-29T09:56:20.427570+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hyperformula"}], "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:07:18.912334+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.912334+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.912334+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:16:39.387148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37c71bf1dfc8d0cba0ca6d72f7f0fd3883eb9d922c04c7843a18e36a589a44f2", "fetched_at": "2026-08-28T04:07:18.912334+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handsontable/hyperformula"}, {"content_hash": "f7c0037611efef587c20716bdcc632e65cc63f7c2ef27db356e41211fa1bce72", "fetched_at": "2026-08-29T09:56:20.412959+00:00", "kind": "homepage", "missing": false, "url": "https://hyperformula.handsontable.com/"}, {"content_hash": "f1ef703e45c173d60373d52b277ec63423cc3caef5f4b778c3eed44497ef2936", "fetched_at": "2026-08-29T09:56:20.422180+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs"}, {"content_hash": "5f82596fe70f75d098023f61359e81bc41363ddbcd231c3199b59ba686775f77", "fetched_at": "2026-08-29T09:56:20.424064+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/license-key.html"}, {"content_hash": "b95aa64059940da81c69761871ab142c1bb5ff51c329d2a068afb671311a369b", "fetched_at": "2026-08-29T09:56:20.425705+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/demo.html"}, {"content_hash": "eb0acdc1bfe9cd3f04e8807ed2fa05932114972b8f4476055da9b6db565459d4", "fetched_at": "2026-08-29T09:56:20.427570+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hyperformula"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.912334+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.912334+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:16:39.387148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37c71bf1dfc8d0cba0ca6d72f7f0fd3883eb9d922c04c7843a18e36a589a44f2", "fetched_at": "2026-08-28T04:07:18.912334+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handsontable/hyperformula"}, {"content_hash": "f7c0037611efef587c20716bdcc632e65cc63f7c2ef27db356e41211fa1bce72", "fetched_at": "2026-08-29T09:56:20.412959+00:00", "kind": "homepage", "missing": false, "url": "https://hyperformula.handsontable.com/"}, {"content_hash": "f1ef703e45c173d60373d52b277ec63423cc3caef5f4b778c3eed44497ef2936", "fetched_at": "2026-08-29T09:56:20.422180+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs"}, {"content_hash": "5f82596fe70f75d098023f61359e81bc41363ddbcd231c3199b59ba686775f77", "fetched_at": "2026-08-29T09:56:20.424064+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/license-key.html"}, {"content_hash": "b95aa64059940da81c69761871ab142c1bb5ff51c329d2a068afb671311a369b", "fetched_at": "2026-08-29T09:56:20.425705+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/demo.html"}, {"content_hash": "eb0acdc1bfe9cd3f04e8807ed2fa05932114972b8f4476055da9b6db565459d4", "fetched_at": "2026-08-29T09:56:20.427570+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hyperformula"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.912334+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.912334+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.912334+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:16:39.387148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37c71bf1dfc8d0cba0ca6d72f7f0fd3883eb9d922c04c7843a18e36a589a44f2", "fetched_at": "2026-08-28T04:07:18.912334+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handsontable/hyperformula"}, {"content_hash": "f7c0037611efef587c20716bdcc632e65cc63f7c2ef27db356e41211fa1bce72", "fetched_at": "2026-08-29T09:56:20.412959+00:00", "kind": "homepage", "missing": false, "url": "https://hyperformula.handsontable.com/"}, {"content_hash": "f1ef703e45c173d60373d52b277ec63423cc3caef5f4b778c3eed44497ef2936", "fetched_at": "2026-08-29T09:56:20.422180+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs"}, {"content_hash": "5f82596fe70f75d098023f61359e81bc41363ddbcd231c3199b59ba686775f77", "fetched_at": "2026-08-29T09:56:20.424064+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/license-key.html"}, {"content_hash": "b95aa64059940da81c69761871ab142c1bb5ff51c329d2a068afb671311a369b", "fetched_at": "2026-08-29T09:56:20.425705+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/demo.html"}, {"content_hash": "eb0acdc1bfe9cd3f04e8807ed2fa05932114972b8f4476055da9b6db565459d4", "fetched_at": "2026-08-29T09:56:20.427570+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hyperformula"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.912334+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:18.912334+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:16:39.387148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37c71bf1dfc8d0cba0ca6d72f7f0fd3883eb9d922c04c7843a18e36a589a44f2", "fetched_at": "2026-08-28T04:07:18.912334+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handsontable/hyperformula"}, {"content_hash": "f7c0037611efef587c20716bdcc632e65cc63f7c2ef27db356e41211fa1bce72", "fetched_at": "2026-08-29T09:56:20.412959+00:00", "kind": "homepage", "missing": false, "url": "https://hyperformula.handsontable.com/"}, {"content_hash": "f1ef703e45c173d60373d52b277ec63423cc3caef5f4b778c3eed44497ef2936", "fetched_at": "2026-08-29T09:56:20.422180+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs"}, {"content_hash": "5f82596fe70f75d098023f61359e81bc41363ddbcd231c3199b59ba686775f77", "fetched_at": "2026-08-29T09:56:20.424064+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/license-key.html"}, {"content_hash": "b95aa64059940da81c69761871ab142c1bb5ff51c329d2a068afb671311a369b", "fetched_at": "2026-08-29T09:56:20.425705+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/demo.html"}, {"content_hash": "eb0acdc1bfe9cd3f04e8807ed2fa05932114972b8f4476055da9b6db565459d4", "fetched_at": "2026-08-29T09:56:20.427570+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hyperformula"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:16:39.387148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37c71bf1dfc8d0cba0ca6d72f7f0fd3883eb9d922c04c7843a18e36a589a44f2", "fetched_at": "2026-08-28T04:07:18.912334+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handsontable/hyperformula"}, {"content_hash": "f7c0037611efef587c20716bdcc632e65cc63f7c2ef27db356e41211fa1bce72", "fetched_at": "2026-08-29T09:56:20.412959+00:00", "kind": "homepage", "missing": false, "url": "https://hyperformula.handsontable.com/"}, {"content_hash": "f1ef703e45c173d60373d52b277ec63423cc3caef5f4b778c3eed44497ef2936", "fetched_at": "2026-08-29T09:56:20.422180+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs"}, {"content_hash": "5f82596fe70f75d098023f61359e81bc41363ddbcd231c3199b59ba686775f77", "fetched_at": "2026-08-29T09:56:20.424064+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/license-key.html"}, {"content_hash": "b95aa64059940da81c69761871ab142c1bb5ff51c329d2a068afb671311a369b", "fetched_at": "2026-08-29T09:56:20.425705+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/demo.html"}, {"content_hash": "eb0acdc1bfe9cd3f04e8807ed2fa05932114972b8f4476055da9b6db565459d4", "fetched_at": "2026-08-29T09:56:20.427570+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hyperformula"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:16:39.387148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37c71bf1dfc8d0cba0ca6d72f7f0fd3883eb9d922c04c7843a18e36a589a44f2", "fetched_at": "2026-08-28T04:07:18.912334+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handsontable/hyperformula"}, {"content_hash": "f7c0037611efef587c20716bdcc632e65cc63f7c2ef27db356e41211fa1bce72", "fetched_at": "2026-08-29T09:56:20.412959+00:00", "kind": "homepage", "missing": false, "url": "https://hyperformula.handsontable.com/"}, {"content_hash": "f1ef703e45c173d60373d52b277ec63423cc3caef5f4b778c3eed44497ef2936", "fetched_at": "2026-08-29T09:56:20.422180+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs"}, {"content_hash": "5f82596fe70f75d098023f61359e81bc41363ddbcd231c3199b59ba686775f77", "fetched_at": "2026-08-29T09:56:20.424064+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/license-key.html"}, {"content_hash": "b95aa64059940da81c69761871ab142c1bb5ff51c329d2a068afb671311a369b", "fetched_at": "2026-08-29T09:56:20.425705+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/demo.html"}, {"content_hash": "eb0acdc1bfe9cd3f04e8807ed2fa05932114972b8f4476055da9b6db565459d4", "fetched_at": "2026-08-29T09:56:20.427570+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hyperformula"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:16:39.387148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37c71bf1dfc8d0cba0ca6d72f7f0fd3883eb9d922c04c7843a18e36a589a44f2", "fetched_at": "2026-08-28T04:07:18.912334+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handsontable/hyperformula"}, {"content_hash": "f7c0037611efef587c20716bdcc632e65cc63f7c2ef27db356e41211fa1bce72", "fetched_at": "2026-08-29T09:56:20.412959+00:00", "kind": "homepage", "missing": false, "url": "https://hyperformula.handsontable.com/"}, {"content_hash": "f1ef703e45c173d60373d52b277ec63423cc3caef5f4b778c3eed44497ef2936", "fetched_at": "2026-08-29T09:56:20.422180+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs"}, {"content_hash": "5f82596fe70f75d098023f61359e81bc41363ddbcd231c3199b59ba686775f77", "fetched_at": "2026-08-29T09:56:20.424064+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/license-key.html"}, {"content_hash": "b95aa64059940da81c69761871ab142c1bb5ff51c329d2a068afb671311a369b", "fetched_at": "2026-08-29T09:56:20.425705+00:00", "kind": "site_page", "missing": false, "url": "https://hyperformula.handsontable.com/docs/guide/demo.html"}, {"content_hash": "eb0acdc1bfe9cd3f04e8807ed2fa05932114972b8f4476055da9b6db565459d4", "fetched_at": "2026-08-29T09:56:20.427570+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hyperformula"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 85}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2549, "days_push": 7, "days_rel": 23, "gap_med": 73.5, "n_releases_24m": 7}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}