{"adoption": {"forks": 626, "observed_at": "2026-08-28T04:09:40.818804+00:00", "stars": 6236}, "canonical_url": "https://ross.abutalabs.com/products/express-validator", "card": {"archived": false, "artifact_type": "library", "description": "An express.js middleware for validator.js.", "domain": ["web-development", "backend", "apis"], "enriched": true, "function": ["middleware", "form-handling", "security"], "health_score": 96, "homepage": "https://express-validator.github.io", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["express-validator/express-validator"], "name": "express-validator/express-validator", "platform": [], "pushed_at": "2026-08-09T09:25:52+00:00", "repo": "express-validator/express-validator", "stars": 6236, "tags": ["express", "validation", "sanitization", "validator-js", "request-validation", "nodejs", "javascript"], "topics": ["nodejs", "javascript", "validation", "express", "validator", "expressjs"], "urls": [], "use_cases": ["validate request bodies in express apis", "sanitize user input to prevent xss", "validate query params and route params", "add input validation middleware to express routes", "check email and url formats in nodejs forms"], "what_it_is": "express-validator is an Express.js middleware wrapping the validator.js library for request validation and sanitization. It lets you declare validation rules for route parameters, query strings, and request bodies in Express applications.", "when_to_avoid": ["you use Fastify, Koa, or a non-Express framework", "you need schema-based validation like Joi or Zod", "your app does not run on Node.js 14 or newer"], "when_to_choose": ["you build Express.js APIs and need declarative request validation", "you want sanitization and validation in one middleware", "you prefer validator.js rules with a fluent chainable API"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/express-validator", "repo": "express-validator/express-validator", "role": "main", "score": 82}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.818804+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:47:11.853871+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "98f63158fee475b263485ae07ac44d64a4cc8f5f2f346f8730f3119199d4eed3", "fetched_at": "2026-08-28T04:09:40.818804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/express-validator/express-validator"}, {"content_hash": "0904bec34fe3c7f440445826d8bf79773c89d1fcbcf479e50511f13c9a572543", "fetched_at": "2026-08-29T08:43:39.412319+00:00", "kind": "homepage", "missing": false, "url": "https://express-validator.github.io"}, {"content_hash": "7450dafce5fbe25951409a73a7156c73fcaee728d7a9ca23bda43360154c8991", "fetched_at": "2026-08-29T08:43:39.421546+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/express-validator"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.818804+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:47:11.853871+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "98f63158fee475b263485ae07ac44d64a4cc8f5f2f346f8730f3119199d4eed3", "fetched_at": "2026-08-28T04:09:40.818804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/express-validator/express-validator"}, {"content_hash": "0904bec34fe3c7f440445826d8bf79773c89d1fcbcf479e50511f13c9a572543", "fetched_at": "2026-08-29T08:43:39.412319+00:00", "kind": "homepage", "missing": false, "url": "https://express-validator.github.io"}, {"content_hash": "7450dafce5fbe25951409a73a7156c73fcaee728d7a9ca23bda43360154c8991", "fetched_at": "2026-08-29T08:43:39.421546+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/express-validator"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:47:11.853871+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "98f63158fee475b263485ae07ac44d64a4cc8f5f2f346f8730f3119199d4eed3", "fetched_at": "2026-08-28T04:09:40.818804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/express-validator/express-validator"}, {"content_hash": "0904bec34fe3c7f440445826d8bf79773c89d1fcbcf479e50511f13c9a572543", "fetched_at": "2026-08-29T08:43:39.412319+00:00", "kind": "homepage", "missing": false, "url": "https://express-validator.github.io"}, {"content_hash": "7450dafce5fbe25951409a73a7156c73fcaee728d7a9ca23bda43360154c8991", "fetched_at": "2026-08-29T08:43:39.421546+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/express-validator"}], "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:09:40.818804+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.818804+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.818804+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:47:11.853871+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "98f63158fee475b263485ae07ac44d64a4cc8f5f2f346f8730f3119199d4eed3", "fetched_at": "2026-08-28T04:09:40.818804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/express-validator/express-validator"}, {"content_hash": "0904bec34fe3c7f440445826d8bf79773c89d1fcbcf479e50511f13c9a572543", "fetched_at": "2026-08-29T08:43:39.412319+00:00", "kind": "homepage", "missing": false, "url": "https://express-validator.github.io"}, {"content_hash": "7450dafce5fbe25951409a73a7156c73fcaee728d7a9ca23bda43360154c8991", "fetched_at": "2026-08-29T08:43:39.421546+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/express-validator"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.818804+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.818804+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:47:11.853871+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "98f63158fee475b263485ae07ac44d64a4cc8f5f2f346f8730f3119199d4eed3", "fetched_at": "2026-08-28T04:09:40.818804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/express-validator/express-validator"}, {"content_hash": "0904bec34fe3c7f440445826d8bf79773c89d1fcbcf479e50511f13c9a572543", "fetched_at": "2026-08-29T08:43:39.412319+00:00", "kind": "homepage", "missing": false, "url": "https://express-validator.github.io"}, {"content_hash": "7450dafce5fbe25951409a73a7156c73fcaee728d7a9ca23bda43360154c8991", "fetched_at": "2026-08-29T08:43:39.421546+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/express-validator"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.818804+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.818804+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.818804+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:47:11.853871+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "98f63158fee475b263485ae07ac44d64a4cc8f5f2f346f8730f3119199d4eed3", "fetched_at": "2026-08-28T04:09:40.818804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/express-validator/express-validator"}, {"content_hash": "0904bec34fe3c7f440445826d8bf79773c89d1fcbcf479e50511f13c9a572543", "fetched_at": "2026-08-29T08:43:39.412319+00:00", "kind": "homepage", "missing": false, "url": "https://express-validator.github.io"}, {"content_hash": "7450dafce5fbe25951409a73a7156c73fcaee728d7a9ca23bda43360154c8991", "fetched_at": "2026-08-29T08:43:39.421546+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/express-validator"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.818804+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.818804+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:47:11.853871+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "98f63158fee475b263485ae07ac44d64a4cc8f5f2f346f8730f3119199d4eed3", "fetched_at": "2026-08-28T04:09:40.818804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/express-validator/express-validator"}, {"content_hash": "0904bec34fe3c7f440445826d8bf79773c89d1fcbcf479e50511f13c9a572543", "fetched_at": "2026-08-29T08:43:39.412319+00:00", "kind": "homepage", "missing": false, "url": "https://express-validator.github.io"}, {"content_hash": "7450dafce5fbe25951409a73a7156c73fcaee728d7a9ca23bda43360154c8991", "fetched_at": "2026-08-29T08:43:39.421546+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/express-validator"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:47:11.853871+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "98f63158fee475b263485ae07ac44d64a4cc8f5f2f346f8730f3119199d4eed3", "fetched_at": "2026-08-28T04:09:40.818804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/express-validator/express-validator"}, {"content_hash": "0904bec34fe3c7f440445826d8bf79773c89d1fcbcf479e50511f13c9a572543", "fetched_at": "2026-08-29T08:43:39.412319+00:00", "kind": "homepage", "missing": false, "url": "https://express-validator.github.io"}, {"content_hash": "7450dafce5fbe25951409a73a7156c73fcaee728d7a9ca23bda43360154c8991", "fetched_at": "2026-08-29T08:43:39.421546+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/express-validator"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:47:11.853871+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "98f63158fee475b263485ae07ac44d64a4cc8f5f2f346f8730f3119199d4eed3", "fetched_at": "2026-08-28T04:09:40.818804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/express-validator/express-validator"}, {"content_hash": "0904bec34fe3c7f440445826d8bf79773c89d1fcbcf479e50511f13c9a572543", "fetched_at": "2026-08-29T08:43:39.412319+00:00", "kind": "homepage", "missing": false, "url": "https://express-validator.github.io"}, {"content_hash": "7450dafce5fbe25951409a73a7156c73fcaee728d7a9ca23bda43360154c8991", "fetched_at": "2026-08-29T08:43:39.421546+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/express-validator"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:47:11.853871+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "98f63158fee475b263485ae07ac44d64a4cc8f5f2f346f8730f3119199d4eed3", "fetched_at": "2026-08-28T04:09:40.818804+00:00", "kind": "readme", "missing": false, "url": "https://github.com/express-validator/express-validator"}, {"content_hash": "0904bec34fe3c7f440445826d8bf79773c89d1fcbcf479e50511f13c9a572543", "fetched_at": "2026-08-29T08:43:39.412319+00:00", "kind": "homepage", "missing": false, "url": "https://express-validator.github.io"}, {"content_hash": "7450dafce5fbe25951409a73a7156c73fcaee728d7a9ca23bda43360154c8991", "fetched_at": "2026-08-29T08:43:39.421546+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/express-validator"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 100, "rhythm": 53}, "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": 5446, "days_push": 24, "days_rel": 154, "gap_med": 133, "n_releases_24m": 4}, "score": 82, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}