About diffvoid.com

Version 2.0.0
← Back to diffvoid.com

diffvoid.com is a secure, private, browser-based text comparison tool. All processing happens locally in your browser—your text never leaves your device.

Key Features

How It Works

A lightweight scan first validates the input and estimates its cost. Accepted comparisons normally run in a same-origin Web Worker. If worker creation is unavailable, only a comparison classified as safely small may run synchronously; heavy input is stopped with an instruction to serve the app over HTTP or compare smaller sections.

For that reason, opening the app from a file:// URL is not recommended. If worker creation fails immediately, only a safely small comparison may fall back to synchronous processing. Serve the public/ directory over HTTP for the complete comparison flow.

Myers line diff establishes exact anchors. Inside each unmatched hunk, a bounded dynamic-programming pass selects similar modified-line pairs with deterministic tie-breaking. It uses a full matrix for small hunks and a banded matrix for larger ones. If the remaining budget cannot support reliable alignment, no pair is guessed: the hunk is shown as missing and added lines.

Only the final modified pairs receive a grapheme-aware character comparison. The result is an atomic, source-free compact model containing row indexes, line-start arrays, and UTF-16 change ranges. The original left and right texts remain the only source of truth in the page.

The result view has fixed-height, non-wrapping rows and creates DOM only for the visible window: at most 200 rows per pane and 8,000 nodes across both panes. Very dense long lines use a paged preview. If exact character decoration must be simplified, diffvoid displays Detailed rendering reduced for performance; this never changes the text returned by Copy L/R.

Safe practical limits are 25,000 lines, 2,000,000 characters per side, 100,000 characters per line, and shared bounds for line diffing, alignment, character diffing, compact ranges, and rendering. Input outside those bounds receives a clear warning instead of unbounded browser work.

All computation happens client-side using JavaScript. Compared text may pass between the page and its in-browser Worker, but there is no backend processing and no network transmission of that text.

Detected Invisible Characters

Detected Confusable Characters

Confusable characters are visible letters from another script that can look like ordinary Latin letters. diffvoid marks common Greek and Cyrillic lookalikes, such as Cyrillic А (U+0410) that looks like Latin A, with a dotted underline and a tooltip.

Invisible characters are hidden or spacing-related. Confusable characters are visible, but easy to misread in code, domains, copied text, and identifiers.

How to Read the Diff

Open Source

diffvoid.com is open source. You can inspect the code, verify the privacy claims, or contribute:

github.com/timoheimonen/diffvoid

Contact

Created by Timo Heimonen

Email: timo.heimonen@proton.me