How to track character relationships in a novel
A cast list answers “who is in this book”. It cannot answer “who knows that the duke is still alive”, and that second question is the one that breaks novels in revision. Once roughly thirty characters carry plot weight, you need relationships stored as links between entries rather than as sentences inside them, because only links can be queried.
Why a cast list stops working
A cast list is a flat file: one row per person, a few fields each. It degrades in three predictable ways.
Relationships get written as prose. “Maren’s brother, estranged since the siege” lives in Maren’s entry. It does not live in her brother’s. Six months later you update his entry and the two disagree.
Relationships have direction. A mentors B is not the same as B mentors A. A flat list flattens that, and you lose the asymmetry that usually carries the drama.
Relationships change. The interesting fact is rarely “these two are allies”. It is “these two were allies until chapter eleven”. A field holds one value; the story needs a sequence.
What to record instead
Store each relationship as its own thing, with four properties:
| Property | Why it matters |
|---|---|
| From / to | Direction is usually where the tension is |
| Type | Sibling, mentor, debtor, betrayer. Keep the list short |
| Since / until | The chapter or in-world date the state changed |
| Known to | Who else is aware of it, which is what plots turn on |
That last row is the one most writers skip and most need. A secret is not a property of a fact; it is a property of who holds it. If you cannot answer “who knows this”, you cannot reliably write a scene where it comes out.
Keep the type list short. Five or six types covers almost every novel, and a taxonomy with thirty entries is one nobody maintains.
The tools that do this properly
vvd
Entries are typed and link to each other, and the relationship view renders the result as a navigable graph rather than a static picture. Because the graph is generated from the entries, it cannot drift out of sync with them, which is the failure mode of every hand-drawn diagram.
Practical for a novelist: the free tier gives one world and 20 documents, enough to test with a real cast before paying. Paid plans start at $5.75 per month. (Verified 22 September 2026.)
Obsidian
[[Wikilinks]] between character notes give you backlinks for free, and the built-in graph view shows the shape of the network. For anything richer, such as typed edges or filtering by relationship type, you need a plugin like Breadcrumbs or Juggl.
Practical for a novelist: free, local, and yours permanently. The cost is that you are now maintaining a plugin stack, and plugin stacks break on upgrade.
Campfire
Has a dedicated relationships module you can buy on its own, which is the case for Campfire in general. If this is the one feature you want, you are not paying for a suite. Modules run roughly $0.99 to $1.99 per month each. (Verified 22 September 2026.)
A spreadsheet
Genuinely fine for one book. Two columns for the pair, one for type, one for the chapter it changed. It fails exactly when relationships need history, because a cell holds one value.
The test that tells you it is working
Open your system and try to answer these three questions without opening your manuscript:
- Who currently believes the duke is dead?
- Which two characters have never appeared in a scene together?
- What changed between Maren and her brother, and in which chapter?
If all three take under a minute, the system is doing its job. If any of them requires re-reading the book, you have a cast list, not a relationship map.
What not to do
Do not build the full graph before you write. Relationships that exist only because you designed them read as designed. Record them as they arrive in the draft, and let the shape emerge.
Do not model minor characters. The innkeeper who appears once does not need a node. If a character has one relationship and it never changes, a line in the scene note is enough.
Do not keep two copies. A diagram in one tool and entries in another will diverge, and you will trust the wrong one at the worst moment. Generate the picture from the data or do not have a picture.
Frequently asked
What is the best tool for visualising character networks?
For a live graph that updates as you write, vvd's relationship view and Obsidian's graph view (with the Juggl or Breadcrumbs plugins) are the two practical options. For a one-off diagram you will print and pin up, a general diagramming tool is faster and you should not over-engineer it.
How many characters before I need a relationship map?
Around thirty named characters, or sooner if your plot turns on who knows what. What matters is the number of relationships carrying plot weight rather than the size of the cast. If you have twelve of those, you are already past the point where memory is reliable.
Can I do this in a spreadsheet?
Yes, and for a single novel a two-column edge list works well. Spreadsheets fail when you need the relationship to change over time, because a cell holds one value and a relationship has a history.
Should the relationship map be part of my manuscript file?
No. Keep it separate. Relationships are facts about the world that persist across drafts; your manuscript is one telling of them. Coupling the two means a restructure destroys your reference.