Folder comparison

Give DiffMan two folders. It walks both trees and tells you, for every name, whether the files match, differ, exist on one side only, were skipped, or could not be read. Double-click a pair to open the text, image, or document viewer.

Compare window with Browse on each side, a Compare button, filters for differences, and a split tree. Different rows are blue, left-only rows are red, right-only rows are green. A tooltip explains that file sizes differ.
Two folders after a scan. The bar at the top counts files, identical, different, probable, left only, right only, and excluded.

How to start

  1. Browse for a folder on the left, or drop one onto that side.
  2. Do the same on the right. After one side is a folder, the other side will only accept a folder.
  3. Press Compare. Each window keeps its own paths, expansion, filter and sort.

From the terminal: DiffMan ./left ./right. If the sandbox cannot read a typed path, that side is reported as inaccessible. It is not treated as identical.

What the colours mean

StatusWhat you seeWhat it actually means
IdenticalNo wash, or a quiet rowThe bytes that were compared matched. If only samples were read, the result still says identical and also says it is not fully verified.
DifferentBlue row, ≠Sizes differ, or the compared bytes differ. A size difference is always different content.
Left only / right onlyRed «« or green »»The name exists on one side.
ProbablePeachNo content check ran. A typical case: timestamps differ and “when timestamps differ, compare contents” is off.
ExcludedGreyAn ignore rule matched. The item is left out of the identical and different counts.
ErrorYellow, !Unreadable, a link cycle, a target outside the selected folder, and similar. Never counted as identical.

A different modification time, by itself, never proves the files differ and never proves they match. The default timestamp tolerance is two seconds. Metadata-only differences can be listed separately from the content result; that toggle lives in Settings.

How files are compared

By default DiffMan looks at size first. If the sizes differ, the files are different and the contents may not be read. If sizes match, it samples 1,024 bytes from the start, one middle region, and the end. Matching samples are Identical, with fully verified off unless those windows already cover the whole file.

Turn on full byte-for-byte verification when you need every byte compared. That streams both files. It is not a checksum. Details and defaults are on the settings page.

Copying

Comparison never writes. Copy is an explicit command plus a confirmation sheet. Replacing something that already exists needs a separate switch. A folder copy replaces the destination folder; it does not merge. Names hidden by ignore rules on disk are still copied, because the copy is of the folder that is actually there.

Each item is written to a temporary name beside the destination and replaces the destination only when that write has finished. Cancel before the replace and the destination is unchanged. Copying a folder into itself is refused. A file and a folder that share a name are not swapped automatically.

Copy confirmation sheet
Copy files.

Ignore rules

Default exclusions are the exact name .DS_Store and the extensions class, log, and tmp. An ignored directory is not descended into. A file that exists on only one side and matches a rule is excluded, not left-only or right-only.

Extensions use the last extension only and ignore case, so archive.tar.gz matches gz. Other rule kinds are case-sensitive. In a name, * does not cross folders. In a path pattern, ** does. Empty patterns match nothing. The Ignore tab is documented with the other settings.

Symbolic links

Links are compared as paths, not as the target, unless you turn on follow. Even then, a target outside the selected folder is not read, a cycle is an error, and nesting deeper than 256 levels stops with an incomplete scan.

Opening a file from the tree

Double-click opens a viewer for that pair: text, image, or document (Word, OpenDocument, RTF, PDF). JSON, YAML, TOML, XML, INI and properties files open as text with a Semantic switch. Two files dropped on the main window use the same viewers inline.

Folder comparison stays available after the three-month introduction. Markup and Pages are the parts that later need a licence.