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; it is shown from 6 cM up, and a match is listed when its largest detected segment reaches 8 cM. A segment only counts toward your shared cM when at least 700 positions were typed and match in both kits (called-shared SNPs). SNP-sparse cross-chip segments are still found and shown — marked cross-chip — but they never add to the shared cM, segment count or largest segment. A pair involving a Superkit (a merged best-coverage kit built from several tests of one person) always counts every detected segment and is never marked cross-chip. 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. Up to two consecutive mismatches are tolerated (bunching, 1% of the base threshold) — they are treated as read noise and do not break the segment. A longer cluster of mismatches does break it.
  4. A segment also breaks at a physical gap. If consecutive shared positions are more than 1 Mb apart, the segment ends there, so a centromere or a block of positions neither chip typed is never bridged.
  5. 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.
  6. 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.
  7. Only well-supported segments count toward your shared cM. A segment counts when at least 700 positions were typed and match in both kits (called-shared SNPs) — that is real evidence from the raw data. A segment always breaks on a mismatching position, so every counted segment is real shared DNA.
  8. SNP-sparse cross-chip segments are shown, but not counted. When two tests use different chips (say 23andMe vs MyHeritage), the positions they both typed can be far fewer, so a real shared segment may have only 200–699 called-shared SNPs. We still find it and show it in the match list and chromosome browser, marked cross-chip, but it never adds to the shared cM, the segment count or the largest segment. This keeps your totals based on solid evidence while you can still see the extra segment. Exception: when either side is a Superkit — a merged kit built from several tests of one person — every detected segment counts and the pair is never marked cross-chip.
  9. A pair is listed when its largest detected segment reaches 8 cM (the MyHeritage rule), where "detected" includes cross-chip segments. A pair linked only by cross-chip segments stays in the list, shows 0 cM and is marked cross-chip only.
  10. SNP counts shown are raw shared counts — the number of positions both kits typed. This is the same figure GEDmatch prints.
  11. 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 detected segment ≥ 8 cM
Segments shown from—6 cM7 cM (6 in one-to-one)6 cM
SNP-sparse (cross-chip) segmentsNot reportedInternal figures (much higher than raw)Dropped below 700 SNPsShown and marked, not counted in cM (Superkit pairs always count)
Counted cM evidence barProprietary (Timber smoothing)Proprietary≥ 700 SNPs to list≥ 700 called-shared SNPs
AlgorithmProprietary (+ Timber smoothing)Proprietary (phasing/imputation)Dynamic SNP threshold ~200, bunching, 500 kb gap breaksClassic segment model, 1 Mb gap stop
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.