Visual diffs built for real UI review.

Honeydiff is Vizzly's Rust-powered diff engine: fast comparisons, less noise, and metadata agents can use.

Diff Drizzle, the Honeydiff mascot holding a magnifying glass over visual diff pixels

Built in-house.

We own the engine behind local TDD, cloud baselines, PR checks, and agent context.

Full HD default ~18.9ms

CIEDE2000 + AA filtering

4K default ~77.7ms

CIEDE2000 + AA filtering

Tall exact path ~4.9ms

threshold 0, no AA, no cluster filter

The useful parts of a visual diff.

Honeydiff reports where the image changed and how large each change is.

signal

Perceptual by default.

CIEDE2000 thresholds. Exact mode when you need it.

thresholdperceptualScore

noise

Noise-aware.

AA detection, cluster sizing, and text-region merging.

antialiasingminClusterSizeclusterMerge

regions

Region metadata.

Bounds, clusters, pixel counts, intensity stats.

includeClustersboundingBoxintensityStats

scores

Structural metrics.

SSIM and GMSD for similarity beyond changed pixels.

includeSSIMincludeGMSDperceptualScoregmsdScore

a11y

Accessibility checks.

WCAG contrast analysis and color vision simulation.

analyzeWcagContrastsimulateColorBlindnesscontrastRatio

evidence

Artifacts plus JSON.

Diff, mask, overlay, JSON, scores, fingerprints.

diffPathmaskPathoverlayPathfingerprint

Use Honeydiff directly.

Use @vizzly-testing/honeydiff from Node, or build the repo CLI for one-off local checks. Use Vizzly when you want baselines, PR review, and agent context already wired up.

$ npm install @vizzly-testing/honeydiff
import { compare } from '@vizzly-testing/honeydiff';

let result = await compare('baseline.png', 'current.png', {
  threshold: 2.0,
  includeClusters: true,
  includeSSIM: true,
  includeGMSD: true,
  diffPath: 'artifacts/diff.png',
  maskPath: 'artifacts/mask.png',
  overlayPath: 'artifacts/overlay.png',
  overwrite: true
});

console.log(result.diffPercentage);
console.log(result.aaPixelsIgnored);
console.log(result.perceptualScore);
console.log(result.diffClusters?.length ?? 0);

Use the engine by itself or with Vizzly.

Use Honeydiff when you need image comparison. Use Vizzly when you also need local TDD, approved baselines, pull request checks, and review.