Runs 100% in your browser — nothing uploaded

Diff Checker — Text & JSON

Paste two blocks of text or two JSON documents and see exactly what changed: a line-by-line diff with added and removed highlighting, or a structural JSON diff that ignores key order. Compare logs, configs and exports without sending them anywhere.

Original (A)left
Changed (B)right
DiffA → B
Paste two inputs to compare. Everything is diffed on this device only.

How to compare two inputs

Paste your original into the left pane and the changed version into the right, and the diff appears below as you type. Use Text (line diff) for source code, logs, configuration files or any plain text, and switch to JSON (semantic) when you want to compare two JSON documents by structure rather than by formatting. Swap sides flips A and B, Ignore whitespace collapses spacing differences in line mode, and everything runs locally — the two inputs never leave your browser.

How the line diff works

The text mode computes a longest common subsequence (LCS) over the lines of both inputs — the same well-understood algorithm that underpins Unix diff and version control. Lines present in both, in order, are treated as the unchanged backbone; lines only in the original are marked removed and shown in red with a -, while lines only in the changed version are marked added and shown in green with a +. Because the result is derived from a deterministic algorithm rather than a heuristic, the same two inputs always produce the same diff. A running tally of added and removed lines is shown so you can gauge the size of a change at a glance.

The exact LCS comparison builds a table proportional to the number of lines on each side multiplied together. For everyday files this is instant, but for very large inputs the table is capped to keep your browser responsive; in that case the tool asks you to compare the material in smaller sections rather than silently producing a degraded result.

Structural JSON diff

Comparing JSON line-by-line is frustrating, because reformatting or reordering keys creates noise that hides the real change. JSON mode solves this by parsing both documents and comparing them structurally. Key order and whitespace are ignored entirely; what you see instead is a list of concrete paths — like root.user.role or root.items[2] — annotated as added, removed, or changed, with the old and new values shown for every change. Arrays are compared positionally and objects by key, so you can pinpoint precisely which field moved without wading through a wall of reformatted text. This is the difference between "these two files look different" and "the role changed from engineer to lead engineer and a team field was added."

Why not just paste both into an AI?

Diffing is exactly the kind of task where a language model is the wrong tool. A diff must be exact: miss one changed line in a config and you ship a bug; hallucinate a change that is not there and you waste an afternoon chasing it. An LCS diff is provably correct and reproducible, while an AI summary is a probabilistic paraphrase that can quietly drop or invent lines, especially on long inputs that exceed its context. For comparing real files where correctness matters, deterministic beats clever.

Why a local diff tool matters

The things people most often need to diff are the things they should least want to upload: production logs, environment configs, database exports, API responses with customer data, infrastructure manifests. Pasting two versions of any of those into a website or chatbot to "see what changed" hands that data to a third party. This tool removes the temptation entirely — both inputs are compared by JavaScript running in your own tab, with no network request and no storage. Close the tab and the data is gone.

That is the whole idea behind gitime.dev: deterministic, security-respecting utilities that keep your data where it already is. A diff never needs to travel to be computed.

Frequently asked questions

Is my data uploaded when I compare it?
No. Both inputs are diffed in your browser. Nothing is transmitted.
How is the line diff computed?
With a longest-common-subsequence algorithm, the same deterministic basis as diff and git.
What does JSON mode do differently?
It compares structurally, ignoring key order, and reports the exact paths that changed.
Why does it say the inputs are too large?
The exact line diff is capped for very large inputs to protect your browser; diff in sections.

Related tools