I have a bit of an issue coming up with good names for my characters. So what I usually do is give each character an abbreviation or some sort of nickname as a placeholder while I'm writing my story.

Is there a way in Scrivener to define the name of your character just once and have it update anywhere? For example...

{Char1} went to school.

When I define "Char1" as Joe, the above sentence will automatically be turned to:

Joe went to school.

  • Although it isn't Scrivener, Scrivenvar has the feature you want. Moreover, if you use R Markdown (edit using .Rmd files), it allows writing with R, backed by Renjin. Nov 25, 2017 at 16:50

4 Answers 4


I don't think you can directly create your own custom placeholders in Scrivener. As far as I know, you can do three things:

1. Use the existing placeholder tags

When you click on Help > Placeholder Tags List… you can see a list of predefined tags that you can insert into your document and that will get replaced by the appropriate information when you compile your finished document. The information that most of these placeholder tags get replaced by cannot be changed by you (e.g. the current page number), but others are replaced by information that you enter. For example you can use the project title tag as the name of one character, and the author's surname tag as the name of another. You can define five tags under Project > Meta-Data Settings > Project Properties.

2. Define automatic replacements when you compile

When you compile your final document, you have the option to define character strings and what you want them to get replaced by under Compile > All Options > Replacements > Project Replacements. Here you can define replacements similar to a normal search & replace.

3. Manually search and replace.

Under Edit > Find > Project Replace… you can perform a manual search and replace.

Be careful.

Some names are embedded grammatically different than others. For example, if you replace "John" in "John's" by "James", the outcome will not be what you expect. For cases like this, the third, manual option is the safest, as it allows you to find all instances of a name automatically, but authorize replacements on an individual basis.

  • Too bad... I guess this is a feature to suggest to the developers.
    – noClue
    Jan 24, 2017 at 23:38

This has come up for me with things like consistent spelling of made up names (Baelish, Balish) or placeholder ones (SoAndSo1, OrbThingy). I think everyone else has already covered options for text you've already written. For replacements as you type:

Did you forget what you named someone or something or how you spelled it?

Substitution text (across all projects) aka Auto-Correct

Options->Corrections->'Edit Substitutions' This may work well in your case as you are using a tag it can't mistake for a normal word.

  1. Hit the '+' button on the 'Substitutions' dialogue.
  2. Enter '{char1}' in the 'Replace' field & 'Joe' in the 'With' field. Or 'SoAndSo1'->'Fred'.

A simpler token like 'char/' works too. The backslash is so that 'chart' doesn't become 'Joet'.

You can do this for long or awkward phrases too ('dna/' -> 'deoxyribonucleic acid').

Again this will perform the substitution across all projects. You can change it for each story or try something like below.

Did you name someone something long or awkward to type?

Auto-Complete List (project specific)

Options->Corrections->'Suggest completions as you type' to enable it.

This is different from the Auto-correct feature. Think word completion. Because this is a complete not a replace you it won't work with random tags or variables.

  1. Under the Project Menu (Windows shortcut: Ctrl+Shift+4) to add to the word list.
  2. As you write, any time you type the first few letters, it pops up a list.
  3. Hit enter to accept or else keep typing.

This works best for long words or phrases (deoxyribonucleic acid) or words with tricky spellings or diacrtics (Tenochtitlán) rather than a tag. Any text you don't want to type out, really (Paula, Frederick) or your tag ({char1}).


http://www.stevechatterton.com/working-faster-in-scrivener-with-auto-complete-list.html http://www.stevechatterton.com/working-faster-in-scrivener-with-additional-substitutions.html


Scrivener provides a set of pre-defined placeholder tags (https://scrivener.tenderapp.com/help/kb/windows/placeholder-tags-list) which are automatically rendered as text and numbers during compilation. Custom placeholder tags are not supported.

Why would you want to write in such an unnatural way, using code chunks instead of names? It looks jarring and will make it hard to read and edit, for it breaks the natural flow of the text.

How about just call him Joe, then do a Project Replace if you change your mind?

  • 2
    Because replacing names across documents can lead to unexpected results, which @what has a good example of. I would like to be in full control in changing ONLY what I want, and nothing else. Maybe this is just because I'm a programmer, but I wouldn't find the code chunks jarring at all. Why would it bother anyone? Once you type {Char1}, it would immediatly get replaced with the corresponding name anyway. All it does is make sure that the same name is written everywhere. Maybe it could be highlighted to show that it's a tag, kinda like in Word, but other than that, nobody would see the code.
    – noClue
    Jan 24, 2017 at 23:36
  • @noClue one has to use global replace carefully, but using placeholders is basically the same thing, unless you expect the application handle the "s" at the end of the possessive pronouns internally—which is, while not difficult, still not implemented (just like custom placeholders), so it is still not possible. You can add it to the wishlist on Scrivener support forums—I find the developer(s) very friendly and responsive—if you gain enough supporters, they might throw it in.
    – Lew
    Jan 25, 2017 at 0:26

I was able to jerry rig custom placeholders in Scrivener by creating a new blank text file, titling it, and using <$title> to return just the title of that blank text file.

Make as many text files as placeholders that you want to define. Then title each (with your character's name, for example).

Then in your writing document, add <$title> whenever your character's name appears and apply an internal link to it, tying it to the text file with the title that matches their name. Afterwards, you can copy and paste the placeholder, internal link and all, so it's less of a headache to create the link.

It's not perfect, but it should work. There are a few extra steps involved, and it will add extra files to your document. However, it may be worth it for you.

New contributor
MRettino is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.