Skip to content
TwinScope0.3.10

What is TwinScope

Drop two things in. TwinScope works out what they are, picks the engine that suits them, and opens with counts before it shows you a single line of detail. Nothing leaves your machine.

Getting startedEdit this page
Click to enlarge
One front door. Two slots, a detection bar that says what will run, and one key to start it.

The premise#

Comparison tools usually make you choose the tool first. TwinScope inverts that: you hand it two things, and working out what they are is its job, not yours.

  1. Give it two inputs. Drag them onto the two zones, pick them with ⌘O, or paste with ⌘V. Files, folders, images and clipboard snippets all arrive the same way — see Giving it two inputs.
  2. It detects what they are. Extension first, then a content sniff of the decoded text, then a JSON parse probe — in that order, and for a reason. See Type detection.
  3. The engine that suits them runs. Off the UI thread, with live progress and a working cancel button. See Running a comparison.
  4. You get counts first, detail second. A summary strip, then the diff, then export if you need to hand it to someone. See Reading a result.

The five engines#

EngineRuns whenWhat it gives you
Text diffBoth sides are text, code, JSON, YAML, CSV or MarkdownSide-by-side, unified and inline views, with edited lines paired and marked word by word instead of appearing as unrelated deletes and adds
Structural JSON diffBoth sides are JSONA tree of the parsed values, so reformatting a file changes nothing; arrays match by identity, objects compare as key sets, type changes get their own row kind
File tree diffBoth sides are foldersA recursive scan with per-file status, rename pairing, filters, and drill-in to any file pair
Visual / pixel diffBoth sides are imagesSide-by-side, overlay, blink and difference, with changed regions boxed and an adjustable threshold
Binary comparisonBoth sides sniff as binaryA verdict from the sizes and a SHA-256, instead of pages of mojibake

What TwinScope is not#

It is notBecause
A merge toolIt explains a difference; it never writes to your files. There is no "take left", no conflict resolution, no editor.
A git clientIt compares the two things you hand it. It has no notion of repositories, branches, commits or history, and it does not shell out to git.
A cloud serviceThere is no account, no sign-in, no upload and no server. It is a desktop app that reads two paths off your disk.

Who it is for#

Developers who compare things all day and are tired of picking a tool for each one: an API response against yesterday's, a config file against the one on staging, a build output tree against the last release, a screenshot against the design. The workflow it is built around is copy, paste, read, copy again, paste again — which is why the clipboard is a first-class intake route and why history remembers what you compared without remembering what was in it.

It also suits work you cannot upload. A comparison of two customer exports, two licence keys or two proprietary binaries has no business leaving the machine, and with TwinScope it does not.

What comes with it#

HistoryEvery completed comparison, in a local SQLite file — paths, sizes, engine and counts. Never file contents. History
ExportA self-contained HTML report, Markdown for a pull request, or a unified patch straight to the clipboard. Export
Command palette⌘K, with actions and recent comparisons. Command palette
One keyboard registryThe Settings grid and the palette are generated from the same table that binds the keys, so neither can describe a shortcut the app does not have. Keyboard map
Both themesDark-first, light fully supported, and it can follow the system.

Where to start#

Install it, then run your first comparison. It takes about a minute.