Nonfiction Authors: How do you index print books?

I’m nearing completion of my nonfiction book to be indie-published in both paper format and ebook.

I’ve searched and found good guidelines for creating Tables of Content (thanks to L&L for the manual and Gwen Hernandez for SfD), but I’m lost on how to create an index with Scrivener for my printed book (assuming ebooks don’t need this due to built-in search function.)

Please tell me that this can be done in Scrivener and how to do it. I have this dread that instead of going from eye glimmer to final output in Scrivener, I’m going to have to bring some POS like Word into my document creation tool suite, with all the long-term document maintenance headaches that entails.

So the question(s):

  1. Is it possible to create an index for a full-length paper book in Scrivener?
  2. If so, how?
  3. If not, what other tools are you non-fiction Scrivener authors using to get indices into your books?

I’m sorry, but Scrivener has no built-in indexing tools.



Thanks for the quick response.

Then may I request that an indexing capability be considered for inclusion in the Scriv 3.0 release? It would be a boon for us nonfiction guys.

And further, what tools are other nonfiction writers using to build indices in lieu of Scrivener?

You might like to read

Mr X

Searching is not an adequate substitute for a good index.

Thank you! I searched beforehand, but ran into a mountain of “index card” topics and never did find anything worthwhile on indexing.

At one time in my career, I used MS Word extensively, ultimately creating a mountain of documents. If I remember correctly, it had a relatively easy to use indexing mechanism whereby you selected a word, then designated that word as an “indexable” item. MSWord added the indexable item to a text list created in a separate INDEX-ITEMS subdocument (which you could hand-edit if you wish to add, edit, or delete entries).

At the end of the editing process, you performed some sort of compile function during which MSWord paginated the document, then using your index words list did a search through out the document, creating another INDEX subdocument which contained the list of indexable words along with a numeric listing of the page numbers associated with those indexable words. This index subdocument was then appended to your main document, and would be updated any time you regenerated the document. Index text formatting options were extensive, and it was an impressive document prep too.

This was at least a decade ago, (and honestly may have been Adobe FrameMaker rather than Word, I’ve used a lot of software tools over the years), and my love of MSWord has diminished significantly since then. After using Scrivener, I can’t help but think that you guys can do a better job than Microsoft. You track so many keywords and text snippets that I can’t believe you couldn’t implement this list tracking, then tack the indexing process onto the end of the compile function.

As I’ve mentioned before, I think you guys have done a wonderful job on creating and supporting Scrivener, and this long rant should in no way be construed as a complaint. I know you guys already battle daily complaints about the iOS upgrade completion date (among many other things, I’m sure). But surely I’m not the only one using Scriv to create non-fiction. And indexing is an almost essential part of a real printed book.

Thank you for your time and attention.

In my experience with technical and game writing, indexing was a function performed by a member of the publishing team, not an author – it’s an arcane specialty in its own right and a good indexer is worth their weight in gold, while a mediocre index can hurt a book worse than not having one at all.

This first bit is the only part that is even peripherally a writing task, as opposed to a formatting and layout task.

While Scrivener does have some unique output tools, it has never attempted to replicate the layout capabilities of full-featured word processors like Word.


Yes: that’s my experience and take on things too - it’s definitely a speciality in its own right. I’ve been editing and writing academic and non-fiction texts for 30 years and I’ve never been asked to provide an index for any text I’ve been working with/on. IIRC Blackwell deducted the Indexer’s fee from my royalties, but it was well worth it.

As a developer and prolific technical writer I came to this forum today to look for “index” after not finding it (in this context) in the software or doc. I was horrified to see this feature not included, though not surprised. I’ve become accustomed to the notion that Scrivener doesn’t have features that we typically associate with document processing, while it does have features that other software doesn’t have, specifically because it’s a different kind of tool. It’s tough to wrap my brain around that separation, to enjoy the unique value of the tool for what it does, and avoid getting too frustrated with what it doesn’t do.

