{"adoption": {"forks": 115, "observed_at": "2026-08-28T04:07:47.499619+00:00", "stars": 3173}, "canonical_url": "https://ross.abutalabs.com/products/odiff", "card": {"archived": false, "artifact_type": "library", "description": "A very fast SIMD-first image comparison library (with nodejs API)", "domain": ["image-processing", "testing", "developer-tools"], "enriched": true, "function": ["image-processing", "testing", "cli"], "health_score": 100, "homepage": null, "language": "Zig", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["dmtrKovalenko/odiff"], "name": "dmtrKovalenko/odiff", "platform": ["cross-platform", "cli"], "pushed_at": "2026-08-24T16:04:17+00:00", "repo": "dmtrKovalenko/odiff", "stars": 3173, "tags": ["visual-regression", "snapshot-testing", "pixel-diff", "simd", "zig", "visual-testing", "nodejs"], "topics": ["visual", "diff", "snapshot", "image-comparison", "testing-tool", "pixel-perfect", "odiff", "hacktoberfest"], "urls": [], "use_cases": ["compare two images pixel by pixel", "visual regression testing for screenshots", "generate diff images between snapshots", "compare jpg and png images", "detect visual differences in UI screenshots", "snapshot testing for web apps", "fast image diffing in CI"], "what_it_is": "ODiff is a very fast pixel-by-pixel image comparison library and CLI tool written in Zig with SIMD optimizations (SSE2, AVX2, AVX512, NEON). It supports cross-format comparison of PNG, JPEG, WebP, and TIFF images with features like anti-aliasing detection and region ignoring, plus a Node.js API.", "when_to_avoid": ["you need perceptual hashing or image similarity search rather than strict pixel comparison", "you need a pure-JS solution without native binaries", "you work with formats outside png/jpeg/webp/tiff"], "when_to_choose": ["you need millisecond image comparisons in a test suite or CI pipeline", "you need cross-format comparison (e.g. jpg vs png) or anti-aliasing-aware diffs", "you want a native tool with a Node.js API and low memory footprint"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/odiff", "repo": "dmtrKovalenko/odiff", "role": "main", "score": 97}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:47.499619+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:45:27.169282+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ec4ff9a93de2506990d3a806ce7c975493fd700a5f49cce398f5d7129e9f77d", "fetched_at": "2026-08-28T04:07:47.499619+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dmtrKovalenko/odiff"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:47.499619+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:45:27.169282+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ec4ff9a93de2506990d3a806ce7c975493fd700a5f49cce398f5d7129e9f77d", "fetched_at": "2026-08-28T04:07:47.499619+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dmtrKovalenko/odiff"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:45:27.169282+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ec4ff9a93de2506990d3a806ce7c975493fd700a5f49cce398f5d7129e9f77d", "fetched_at": "2026-08-28T04:07:47.499619+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dmtrKovalenko/odiff"}], "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:47.499619+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:47.499619+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:47.499619+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:45:27.169282+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ec4ff9a93de2506990d3a806ce7c975493fd700a5f49cce398f5d7129e9f77d", "fetched_at": "2026-08-28T04:07:47.499619+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dmtrKovalenko/odiff"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:47.499619+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:47.499619+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:45:27.169282+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ec4ff9a93de2506990d3a806ce7c975493fd700a5f49cce398f5d7129e9f77d", "fetched_at": "2026-08-28T04:07:47.499619+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dmtrKovalenko/odiff"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:47.499619+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:47.499619+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:47.499619+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:45:27.169282+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ec4ff9a93de2506990d3a806ce7c975493fd700a5f49cce398f5d7129e9f77d", "fetched_at": "2026-08-28T04:07:47.499619+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dmtrKovalenko/odiff"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:47.499619+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:47.499619+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:45:27.169282+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ec4ff9a93de2506990d3a806ce7c975493fd700a5f49cce398f5d7129e9f77d", "fetched_at": "2026-08-28T04:07:47.499619+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dmtrKovalenko/odiff"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:45:27.169282+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ec4ff9a93de2506990d3a806ce7c975493fd700a5f49cce398f5d7129e9f77d", "fetched_at": "2026-08-28T04:07:47.499619+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dmtrKovalenko/odiff"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:45:27.169282+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ec4ff9a93de2506990d3a806ce7c975493fd700a5f49cce398f5d7129e9f77d", "fetched_at": "2026-08-28T04:07:47.499619+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dmtrKovalenko/odiff"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:45:27.169282+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6ec4ff9a93de2506990d3a806ce7c975493fd700a5f49cce398f5d7129e9f77d", "fetched_at": "2026-08-28T04:07:47.499619+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dmtrKovalenko/odiff"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 94}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2128, "days_push": 9, "days_rel": 42, "gap_med": 0, "n_releases_24m": 22}, "score": 97, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}