How our DNA matching works

Every match on this site is found by comparing the raw DNA files you uploaded, position by position, and reporting the exact pieces of chromosome two people share. This page explains the method in one screen — and why the same two relatives can show different numbers at AncestryDNA, MyHeritage or GEDmatch.

The short version. We use the classic segment algorithm on the HapMap Phase II genetic map: a shared segment is an unbroken run of at least ~200 matching positions, is at least 6 cM long to be shown, and a match is listed when its largest segment reaches 8 cM. No SNP-count threshold is applied on top. Completely identical stretches (IBD2) and the X chromosome are measured separately.

1. What a match actually is

A raw DNA file is a long list of positions in your genome and the two alleles (A/C/G/T) you carry at each one. Matching two kits means:

2. Our method, step by step

  1. The algorithm is the classic segment model that GEDmatch-style matching grew out of. It is deterministic: the same two files always give the same segments.
  2. A run needs ~200 shared positions to count (the algorithm's base threshold). Very short shared runs are ignored as coincidence.
  3. Isolated mismatches are bridged. A single opposite call with at least 150 shared positions to the next mismatch is treated as a read error and does not break the segment; a cluster of mismatches does.
  4. No-calls count as matches. If one file simply did not read a position, that is missing data, not disagreement — so it does not break the segment.
  5. Distance comes from the HapMap Phase II genetic map (GRCh37 / build 37). Its per-segment cM values line up closely with MyHeritage's, chromosome by chromosome.
  6. Segments from 6 cM up are reported; a pair is listed when its largest segment reaches 8 cM (the MyHeritage rule). We do not also demand a minimum number of SNPs — that would silently drop real cross-company segments, where the two chips overlap on fewer positions.
  7. SNP counts are raw shared counts — the number of positions both kits typed and matched. This is the same figure GEDmatch prints.
  8. X is compared separately (men carry one X). X matches are shown on the X filter, not added to the autosomal total.

3. How the big platforms differ

AncestryDNAMyHeritageGEDmatchRomanyDNA
Chromosome browserNo — only total %/cMYesYesYes
Listed whenNot published (total cM based)Largest segment ≥ 8 cMLargest segment ≥ 7 cM and ≥ 700 SNPsLargest segment ≥ 8 cM
Segments shown from—6 cM7 cM (6 in one-to-one)6 cM
SNP counts shownNoInternal figures (much higher than raw)Raw shared countsRaw shared counts (like GEDmatch)
AlgorithmProprietary (+ Timber smoothing)Proprietary (phasing/imputation)Dynamic SNP threshold ~200, bunching, 500 kb gap breaksClassic segment algorithm
Genetic mapProprietaryVery close to HapMap Phase IITheir own mapHapMap Phase II
DatabaseMillions of testersMillions of testersMillions of uploadsKits uploaded here only

Thresholds above are the published/observable ones as of 2026. GEDmatch's one-to-one tool lets you change its settings; the one-to-many list uses the 7 cM / 700 SNP rule.

4. Why the same relatives show different numbers

If you compare the same two people at Ancestry, MyHeritage and GEDmatch you will get three different cM totals, segment counts and sometimes different segment boundaries. That is expected, not a mistake:

Practical consequence: compare the largest segment, the number of segments and your tree against each other, not the absolute cM total from one site. A first cousin at ~850 cM on one site may read ~800–900 on another and still be the same relationship.

5. How to read our numbers

6. What we do not do

Method attribution: segment detection uses the classic FF23utils segment model; genetic distances use the HapMap Phase II GRCh37 recombination map. Relationship ranges follow the widely used Shared cM Project reference tables.