{"adoption": {"forks": 231, "observed_at": "2026-08-28T04:05:24.993594+00:00", "stars": 1707}, "canonical_url": "https://ross.abutalabs.com/products/htmlsanitizer", "card": {"archived": false, "artifact_type": "library", "description": "Cleans HTML to avoid XSS attacks", "domain": ["security", "web-development", "backend"], "enriched": true, "function": ["security", "parser", "templating"], "health_score": 100, "homepage": null, "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["mganss/HtmlSanitizer"], "name": "mganss/HtmlSanitizer", "platform": ["dotnet", "cross-platform"], "pushed_at": "2026-08-26T15:29:42+00:00", "repo": "mganss/HtmlSanitizer", "stars": 1707, "tags": ["xss", "html-sanitizer", "html-parsing", "css-sanitization", "anglesharp"], "topics": ["xss", "html", "sanitizer"], "urls": [], "use_cases": ["sanitize user-submitted HTML to prevent XSS", "clean HTML fragments before rendering in a web app", "strip dangerous tags and attributes from rich text input", "allow only whitelisted HTML tags and CSS properties", "protect against tag poisoning from malformed HTML", "sanitize HTML in ASP.NET applications"], "what_it_is": "A .NET library for cleaning HTML fragments and documents of constructs that can lead to XSS attacks, built on the AngleSharp parser. It is highly configurable, allowing control over allowed tags, attributes, CSS properties, and URI schemes.", "when_to_avoid": ["your project is not on the .NET platform", "you only need to escape plain text rather than sanitize rich HTML", "you need a browser-side JavaScript sanitizer"], "when_to_choose": ["you need a robust, parser-based HTML sanitizer in .NET", "you need fine-grained control over allowed tags, attributes, CSS, and URI schemes", "you want protection against malformed HTML corrupting document structure"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/htmlsanitizer", "repo": "mganss/HtmlSanitizer", "role": "main", "score": 98}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.993594+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:37:27.332703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c0f4028d92d05510f50f1c8601dbcc26f772de20b95c7a968fe784fa681af4", "fetched_at": "2026-08-28T04:05:24.993594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mganss/HtmlSanitizer"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.993594+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:37:27.332703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c0f4028d92d05510f50f1c8601dbcc26f772de20b95c7a968fe784fa681af4", "fetched_at": "2026-08-28T04:05:24.993594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mganss/HtmlSanitizer"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:37:27.332703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c0f4028d92d05510f50f1c8601dbcc26f772de20b95c7a968fe784fa681af4", "fetched_at": "2026-08-28T04:05:24.993594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mganss/HtmlSanitizer"}], "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:24.993594+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.993594+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.993594+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:37:27.332703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c0f4028d92d05510f50f1c8601dbcc26f772de20b95c7a968fe784fa681af4", "fetched_at": "2026-08-28T04:05:24.993594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mganss/HtmlSanitizer"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.993594+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.993594+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:37:27.332703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c0f4028d92d05510f50f1c8601dbcc26f772de20b95c7a968fe784fa681af4", "fetched_at": "2026-08-28T04:05:24.993594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mganss/HtmlSanitizer"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.993594+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.993594+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.993594+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:37:27.332703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c0f4028d92d05510f50f1c8601dbcc26f772de20b95c7a968fe784fa681af4", "fetched_at": "2026-08-28T04:05:24.993594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mganss/HtmlSanitizer"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.993594+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.993594+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:37:27.332703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c0f4028d92d05510f50f1c8601dbcc26f772de20b95c7a968fe784fa681af4", "fetched_at": "2026-08-28T04:05:24.993594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mganss/HtmlSanitizer"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:37:27.332703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c0f4028d92d05510f50f1c8601dbcc26f772de20b95c7a968fe784fa681af4", "fetched_at": "2026-08-28T04:05:24.993594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mganss/HtmlSanitizer"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:37:27.332703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c0f4028d92d05510f50f1c8601dbcc26f772de20b95c7a968fe784fa681af4", "fetched_at": "2026-08-28T04:05:24.993594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mganss/HtmlSanitizer"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:37:27.332703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c0f4028d92d05510f50f1c8601dbcc26f772de20b95c7a968fe784fa681af4", "fetched_at": "2026-08-28T04:05:24.993594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mganss/HtmlSanitizer"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 97}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4817, "days_push": 7, "days_rel": 23, "gap_med": 7, "n_releases_24m": 12}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}