GenerateRandomSearch

Character Relationship Web Generator

A cast list is a list. A cast is a graph, and the difference matters the moment you start drafting: a character connected to nobody has nothing to do, and a story where everybody's relationships run through one person has a shape you did not choose. This draws the web — a relationship for every pair it connects, some running one way and some both, and a guarantee that the whole cast sits in a single connected group with nobody stranded in their own corner.

What this generator does

Builds a structure rather than a list of traits. The character and NPC generators here describe individuals; the faction relationship generator describes a link between two groups. This produces the whole graph at once, with two properties you would otherwise have to check by hand: no pair is connected twice, and everybody is reachable from everybody else — the cast is one component rather than two disconnected stories.

How to use this tool

  1. Type your cast, one name per line — at least three.
  2. Choose how many extra connections beyond the minimum to add.
  3. Press draw for a web, as a picture and as a list.
  4. Redraw until something surprises you, then write from it.

Understanding the controls

Your cast
One name per line, at least three. Duplicates are merged and said to be merged. Twenty-four is the practical maximum before the picture stops being readable.
Extra connections
The web starts as a spanning tree — the minimum that connects everybody, which is one fewer link than there are characters. Extras are added on top between pairs that do not already have one, so more means a denser and messier web. Ask for more than the cast can hold and the page says how many it actually added.

Worked examples

6 characters, 0 extras
Exactly five connections — the minimum that reaches everybody.
6 characters, 3 extras
Eight connections, still no repeated pair, still one group.
5 characters, 100 extras
Ten connections and a note: five characters can hold at most ten.
The picture
Solid lines run one way, dashed lines read both ways.

Common use cases

  • Working out how an ensemble cast actually fits together before drafting
  • Giving a tabletop party pre-existing bonds and grudges at session zero
  • Finding a reason for two characters who have never shared a scene to meet
  • Breaking a habit of writing every relationship as a friendship
  • Sketching the social structure of a village, court or workplace setting

How this generator works

Connectivity is produced by construction rather than checked and retried. A random spanning tree is built first — start from one character and attach every remaining one to somebody already attached — which guarantees a single connected group whatever the draw does. Extra edges are then drawn from the pairs that do not yet have one, so they can add density but cannot break the connection or duplicate a pair. Relationships alternate between the symmetric kind, which reads the same in both directions, and the directed kind, which does not: 'owes a debt to' is a different fact depending on which end you stand at, and a web that drew it symmetrically would be telling you something false.

Randomness and fairness

The draw decides which pairs are connected, in what order the tree is built, and which relationship each connection gets. The guarantees — one connected group, no self-connections, no duplicated pair — are properties of how the web is built, so they hold on every draw rather than most of them.

For how randomness is produced across the whole site, see how Generate Random works.

Assumptions this tool makes

  • Every name is a distinct character, and any pair could plausibly have a connection.

Limitations and good to know

  • It generates the structure, not the reason. Why a character is lying to another is yours to invent — that is the interesting part.
  • It has no sense of your genre, setting or period, so some relationships will not fit and should simply be redrawn.
  • It does not model strength, history or how a relationship changes across the story.
  • Above about a dozen characters the picture gets crowded; the written list stays readable at any size.
  • The web is not stored, so copy the connections before redrawing — the previous one cannot be recovered.

Common mistakes

Asking for a lot of extra connections on a small cast
Five characters can hold ten connections in total. Beyond that everybody knows everybody, which is a shapeless web rather than a dense one.
Taking the first draw as final
Redraw several times and keep the one that raises a question. The tool is a prompt for a decision, not the decision.
Reading a directed relationship both ways
Solid lines run one way. 'A is protecting B' does not mean B is protecting A, and that asymmetry is usually where the story is.

Practical tips

  • Look for the character with only one connection — either give them another or find out why they are isolated.
  • Draw the web before you name anybody; placeholder names stop you defending relationships you have already imagined.
  • For a tabletop party, draw at session zero and let each player pick which end of a directed link they are on.

Privacy and your data

Your character names stay in your browser. Nothing is uploaded, nothing is saved between visits, and no name is written into the page address. Analytics records that the tool ran and how many connections it drew, never a name.

Frequently asked questions

Why is everybody always connected?
Because a character in their own disconnected corner has nothing to do in the story. The web is built as a spanning tree first, which makes single-group connectivity a property of the construction rather than something you have to check.
Can two characters have two relationships?
Not in one web — each pair gets at most one connection, so the picture stays readable and the list has no contradictions in it. Draw a second web if you want a second layer.
How is this different from the faction relationship generator?
That one describes a link between two groups, one at a time. This builds a whole graph over your cast with connectivity guaranteed, which is a structure rather than a fact.