About 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
- Privacy first: No server uploads, no tracking, no analytics. Everything stays in your browser.
- Line-aware Myers diff: Uses a first-party Myers shortest edit script implementation so inserted or removed lines do not shift the whole comparison.
- Character-level Myers diff: Within modified lines, shows exactly which graphemes differ.
- Invisible character detection: Highlights zero-width spaces, non-breaking spaces, and other hidden Unicode characters that can cause subtle bugs.
- Confusable character detection: Marks common Greek and Cyrillic homographs that look like Latin letters, with tooltips explaining the real Unicode character.
- Copy without invisible characters: When invisible characters are detected, copy buttons appear to copy clean text. Zero-width characters are removed completely, while special spaces (NBSP, En/Em space, etc.) are replaced with standard spaces to preserve word separation.
- Adjustable panels: Drag the center divider to adjust left/right panel widths. Double-click to reset to 50/50.
- Clear button: One-click to clear both panels and reset to default view.
- Dark mode: Toggle between light and dark themes with preference saved locally.
- Web Worker processing: Comparison runs in a background thread to keep the UI responsive.
- Chunked rendering: Large diffs render in batches to prevent browser freezing.
How It Works
The tool aligns lines using a browser-side Myers shortest edit script implementation so matching blocks stay aligned even when lines are inserted or removed in the middle.
Adjacent Myers delete/insert ranges are paired into modified rows when their content is similar, then a grapheme-aware Myers character diff highlights exact changes within those rows.
Because comparison is fully browser-side, safe practical limits are 25,000 lines, 2,000,000 characters per side, 100,000 characters per line, and a bounded Myers edit workload.
If an input is too large or too different to process safely, diffvoid shows a clear warning instead of starting a comparison that could freeze the browser.
All computation happens client-side using JavaScript. There is no backend processing your text.
Detected Invisible Characters
- Zero-width space (U+200B)
- Zero-width non-joiner (U+200C)
- Zero-width joiner (U+200D)
- Non-breaking space (U+00A0)
- Hair space, thin space, en space, em space (U+200A, U+2009, U+2002, U+2003)
- Soft hyphen (U+00AD)
- BOM / zero-width no-break space (U+FEFF)
- And many more Unicode whitespace 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
- Matching lines: No background highlight - text is identical.
- Modified lines: Red background with red characters showing exact differences.
- Added lines: Red background - appears only on the right side.
- Missing lines: Red background - appears only on the left side.
- Difference counter: Counts changed visual rows: modified, added, and missing rows.
- Invisible characters: Shown as symbols like
|,[ZWSP], or red boxes for spaces in diffs. - Confusable characters: Shown with a dotted underline, a small marker, and a tooltip that names the actual Unicode character.
Open Source
diffvoid.com is open source. You can inspect the code, verify the privacy claims, or contribute:
Contact
Created by Timo Heimonen
Email: timo.heimonen@proton.me