Documentation

Folder & hex compare

Give DiffScope two folders and you get a side-by-side tree of every file. Give it two binary files and you get a byte-level hex view that streams from disk, so even very large files open quickly.

Applies to DiffScope v1.0.1 Updated Oct 2026

Folder compare

DiffScope folder compare: a tree of files with name, size and modified columns for each side and a status column in the middle DiffScope folder compare in the light theme
Each row pairs an entry on the left with the same name on the right.

Each side shows the name, size and modified time. The column in the middle shows the status. Sub-folders are scanned recursively, and folders that contain differences are expanded when the comparison opens. On Windows, names are matched without regard to case, so Readme.md pairs with README.md.

Statuses

MarkStatusMeaning
=SameIdentical under the current compare mode. A folder is Same when everything inside it is.
≠DifferentThe files differ, or the folder contains differences.
◀Left onlyExists on the left side only.
▶Right onlyExists on the right side only.
⚠Type mismatchA file on one side and a folder (or link) with the same name on the other.
!ErrorCould not be read, for example because access was denied. Hover the mark for the reason.

The status bar counts each status and shows the path and status of the selected row.

Compare modes

The drop-down in the toolbar sets how two files are judged equal:

ModeTwo files are the same whenCommand line
Compare contentsEvery byte matches (default). Files of different size are known to differ without being read.--compare=content
Size & dateSizes match and modified times are within 2 seconds of each other.--compare=size-mtime
Size onlySizes match.--compare=size

Size & date and Size only are much faster on large trees, because no file contents are read.

Filters

The filter buttons choose which rows are shown. The counts in the status bar always cover the whole tree.

  • All: every entry.
  • Differences: everything that is not Same.
  • Same: identical files only.
  • Orphans: entries that exist on one side only.

Folders stay visible when something inside them matches the filter. Expand all and Collapse all open or close the whole tree.

Exclude patterns

Type patterns in the Exclude box, separated by ; (or ,), and press Enter. Matching files and folders are left out of the scan completely. On the command line, repeat --exclude once per pattern.

PatternMatches
*Any run of characters within one name (does not cross /).
?Any single character except /.
**Anything, including /. **/ matches zero or more folders.
[abc], [a-z], [!abc]One character from the set or range, or not in it.
A pattern without /Matches the entry's name at any depth: node_modules, *.obj.
A pattern with /Matches the path from the compare root: build/out, /docs/*.pdf. A leading / is optional.
A trailing /Matches folders only: bin/.

Backslashes count as path separators, so build\out works too. Matching ignores case on Windows.

.git; node_modules; bin/; obj/; *.user; **/generated/*.cs

Opening a file pair

Double-click a file row, select it and press Enter, or use the compare button in the toolbar. The pair opens in a new window, in the text or hex compare depending on the files, with the same ignore options. Files that exist on one side only cannot be opened as a pair. Double-clicking a folder expands or collapses it.

Use F7 and Shift+F7 to jump between differing rows (collapsed folders are expanded as needed), and the arrow keys to move through and open or close the tree. All keys are listed in Keyboard shortcuts.

Refresh (F5) scans again, and Swap sides exchanges left and right.

Top level only

Start with --no-recursive to compare only the top level. Sub-folders that exist on both sides are then listed as Same without being scanned.

Hex compare

DiffScope hex compare: offset, hex bytes and ASCII columns for two binary files with differing bytes highlighted DiffScope hex compare in the light theme
Offset, 16 bytes in hex, and the same bytes as ASCII, for each file.

Binary files open in the hex view automatically. Use --hex to force it for text files too. Each row shows the offset, 16 bytes in hex and the same bytes as ASCII. Differing bytes are highlighted in both panes, and the overview strip shows where the differences are.

  • Byte for byte. Bytes are compared at the same offset in both files. An inserted byte is not realigned, so everything after it shows as different. Bytes past the end of the shorter file count as differences.
  • Streaming. The comparison reads the files in chunks, and the view loads only the bytes on screen, so files of hundreds of megabytes open without being read into memory. Rows that are still loading show ยทยท.
  • Very different files. The list of differing ranges stops after 100,000 ranges. The status bar then says list truncated.

The status bar shows the current range ("Difference 2 of 7"), the number of differing bytes, the offset of the first difference, both file sizes and the size difference.

Navigation

  • F7 / Alt+↓ and Shift+F7 / Alt+↑ go to the next and previous differing range.
  • Ctrl+Home and Ctrl+End go to the start and the end.
  • F5 reloads both files; Swap sides exchanges them.

Go to offset

Press Ctrl+G (or click the box in the toolbar), type an offset and press Enter. The byte at that offset is marked. Spaces and underscores are ignored, so 0x1_0000 works.

You typeRead asOffset
0x1F0Hex (0x prefix)496
1F0hHex (h suffix)496
$1F0Hex ($ prefix)496
1f0Hex, because it contains a letter a–f496
496Decimal496
#496Decimal (# prefix)496

Plain digits are always decimal: 10 means 10, not 16. An offset past the end of both files shows the end.