Tables slow Scrivener to a crawl

I use tables in Scrivener frequently to outline longform fiction. That is, I don’t need or expect my tables in this software to handle quantitative data or calculations, although the ability to select rows and columns would certainly make formatting easier, but I do need and expect the software to handle a basic table that just contains text notes. Unfortunately, sooner or later, when I outline in a table, the program becomes slow to the point of unusable, with a lag of several seconds every time I type. The issue isn’t completely consistent: in some documents, the crippling lag will come and go no matter how big/elaborate the table doc(s); in others, it seems to be triggered when a table gets to a certain size and then never be functional again.

Color fill makes this problem much worse: using color fill in any cell of any table will slow the program immediately. Removing color fill improves it, but practically speaking this is missing functionality in Scriv’s tables. A pity, since it makes it much easier to see at a glance, “Oh, okay, this section of outline all takes place on day 43.”

I see from searches here and on Reddit that tables grinding Scrivener down to an unusable pace is a longstanding issue. My questions are:

  • Has anyone found any sort of workaround that removes, improves, or lessens the frequency of the lag?
  • Is this an issue Scrivener has any plans/ability to address in the future, or are the speed problems–like the formatting problems–an artifact of the Apple text engine, and thus permanently down as something the company doesn’t consider worth fixing?

Tips I’ve already turned up in searches that are not helpful to me personally:

  • “Build your table in Google Docs and paste it into Scrivener”: The point of writing the outline in Scrivener in the first place is that I frequently split the screen to refer to tables while working on another document, or vice versa.
  • “Use the whole Scrivener binder like a table”: While I can see why this may be a good use of the software for many people, I personally would be better off with index cards.

Tables are complicated and takes a lot of CPU resources to render. Just do. Try doing big tables/cells in Microsoft Word.

Best advice is to try to find other was to format your writing than rely on tables.

It makes sense that they would take a lot of resources to render, I’ve just never used any other word processor on any OS where a text-only table slowed the whole program.

Try in Word to make a mult-page cell or row … some are disappointed that not possible. Maybe Microsoft fixed that, but why, dunno.

I mean, I have resorted to building my tables in other programs (Word, OpenOffice, GDocs, Pages when I still used iOS) before. They handle them. I just also hate working in those suites for fiction, and toggling back and forth between applications defeats the point of Scrivener for me.

I know usable text tables are a possibility in word processors in general. I don’t know whether they ever can or will be possible in Scrivener, because I know vanishingly little about the technical end of the thing, so it’s not that I want to trash Scriv. I love Scriv, been using it for years. I just want to know if there is or ever will be a way to use tables in it. It’s still a great program if not, but for the specific things I do and the frequency with which I do them, my next stop will probably be a freeware rich text editor and a jumbo pack of index cards.

probably a good solution! :wink:

Forgive me if I have this wrong, but it seems like you are not aware of some of the basics of how Scrivener is meant to work, which means that you’re missing out on some of the advantages the program has over others.

I say this because you say you’d be better off with index cards", yet a fundamental part of Scrivener’s design is that each line in the Binder is not just a ‘document’ with your text, but it is also an index card (showing your synopsis for that document), as well as the vehicle for your notes about that document the text of any snapshots you’ve taken (versioning), and various types of metadata.

Essentially, everything you could put into your outline table is available in the Binder (and a lot more). When you create your table, you will eventually have to recreate that structure in the Binder anyway, so why not use the tools the way are meant to be used and get the advantages from the beginning?

Take a simple outline: you have chapters, which each have one or more scenes.

This first screenshot shows you the actual text of the individual documents, in a single ‘virtual’ view (a Scrivening). You can toggle between this and the view of single document with Ctl-1. The synopsis of the first Chapter is in the Inspector on the right (the Inspector always refers to one document at a time) together with your notes about this document. Of course, you can add new documents or change their order from this view.

The second view is of the cork board. All I have done is select the documents and turn on the Corkboard (Ctl-2) – this shows your index cards, the text of which is the same text you see in the Inspector Synopsis panel. You can add new documents and synopses or rearrange the order or indenting from this view in exactly the same way as you can with the editor showing. The Index Card is the document with the full content attached.

