{"adoption": {"forks": 195, "observed_at": "2026-08-28T04:08:15.308873+00:00", "stars": 3714}, "canonical_url": "https://ross.abutalabs.com/products/bluemonday", "card": {"archived": false, "artifact_type": "library", "description": "bluemonday: a fast golang HTML sanitizer (inspired by the OWASP Java HTML Sanitizer) to scrub user generated content of XSS", "domain": ["security", "web-development", "developer-tools"], "enriched": true, "function": ["security", "parser", "web-framework"], "health_score": 32, "homepage": "https://github.com/microcosm-cc/bluemonday", "language": "Go", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "stable", "member_repos": ["microcosm-cc/bluemonday"], "name": "microcosm-cc/bluemonday", "platform": ["go", "cross-platform"], "pushed_at": "2025-04-04T09:55:48+00:00", "repo": "microcosm-cc/bluemonday", "stars": 3714, "tags": ["html-sanitizer", "xss-protection", "allowlist", "user-generated-content", "owasp"], "topics": ["sanitization", "html", "security", "xss", "go", "owasp", "allowlist", "golang"], "urls": [], "use_cases": ["sanitize user comments before rendering on a web page", "strip javascript: URLs and event handlers from HTML input", "allow only safe HTML tags in forum or CMS posts", "clean HTML output from markdown processors like blackfriday or Pandoc", "prevent XSS attacks from user generated content in a Go web server", "enforce an allowlist of permitted HTML elements and attributes"], "what_it_is": "bluemonday is a fast, highly configurable HTML sanitizer library for Go, inspired by the OWASP Java HTML Sanitizer. It takes untrusted user-generated content and returns HTML sanitized against an allowlist of approved elements and attributes to prevent XSS attacks.", "when_to_avoid": ["you need to repair badly nested or incomplete HTML rather than sanitize it", "you are not working in Go", "you need a browser-side or client-side sanitizer", "you need full HTML validation or parsing of malformed documents"], "when_to_choose": ["your Go server accepts and displays user-generated HTML", "you need a fast, allowlist-based sanitizer with configurable policies", "you want OWASP-aligned XSS mitigation for HTML content", "you need to sanitize output after markdown or other HTML-producing processing"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bluemonday", "repo": "microcosm-cc/bluemonday", "role": "main", "score": 29}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.308873+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:29:24.150698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b31ffd46a01e516843423f4f3f79a1f19c9f58c40ac4adba99c6db105a9ea", "fetched_at": "2026-08-28T04:08:15.308873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}, {"content_hash": "0b190815f2b5bee501f40145a16eb70f6e47cb190e7f5ba99472e726493f323f", "fetched_at": "2026-08-29T09:24:11.182620+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.308873+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:29:24.150698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b31ffd46a01e516843423f4f3f79a1f19c9f58c40ac4adba99c6db105a9ea", "fetched_at": "2026-08-28T04:08:15.308873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}, {"content_hash": "0b190815f2b5bee501f40145a16eb70f6e47cb190e7f5ba99472e726493f323f", "fetched_at": "2026-08-29T09:24:11.182620+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:29:24.150698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b31ffd46a01e516843423f4f3f79a1f19c9f58c40ac4adba99c6db105a9ea", "fetched_at": "2026-08-28T04:08:15.308873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}, {"content_hash": "0b190815f2b5bee501f40145a16eb70f6e47cb190e7f5ba99472e726493f323f", "fetched_at": "2026-08-29T09:24:11.182620+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}], "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:08:15.308873+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.308873+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.308873+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:29:24.150698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b31ffd46a01e516843423f4f3f79a1f19c9f58c40ac4adba99c6db105a9ea", "fetched_at": "2026-08-28T04:08:15.308873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}, {"content_hash": "0b190815f2b5bee501f40145a16eb70f6e47cb190e7f5ba99472e726493f323f", "fetched_at": "2026-08-29T09:24:11.182620+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.308873+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.308873+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:29:24.150698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b31ffd46a01e516843423f4f3f79a1f19c9f58c40ac4adba99c6db105a9ea", "fetched_at": "2026-08-28T04:08:15.308873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}, {"content_hash": "0b190815f2b5bee501f40145a16eb70f6e47cb190e7f5ba99472e726493f323f", "fetched_at": "2026-08-29T09:24:11.182620+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.308873+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.308873+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.308873+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:29:24.150698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b31ffd46a01e516843423f4f3f79a1f19c9f58c40ac4adba99c6db105a9ea", "fetched_at": "2026-08-28T04:08:15.308873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}, {"content_hash": "0b190815f2b5bee501f40145a16eb70f6e47cb190e7f5ba99472e726493f323f", "fetched_at": "2026-08-29T09:24:11.182620+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.308873+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.308873+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:29:24.150698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b31ffd46a01e516843423f4f3f79a1f19c9f58c40ac4adba99c6db105a9ea", "fetched_at": "2026-08-28T04:08:15.308873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}, {"content_hash": "0b190815f2b5bee501f40145a16eb70f6e47cb190e7f5ba99472e726493f323f", "fetched_at": "2026-08-29T09:24:11.182620+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:29:24.150698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b31ffd46a01e516843423f4f3f79a1f19c9f58c40ac4adba99c6db105a9ea", "fetched_at": "2026-08-28T04:08:15.308873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}, {"content_hash": "0b190815f2b5bee501f40145a16eb70f6e47cb190e7f5ba99472e726493f323f", "fetched_at": "2026-08-29T09:24:11.182620+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:29:24.150698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b31ffd46a01e516843423f4f3f79a1f19c9f58c40ac4adba99c6db105a9ea", "fetched_at": "2026-08-28T04:08:15.308873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}, {"content_hash": "0b190815f2b5bee501f40145a16eb70f6e47cb190e7f5ba99472e726493f323f", "fetched_at": "2026-08-29T09:24:11.182620+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:29:24.150698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b31ffd46a01e516843423f4f3f79a1f19c9f58c40ac4adba99c6db105a9ea", "fetched_at": "2026-08-28T04:08:15.308873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}, {"content_hash": "0b190815f2b5bee501f40145a16eb70f6e47cb190e7f5ba99472e726493f323f", "fetched_at": "2026-08-29T09:24:11.182620+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/microcosm-cc/bluemonday"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 14, "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": 4669, "days_push": 516, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 29, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}