{"data":{"slug":"odiff","name":"ODiff","tagline":"MIT SIMD image diff for screenshot and visual-regression tests","category":"libraries","categoryName":"Libraries","url":"https://github.com/dmtrKovalenko/odiff","github":"https://github.com/dmtrKovalenko/odiff","pricing":"open-source","hook":"ODiff compares two images pixel by pixel in milliseconds and writes a diff image, which makes it a fast check for visual-regression tests and for coding agents that need to verify a UI change from before/after screenshots.","whatsGood":"MIT (dmtrKovalenko/odiff), release v4.5.0 (2026-07-23), maintained since 2020, now written in Zig with SSE2, AVX2, AVX512 and NEON paths. Compares across formats (png, jpg, webp, tiff), detects anti-aliasing, can ignore regions and handles images with different layouts. Use it as a CLI, from Node via odiff-bin, or in server mode that answers JSON requests over stdio so a long-running test runner avoids a process spawn per image. playwright-odiff adds a toHaveScreenshotOdiff matcher, and a community plugin covers Cypress. Without an output path it shows the diff inline in terminals with the kitty graphics protocol. ★~3.3k.","theCatch":"It only answers whether two images differ and where: there is no baseline storage, review UI or approval flow — you still need your test runner or a service for that. Diff output is PNG only. Pixel-exact comparison means fonts, GPU rendering and animations can make tests flaky unless you pin the browser environment and set thresholds or ignore regions.","verdict":"Drop-in fast pixel diff for screenshot tests and agent UI checks — bring your own baseline workflow.","addedAt":"2026-10-17","featured":false,"domain":"Libraries","subSpecialty":"Testing","subcategory":"Testing","tags":["self-host","permissive","coding-agents","testing","active"],"capabilities":["image-diff","visual-regression","screenshots"],"surfaces":["Self-host"],"ecosystem":["Node.js","Multi-platform"],"licenseModel":"OSS/MIT","githubStars":3273,"starsPerWeek":11,"access":"free","archived":false,"repo":{"createdAt":"2020-11-04","pushedAt":"2026-10-13","license":"MIT","archived":false,"checkedAt":"2026-10-19"}},"related":[{"slug":"hono","name":"Hono","tagline":"Tiny TypeScript web framework that runs on every runtime"},{"slug":"phaser","name":"Phaser","tagline":"MIT HTML5 2D game framework with scenes, physics, and tilemaps"},{"slug":"pixijs","name":"PixiJS","tagline":"MIT 2D WebGPU/WebGL renderer, not a game engine"},{"slug":"babylonjs","name":"Babylon.js","tagline":"Apache-2.0 3D engine for the web, now on v9"},{"slug":"playcanvas","name":"PlayCanvas","tagline":"MIT WebGL2/WebGPU engine plus an optional hosted Editor"}],"links":{"self":"/api/gems/odiff","html":"/gems/odiff","markdown":"/gems/odiff.md","category":"/api/gems?category=libraries","categoryPage":"/stacks/libraries"}}