Free · No login

Build an NPC Relationship Map for Your Campaign

Your campaign isn't a collection of notes — it's a web of relationships. Put every NPC, faction and location on one canvas, draw the alliances, debts, rivalries and buried secrets between them, and stop trying to hold the whole thing in your head between sessions.

Motive (60)Opportunity (50)Secret (40)Ally (70)Witness (80)Investigates (90)
The Crime
Abstract · Active
crimemystery
Suspect A
NPC · Alive
suspect
Suspect B
NPC · Alive
suspect
Suspect C
NPC · Alive
suspect
Key Witness
NPC · Alive
witness
Crime Scene
Location · Known
location
The Investigator
PC · Alive
pc
A live map — the Mystery Web template, exactly as it opens in the app. Drag to pan, scroll to zoom.

How it works

  1. 1. Drop in your cast.

    Five node types cover a campaign: NPCs, player characters, factions, locations, and abstracts for the things that aren't people — a prophecy, a plague, the crime everyone is circling. Each one carries a name, status, description and tags.

  2. 2. Draw the relationships.

    Connect any two nodes with one of eight typed relationships — ally, rival, enemy, family, subordinate, romantic, neutral, secret — and give it a strength from 0 to 100. Relationships can be one-way, which is how you record that the guard captain trusts the spy but not the reverse.

  3. 3. Let the layout untangle it.

    Force-directed auto-layout pulls connected characters together and pushes unconnected ones apart. At thirty NPCs this is the difference between a readable map and a hairball. Filter by tag or search by name to isolate one thread.

  4. 4. Keep your secrets.

    Mark any relationship hidden-from-players. Your view keeps it; the player-safe share link strips it out before the URL is even generated.

What it looks like with a real cast

The map above is a murder mystery: three suspects orbiting a crime, a witness who saw something they won't admit, and — visible only to you — a secret alliance between two of the suspects and a hidden link from a third to the crime itself. That last edge is the whole reason to keep a map instead of a list. It's the thing you reveal in session six.

Swap the mystery for a faction war and the same structure holds: the faction relationship map uses identical mechanics to track who is publicly at war and who is quietly funding both sides.

Why not just a list of NPCs?

A list answers “who is this?”

Which is the question you can already answer, because you wrote them. Lists scale badly: at forty NPCs, finding the two who share a grudge means reading forty entries.

A map answers “what happens if?”

Kill the duke and you can see, immediately, the six people whose position just changed. That's the improvisation a GM actually needs mid-session, and it's a property of the connections, not the entries.

Start from a pre-built web

Faster than an empty canvas — each template is a working map with a cast, hidden edges and open quests already wired up. Rename the placeholders and you have a campaign.

Frequently asked questions

What is an NPC relationship map?
It's a diagram of who knows whom in your campaign, and how. Each NPC, player character, faction or location is a node, and every line between them is a specific relationship — ally, rival, enemy, family, subordinate, secret, and so on. Instead of re-reading pages of notes to remember why the innkeeper hates the captain, you look at the line between them.
Is this NPC relationship map maker free?
Yes. Unlimited campaigns, unlimited nodes, all five node types and all eight relationship types are free forever, with no account and no card. Pro ($10/month) adds character sheets, portraits, a session journal, quest tracker and PDF export, but the map itself is never metered.
Do I need to make an account?
No. The tool runs entirely in your browser and saves to local storage, so you can start placing nodes within seconds of arriving. You can export any campaign to JSON to back it up or move it to another device.
Can I hide relationships from my players?
Yes, and that's the point of a GM-facing map. Any relationship can be marked hidden-from-players. When you generate a player-safe share link, hidden edges and hidden nodes are stripped out of the payload entirely — your table sees the web they've actually uncovered, not the one you're running.
How many NPCs can I track?
There's no cap. The force-directed layout is what makes large casts workable: rather than dragging a hundred boxes into place by hand, you let the simulation pull connected NPCs together and push unrelated ones apart, so clusters and isolated characters become visible on their own.
Does it work for systems other than D&D?
Yes. The map tracks people, factions and the relationships between them — not stat blocks or rules — so it works identically for D&D 5e, Pathfinder, Call of Cthulhu, Blades in the Dark, PbtA games, OSR retroclones and homebrew systems.
Can I import a map I've already started elsewhere?
If you keep campaign notes in Obsidian, you can import the whole vault in one click — each note becomes a node and each [[wikilink]] becomes a relationship. There's also JSON import and export for moving campaigns between browsers.

Part of a complete GM toolkit

The Spider's Web combines an NPC relationship mapper, session planner, initiative tracker, dice roller, and generators into one campaign manager for any tabletop RPG — in person or online. Free, no login required. Your data stays in your browser.

Start your campaign — it's free →