Finally, I clicked on the Outliner (Ctl-3) to show a table / spreadsheet of the exactly the same documents. I’ve set it show the synopses and a couple of the main metadata items. The drop down list shows the available columns – and any new custom metadata you add will automatically be added to this list. As before, you can change any of these items in this view, and you can add or rearrange in exactly the same way as before.

Essentially, if you create your outline in the Binder, you are doing everything you would do in a table, but you’re able to work on any of the lines in the table as you go along – you are working with a fully fledged outline which will grow as you write the document, not a single table which you have to keep in sync with the real text.

Again, apologies if you knew all that, but unless I have misunderstood what you are trying to do, using the the binder as your working outline is one of the main design reasons behind Scrivener’s success: you don’t have to work this way, but it would be a shame not to take advantage of what it offers.



Hi JSwift,

This may or may not address your issue of lessening the frequency of the lag when loading tables, and you may already be aware of how to manage the list of sections you are compiling, thus reducing compile time. A few months ago, I was made aware of a way to facilitate what sections of my project are compiled, particularly useful if/when I need to do so repetitively to test adjustments in my project.

The method was outlined by brookter back on March 5, 2021 at Managing my list of sections to compile - #3 by brookter which I expanded on on March 6.

I have used brookter’s method to great affect on countless occasions to reduce my compile time from an 8+ minute compile cycle to just over 1-2 minutes, saving me much appreciated time to correct my mistakes and continue working on writing rather than coding.

Apologies if this is not what you were looking for; happy-to-help if it helps!

Thanks for reading,
:thinking: :pensive:

1 Like

Hi, @JSwift . I’ve been thinking about the questions you’ve posed. I’m not L&L tech support, but I’m pretty good at coming up with workarounds. Your requirements are:

  1. The solution has to look like a table.
  2. The solution either need not be, or must not be, connected to your draft (in the sense that the outliner solutions proposed so far have been.)
  3. You need to be able to give individual cells of a table a background colour, independent of row or column.
  4. The solution has to be implemented entirely within Scrivener, giving you the ability to edit/look at your outline in one editor whilst editing your draft in the other.

If you can live without requirement 3, I have a possible solution for you that I’ll describe below. If requirement 3 is absolutely essential, I apologise for wasting your time and you can skip the rest of this post. :smiley:

  1. Create a new folder, called Outline. Create it outside the Draft/Manuscript folder. We’re going to create an outline designed for the outliner view only, and unconnected to your draft in any way.
    Screen Shot 2021-06-15 at 10.38.58
  2. Display the Outline folder in Outliner mode. You’ll be informed that Outline has no subdocuments. You’ll also see the default columns the Outliner provides—I’m assuming they’re pretty much useless for your purposes. No worries—we can fix that.
  3. Click on the little “>” icon in the upper right of the Outliner pane. You’ll see a complete list of the available columns. Right now, we’re going to click on the button at the very bottom of the column, “Custom columns…”
  4. You’ll find yourself in the Custom Metadata section of the Project Settings. Here, add the columns that you want. I’m assuming that you’d like them to act as much as possible like the text in a plain table, so choose the data type “text” and tick the “wrap text” box.
  5. Close all dialogs and return to the Outliner view of the Outline folder. Click on that little “>” again; tick your new columns, and untick any of the Scrivener-provided columns that you don’t want (nearly all of them, I suspect.)
  6. Back at your outline, add a new text. Click in the field in one of your new columns and type away. Type a tab to go to the next column. When you want another row, just add another text by whatever means. Here’s what this looks like:

This will act almost exactly like a spreadsheet, except it won’t do maths. For example, if you added a numerical column named Day, you could add “42” for those events on day 42, and then sort the column (click the title once for ascending sort, click again for descending sort, and click a third time to get back to unsorted) to group all your Day 42 events together (in lieu of having them coloured.) Don’t worry about all those “Untitiled Documents”; unless you actually click on one and then switch to document view and start typing, Scrivener won’t even physically create it.

You can display the Outline in Outliner view in one split of your editor, and have the document you’re drafting in the other split. You can switch back and forth between your pseudo-spreadsheet outline, and the document you’re drafting.

I hope this helps!