Gap finder

Made-up data

Two made-up lists of ids that should agree: an original, and a copy taken from it. Each side comes down to a count and one fingerprint. If the fingerprints differ, the finder splits the ids into groups by first character, finds the groups that disagree, and gives every row that differs its likely reason.

Comparing lists needs JavaScript. The sample's result reads below without it.

Two lists

Start from a sample

The sample: an original list and a copy taken from it at one moment. Each row's history is known: when it was added or removed, and whether it is archived.

Works on the samples, where each row's archived flag is known.

Paste your own lists: one id per line, up to 500 lines in each box. Order, blank lines and spaces around an id are ignored. Case is not. Ctrl and Enter also compares.

What you paste stays on this page. Nothing is stored or sent.

Count and fingerprint

Original

158 rows

Fingerprint b9f9f4712229

Full fingerprintb9f9f47122292030555bcd37eb1d58235fa39508621b7667f2278149be78f381

Copy

151 rows

Fingerprint 2bd564a83a2e

Full fingerprint2bd564a83a2e7a14c464b214202180aa88326616d7a32dd3f2def40c5db53c73

9 rows differ.

The fingerprints differ, so the lists do not match. 4 of 8 groups disagree.

The fingerprint is a SHA-256 hash of the ids in sorted order. One changed id gives a completely different fingerprint.

Groups by first character

Rows in each group, with the start of its fingerprint
GroupOriginalCopyResult
A199d5b07177844c3Disagrees
B2173bf5b18538b0cDisagrees
C27fcf45e27fcf45eAgrees
D21b0e83e21b0e83eAgrees
E18d36e231596f707Disagrees
F26e744a627bab800Disagrees
G1183130811831308Agrees
H159a590e159a590eAgrees

Every difference, by likely reason

Timing4 rows

Proven by rebuilding the original as it stood when the copy was taken.

  • B437Only in the original. Added to the original 31 minutes after the copy was taken.
  • E268Only in the original. Added to the original 54 minutes after the copy was taken.
  • E422Only in the original. Added to the original 44 minutes after the copy was taken.
  • F480Only in the copy. Removed from the original 28 minutes after the copy was taken.

Filter4 rows

A rule one side applies and the other does not.

  • A116Only in the original. Archived. The copy leaves archived rows out, and the original keeps them.
  • A336Only in the original. Archived. The copy leaves archived rows out, and the original keeps them.
  • B278Only in the original. Archived. The copy leaves archived rows out, and the original keeps them.
  • B377Only in the original. Archived. The copy leaves archived rows out, and the original keeps them.

Unexplained1 row

Each one needs a person to look.

  • E520Only in the original. In the original since 24 days before the copy was taken, and not archived. Neither timing nor the filter explains it.