
Problem
If ancestral lines join below their most-recent-common-ancestor in a tree branch downloaded from FamilySearch, RootsMagic 11.5 duplicates the common lineage. Duplicate couples are created, one of which has a child that the other does not and vice-versa, just above the junction. This results in an overstatement of the numbers of families, spouses and children in various outputs, miscalculation of relationships and probable graphic errors. Moreover, transfer of certain sets of members from a database so corrupted can propagate it via GEDCOM or drag’n’drop to others. There is some evidence to suggest that it has been an issue starting with RM8; regardless, it is popular to download large segments of the FSFT so it is likely there are many RootsMagic user databases afflicted with it.
RootsMagic Inc. is aware of the issue; it came to a head in this discussion in the Community Forum, Double parents after import via FSID, started by Thomas Burkhart, 2026-08-14, in which he describes the scale of manual edits needed to correct the mistakes. What is needed at this juncture:
- Tools to help find where such problems lie in the database. These will aid analysis of why it’s happening and editing to correct defects in the data.
- Tools to batch find and correct the defective data.
- Alternative procedures to get the data into a RM database
That’s the order in which I tackled them but the general user is likely interested in the reverse.
Alternative Import from FSFT
Download and install the free Ancestral Quest Basic from Incline Software. Descended from the pioneering software Personal Ancestry File, it has a FamilySearch download feature that is similar to that of RootsMagic and maybe faster. You can choose either ancestors or descendants of the starting person, not both as you can with RM. On completion of the creation of the new database in AQ, export it to a GEDCOM file, choosing the “Other” option.
With RootsMagic, import the .GED file from AQ into a new RM database. In my test, the LST file of the same name as the database reported no import difficulties. In FamilySearch Central, you will see that everyone is matched with FamilySearch and RM will be busily finding that FSFT has new information for everyone. That’s unfortunate because there would likely have been little change between the download and the starting up of FS Central in RM. However, I think that may be consistent with the way RM functions if it had downloaded directly. There must be information additional to what comes through the download itself that FS Central wants. Warning: the filter “People not matched to FamilySearch” ties up the RM user interface for a long time until it displays nobody yet the opposite filter is very fast at displaying everybody.
I am not a fan of the FamilySearch Family Tree and rarely use RootsMagic’s FamilySearch Central. Hopefully, I’ve not missed a ‘gotcha’ on this workaround.
Batch Find and Correct the Defective Data
There are a couple of these solutions in progress that will be of interest to some so inclined. One by @richardotter and the other by me. Richard is the pro programmer of the two.
Python script by Richard Otter with CoPilot
Richard posted a preview link in this comment in the discussion “Comments on the Gemini Script for Deduplication of Children” in a forum on this site. It sounds like it could be a solution not only for fresh downloads from FamilySearch but also for older databases that have this lineage corruption when there are attachments such as Citations, Media, WebTags added to family-type events (Marriage, Divorce,…) for the secondary couple(s) in a duplicate set. Because the secondary couples will be deleted, anything uniquely tagged to them and not the primary couple needs to be transferred. His solution does that.
SQLite script by Tom Holden with Gemini
So far, my approach has been on fresh downloads as I have spent much time examining them to gain some understanding of what is going on. Because there are no Citations, Media et al in a download from FS, I’ve not addressed their preservation in this SQLite script. It is a distillation of several queries developed for analysis of the data into one batch streamlined for speed. These four steps are done in sequence within one transaction:
- Re-link children attached to duplicate families to the primary FamilyID
Deduplicate identical child links pointing to the same primary FamilyID - Re-link unique family events from duplicate families to the primary FamilyID
- Delete duplicate couple records from FamilyTable
- Clean up orphaned family events
DuplicateCouples-CLEAN_DELETE.sql << click to view, copy, download
Finding the Problems
Graphics
DuplicateCouples-Colorcode-FAST.sql Use it before cleaning if you wish to explore where there are duplicates in the displays and charts available in RootsMagic, such as the fan chart at the top of the page. This coding pattern is most useful with the fan chart, starting at the root of the tree and out to as many ancestor generations imported or about 16, whichever is less. Beyond that, I find RM gets very slow generating a chart at that scope or can even freeze, on a gaming-capable laptop in the low end of the mid-range (Intel Core i9, nVidia GEFORCE RTX 5060 GPU, which probably does not get called upon). If the color patterns are far out and there is no text, traverse the radius out toward one as far as the last person in common with its near-duplicate pattern (same members but one). Choose that person and generate the chart anew so you can see the names, FamilySearchID or RIN in the boxes.

Lists
DuplicateCouples-CreateView.sql lists duplicate couples.
| FatherID | FatherFSID | FatherName | MotherID | MotherFSID | MotherName | DuplicateCount | DuplicateFamilyIDs |
|---|---|---|---|---|---|---|---|
| 1360 | KHDL-X5Z | Dieterich, Jacob | 1363 | K4JM-B9Y | Muntz, Ursula | 2 | 496, 582 |
DuplicateCouples-CreateChildView.sql lists children of duplicate couples.
| ChildID | ChildName | FatherID | MotherID | CoupleFamilyIDs |
|---|---|---|---|---|
| 921 | Dieterich, Catharina | 1360 | 1363 | 496, 582 |
Both of the above create temporary stored queries (a VIEW) that can be selected from the SQLite manager’s database objects to view its results, just as you would to view a table. The application issues a simple SELECT to fetch everything from the VIEW. After running the CLEAN_DELETE script, both of these VIEWs should be empty.