But on this index thing, I really am amazed. I get the idea that Scriv isn’t intended to provide a lot of formatting options, but I disagree that indexing is a function that’s exclusive of the content creation process. As others have cited in these various forum posts, many authors are in-tune with what should be in their index, and some are not - like some authors know how to use fonts or text styling and others don’t. As a content provider I should have the option to suggest what should be in the index and where, while leaving the formatting to a post-compile process which I may or may not be doing.

The index is composed of at least two parts.The first part is metadata that is applied to a word or short phrase to indicate the text should be in the index - it’s a message to the document processing software. The second part is information about how that data is formatted. The metadata can include more information about where in the index the text should go. For example, the paragraph above includes the word Scriv, but that should be in the index with other references to Scrivener, (arguably) not as an index entry of its own. This is content, in our realm as authors. It’s completely independent of the final formatting.

I’m happy to use Word or some other tool where I add an index at the bottom of the document. But I do not want to go back through the entire document to re-apply index meta tags after every major revision in Scrivener.

So let’s be constructive and creative here. What can we do to add “some kind of metadata” which isn’t removed in the compile process, and which doesn’t result in visual artifacts post-compile? The idea here is that if we can send any kind of metadata into Word, then a macro can be used to reformat such a code into an Index metatag so that Word can use it. Even a visual artifact is acceptable though very undesirable. Using the above example, I can put the word Scriv in font Impact, and follow that with the word Scrivener in font Algerian (two fonts I’d never use otherwise). These get compiled into the final document, and post-processed by a macro, that searches for the fonts and generates the appropriate internal Word codes based on what’s contained in the text. Then the code replaces the original word and extra text using the surrounding font. Rather than fonts, colors can be used, or even surrounding the text in specific characters, like {{Scriv}Scrivener}. That’s not elegant because at some point the extra words or characters in the text may offset the text, requiring a manual post-compile tweak.

OK, that’s my proposal, and unless someone suggests otherwise I’ll probably put this to code soon and see how it goes. Maybe there’s something in the compile process that can do what I’m suggesting?

If Scrivener had an API I’d suggest other options with custom code injected into the compile process. This is a point where I get a little frustrated again - because not only is the product limited in some ways but it also doesn’t have an API that allows us to inject additional functionality wherever we perceive a gap in the core. Years have gone by as people have been asking for an index and other features. If L&L would build in an API then a lot of those requests would go away as developers would rally to offer addons. This is the way the rest of the world works, and it builds more community around the offering.

Thanks for your time.

It’s trivially easy to format text in Scrivener so that it won’t be changed by the Compile process. Once you’ve done that, you can apply whatever post-processing tools you like or can write yourself, using either RTF, Word, or MMD format, whichever you prefer.


Either you accept that Scrivener’s role is not that of complete layout/format manipulator, or you don’t. There’s no reason for the “visual artifacts” restriction – you can use as-is formatting in Compile to preserve all sorts of tags and markers you place in the code. Then, just like you’d use some other editor to lay out your text for the final print/ebook, you’d use some other tool in the toolchain to process those markers and create the corresponding index. Scrivner is not a one-stop shop – I don’t get why people keep trying to make it one?

The original poster did not want to offload indexing to a professional indexer. Nor did they want to play around with layout or typography. Read the question and answer the question.

It appears that Scrivener does not have any way of embedding and preserving index entries through multiple revisions and editions. So whatever process is used for indexing is going to have to be repeated over and over for each new edition – possibly by exporting to Word or FrameMaker where there are decent indexing capabilities.

There are plenty of non-fiction writers, technical writers, proposal writers, etc out there who want to embed index entries to save rework. And being experts in their field they are more than capable of indexing their own work.

A quick search on “macro to index words in microsoft word” turned up this article: … Index.html

Skimming that article, it appears that you can simply start with a list of unique words to auto-build an index from. That means that Scrivener’s job here is just to have a document in your research folder where you add indexable words (preferably alphabetized) for use in this functionality of Word (or similar features in other word processors).

Alternately, you can character-style your text in Scrivener to mark your indexable words (if you don’t want to use bold) and use the macro included in the article in Word (modifying it to identify your style).