Tracking characters with Scrivener keywords

Quite a while ago I posted on the Lit’n'Lat forum some details on how I use Keywords in my  Scrivener projects to keep track of characters and locations, and someone suggested that I also post it here. So here goes…!

I set up in the Keyword HUD two keywords for each character, eg

I also set up a keyword for each location in the book, eg

Note that all the keywords have underscores instead of spaces – they only work if each keyword is a single wordstring.

Each major character gets it’s own colour, so Dave_(mentioned) and Dave_(present) will be the same colour. Minor characters are all the same colour. All locations are white.

Then, for each scene (which in my case is an individual text file) I add a number of keywords.
The first is the location the scene takes place. Then there are any characters present in the scene, followed by any that are only mentioned.

So for example, a scene between Dave and John at the Hospital ward where they talk about Phil would have the following keywords:

With this set up, I can then use the search facilities to tell me things such as:
Has Dave ever been to the Hospital Ward?
Search for: Hospital_Ward Dave_(present)

Have Dave and Phil met in the book / Show me all the scenes with Dave and Phil in.
Search for: Phil_(present) Dave_(present)

If in editing I want to change something about my description of the hospital ward, I can call all the scenes up with:
Search for: Hospital_Ward

I can also find out all the scenes where John is either physically present or mentioned:
Do an “Any words” Search for: John_(mentioned) John_(present)
(change search parameters in the little drop down triangle in the search bar)

I want to underline the importance of not using any spaces in your keywords, so…

I have set up a test project in which Keyword HUD contains the following keywords(note this is an example of it NOT working, so the keywords have spaces not underscores):
“Phil (mentioned)”
“Phil (present)”
“Dave (mentioned)”
“Dave (present)”

I then create a document and assign the following keywords to it:
“Phil (mentioned)”
“Dave (present)”

Now if open up the HUD and select “Phil (present)” and search, I get zero results. Which is correct and as it should be. The HUD is doing an ‘Exact Phrase’ search, and therefore looking for a single text string which says “Phil (present)” but can’t find one because it doesn’t exist.

Now, if I do a search in the HUD by selecting “Hospital” and “Phil (present)” you’d want this to also be negative: Phil has never been to the hospital. However, because the HUD search needs to do an “All Words” search for multiple keyword searches you actually get a positive result for the document we created. This is because it is able to find all the words “Hospital”, “Phil” and “(present)” in the keywords for that file. Although in reality Phil isn’t present. Dave is (and talking about Phil behind his back apparently).

But, you don’t have any of these problems if you use underscores instead of spaces.

15 thoughts on “Tracking characters with Scrivener keywords

  1. Lisa

    This is a terrific refinement on one of Scrivener’s most useful features. Well done. However you can save some awkward keystrokes and a bit of time by eliminating the underlines/parentheses/spaces in your tags entirely: JohnPresent or HospitalWard (or even johnpresent or hospitalward, without caps) will work just as well as a tag/search term and is much quicker to type.

    1. pigfender Post author

      Thanks Lisa. Yup, you can streamline these to suit your own tastes. I tend to go longhand like this because I find it easier on the eye but it’s individual preference. I know one person who uses JohnDavidson_m JohnDavidson_p for example.

  2. Simon

    Thanks for a great way of keeping track of what all of your characters are up to and where they are. If you have any other tricks and refinements you’d like to share…. I’ll post a link to this page in my blog to let more people know of this helpful trick. Thanks

  3. Darla McDavid

    Great tip! I started using your system tonight, exactly as described here, and will tweak it as soon as I get more comfortable using keywords. Thanks so much for posting it.

  4. Kristopher Neidecker (@Kris_Neidecker)

    Great tip. The metadata functions of Scrivener are probably the most underutilized features since using them for more complex things like this take a little planning. For some reason I always forget about keywords and only think about the ‘label’ and ‘status’ metadata.

    Speaking of which – have you ever used metadata to keep track of mood? Another program I have used in the past, yWriter, which is like Scrivener in many ways (and different in many more), had a great set of ‘properties’ that could be messed with in each scene and chapter. One of these was a set of four numbers defaultly set to: Relevance, Tension, Humour, and Quality.

    These could be set from 1 to 10, and then you could see a graph – allowing you to view peaks and valleys of tension vs humour, and maybe showing too much of one and not enough of the other, etc.

    I’d bet you could set up something very similar using keywords.

    1. pigfender Post author

      Thanks Kris!
      I’ve not used yWriter myself, but I can see how authors might find those ‘properties’ helpful, especially during redrafting / editing stages.
      The Mac version of Scrivener allows the user to create their own custom metadata categories which would work very well here. So you could set up, for example, metadata categories for “tension” and “humour” as you suggest and use them to hold numerical scores which you can then view at a glance across all your scenes using the Outline view. Another great example of the usefulness of custom metadata is the way Scribble Code ( have implemented the integration of their timeline program, Aeon Timeline, with Scrivener.
      Custom metadata isn’t yet implemented in the Windows version of Scriv, but it’ll be a 2.0 feature when that’s released. So, there’s something to look forward to!

      EDIT: Custom metadata is now in Scrivener for Windows too!

  5. Diana Ostrat

    Hi there! First of all, thank you very much for sharing this bit of system, just what I needed, since I’m working on a novel series. But also, because I’m a newbie Scrivener user and only getting to know all the useful bits and pieces.
    There’s still one thing I cannot find anywhere how to do – this – Each major character gets it’s own colour, so Dave_(mentioned) and Dave_(present) will be the same colour. Minor characters are all the same colour. All locations are white.
    How do you control the keyword colors? So far it picks them randomly and I’d LOVE if I could have them the same color I have my POV chars atm, and grey/white for the rest, or some other color of MY choosing.

    1. pigfender Post author

      Thanks! Glad it was helpful.

      On colours: I’m away from my computer at the moment but if I remember correctly you just double click the little coloured square next to the keyword in the keyword HUD. That’ll open the colour picker (different ones for both Mac and Windows) where you can make your choice. Both OS pockets allow you to save a few favourite colours, although the Mac one is a little more complex; a little less intuitive.

      As an aside, I no longer colour my own keywords like this. My current WIP has:
      White = location
      Yellow = primary / main character
      Blue = secondary character
      Red = tertiary character

      In other projects I’ve used colours to denote other groups. For example in 2013 NiaD’s Made Man I used 1 colour for the protagonist and his crew, one for the rival family and 1 for law enforcement. Whatever works for you!

      1. Diana Ostrat

        Thank you very much :) I even managed to figure it out by randomly clicking at stuff before I got your reply, but thank you nonetheless. I now definitely have something new to please my OCD and help me with editing later.


Talk about this page!