Skip to content

Finding and Merging Duplicates

The same character tends to arrive in your world more than once. You write a chapter and the extraction picks up “Maren Oskar”, then a later chapter spells it “Maren Oskarr”, then you create her by hand because you forgot she was already there. Three entities, one person, and the relationships you have drawn since are now split across all three.

Duplicate detection finds those and folds them back together.

  1. Go to Entities in the world sidebar.
  2. Open the ⋮ menu next to New Entity and choose Find Duplicates.
  3. Click Scan for Duplicates and wait. Every entity in the world is compared, so a large world takes a moment.
  4. Review the groups it found.
The Entity Deduplication dialog after a scan of Verenthia: 'Found 7 duplicate groups (13 extra entities) across 408 entities scanned' beside a Merge 7 Groups button, and a list of groups with their type and similarity — the Thornfield group is expanded, showing two Thornfield locations as radio choices, the first marked Keep with 1 mention and 1 relationship, the second with 0 mentions, 2 relationships and a description

The summary line tells you how many groups it found and how many entities it scanned to find them. The second number matters: it is how you tell “there are no duplicates” apart from “the scan did not reach that far”.

Entities are compared on their names and aliases, and only against others of the same type. A character is never grouped with a location, however similar the names.

Two names have to score at least 85% similar to be grouped. That threshold is fixed — there is no slider.

It matches spelling, not meaning. If you have written the same fortress as “The Iron Citadel” in one chapter and “Ironhold” in another, the scan will not group them — those names share almost nothing as text. Merge those by hand.

Each group suggests a keeper: the entity the others will be folded into. The suggestion is the member the rest of your world points at most, counting both mentions in your writing and relationships. When that’s a tie, the one with a description wins, then the one with more aliases. So the “Thornfield” with a description and two relationships is kept over a stub that was mentioned once. Change it if the suggestion is wrong.

You can also deselect any group entirely. A scan finding something is not a claim that it is right — two distinct siblings with near-identical names is a normal thing for a world to contain.

Where the members of a group disagree, you are asked to choose before anything is written. That covers:

  • Plain fields — description, status, and anything else on the entity.
  • Custom fields — resolved one key at a time, so choosing the duplicate’s value for one field does not drag the rest along with it.
  • Relationship properties — where both entities have the same relationship to the same third entity but describe it differently.

For each one you keep the keeper’s value, take the duplicate’s, or type a replacement.

Aliases are not a conflict. Every name the group knew becomes an alias on the survivor, so the merged entity stays findable by whatever you used to call it.

The survivor absorbs everything:

  • Every mention in your writing is transferred, and the links in your prose are rewritten to point at the survivor.
  • Every relationship is rewired.
  • Every alias is carried over.

If a merge cannot finish, it tells you which step failed rather than reporting success. Your writing and your graph can end up briefly out of step in that case; re-running the scan shows you what is left.

A scan is worth running:

  • After importing a world, or a large batch of content.
  • After a long writing session where extraction has been creating entities for you.
  • Before doing serious work in the graph view, since duplicates are what make a graph look sparser and more scattered than the world really is.