About the Handiwork Diff Checker
Use this online Diff Checker to compare two blocks of text and find added, removed, and unchanged lines. Paste both versions, optionally ignore whitespace or letter case, review live counts, hide unchanged lines, and copy or download a portable diff. The comparison runs locally in your browser.
How to use the Handiwork Diff Checker
- Paste the original text on the left and the changed text on the right.
- Choose exact matching or ignore whitespace and letter case, then review the change counts and aligned diff table.
- Hide unchanged lines when needed, then copy the diff or download it as a .diff file.
How the line diff works
Both inputs are split at newline characters. A longest-common-subsequence table finds an ordered set of matching lines, and the remaining lines are emitted as additions or removals. Exact matching is the default; optional controls can collapse surrounding or repeated whitespace and normalize letter case before matching while preserving the original text in the output.
Worked example and matching behavior
If the original contains alpha, beta, and gamma while the changed text contains alpha, beta updated, and gamma, the tool reports beta as one removed line and beta updated as one added line. Exact mode counts whitespace-only and capitalization edits; enable the relevant comparison option when those changes are noise for your review.
Online diff checker workflow
Paste or type both versions directly into the browser; the text is not uploaded by this tool. Use the full view first so additions and removals retain surrounding context, then hide unchanged lines to create a shorter checklist. For code or configuration, run the changed result through its own parser or tests afterward because a text diff can show what changed without proving that the result is valid.
When a line diff is the wrong comparison
This view does not parse programming languages, JSON objects, document revisions, or moved blocks semantically. Reordered lines may appear as removals and additions, and a one-character edit replaces the whole line. Use a format-aware validator or version-control review when structure, authorship, comments, or legal redlines matter.
Continue this workflow
Use the adjacent tool when the next step calls for a different input, output, or method.
Assumptions and limitations
- Comparison is line-based and does not highlight individual changed words or characters. Ignore options normalize lines only for matching.
- Moved lines are not identified as moves and may appear as a removal plus an addition.
- The longest-common-subsequence table uses memory proportional to both input line counts, so very large texts may be slow.
- The tool does not understand code syntax, JSON structure, document revision history, or legal redline semantics.
Sources and standards
These authoritative references were used to verify the method and guidance on this page.
Frequently asked questions
What do the colors mean?
Green rows are added lines, red rows are removed lines, and unchanged lines have no change background. A plus or minus marker also identifies changed rows.
Can I hide unchanged lines?
Yes. Turn on Hide unchanged lines to show only additions and removals. Return to the full view when surrounding context matters.
Can I ignore spaces or capitalization?
Yes. Ignore whitespace collapses repeated spaces and trims line edges for matching, while Ignore letter case compares uppercase and lowercase as equal. The displayed and exported text keeps its original characters.
Can I save the comparison?
Yes. Copy the generated diff or download it as a .diff text file with original and changed headers.
Does this detect moved lines or changed words?
No. It produces an exact line-level diff. A moved line or an edited word can appear as a removed line and an added line.
Does a clean diff prove my code or JSON is valid?
No. The tool compares text only. Use the appropriate parser, validator, compiler, or test suite for the changed format.
Is my text kept private?
The comparison runs in browser memory and this tool does not upload the two text inputs.