How to make a fictional story timeline using Notion

Kevin Barrett
Published in
7 min readJan 30, 2021

So you’re a writer that’s building a fictional world. Your world has different cultures, countries, and a vast historical timeline. But at best, your story’s timeline is just a simple list of events typed out in a document somewhere. Do you fully understand what’s going on in it? Building a world and history can be complicated and it’s easy to feel disoriented in your own story if it’s not organized well.

If this sounds familiar, I feel you.

I struggled with this while I was building the world for my story, O Burning Star. Its world has a long history spanning thousands of years happening to different groups in different countries and I felt like none of my thoughts or notes were connected. A myriad of different notes about all these events were strewn about various notebooks, Google Docs, and Evernote. And if I made a change in one place I’d most likely forget to change it somewhere else thus making my notes contain a lot of inconsistencies. And inconsistencies lead to mistakes which lead to confusion. My story was such a spaghetti bowl of knowledge that I honestly felt disheartened at some points to even continue writing it.

But I found a light. I found something to help me tie these different elements of my story together — I found Notion.

Notion — all-in-one workspace

If you’ve never heard about Notion, it’s a growing platform for businesses and individuals to organize data, build productivity systems, and create customizable wikis. A lot of people like me use it for creating what’s called their “second brain”.

Notion is the app that I use to organize pretty much everything in my life. So obviously, I use Notion to organize the timeline of my story.

I was lost… but then I found… a way to organize

Before I organized my own story in Notion, I practiced organizing an already established story.

A while ago, I was rewatching an old guilty-pleasure show of mine (and maybe yours) — Lost. I made my wife watch it several years ago and while doing so she understandably felt… lost. It’s a complicated and convoluted show, I admit. I’ve watched the whole show several times and even after this last run, I still didn’t fully understand the timeline of events in the show.

So what better way to get some clarity than to organize it in Notion?

Lost TV Show Timeline dashboard using Notion work app
My Lost Timeline Dashboard in Notion

Check out my Lost timeline dashboard for yourself.

How the timeline is structured

The key to having interconnectivity in Notion is to create databases. Whenever I make a dashboard in Notion with different interconnected databases, I try to make a database for every kind of variable that I can think of that would need multiple values encapsulated in it.

An example on how to structure a Recipes dashboard of databases in Notion
An example of how to structure Notion databases if you were building a dashboard for a collection of cooking recipes. The Proteins, Cuisines, and Cooking Styles Databases are all tied by relations to the Recipes database.

These are the variables that I came up with for creating a fictional timeline:

  • Events
  • Locations
  • Characters
  • Groups
  • Episodes (Chapters)
  • Eras (optional)
  • Months (optional)

Events Database

The main database of this whole thing is the Events database. This is where the controlling values are located and where all the other databases relate to.

In the database, I created an integer property for the year, a selection property for the month, and another integer property for the date.

The Events database’s properties of Year, Month, and Date
The Events database’s properties of Year, Month, and Date.

Now, in Notion there is a Date property available — so why didn’t I just consolidate these different properties into that? The reason is lots of events in this timeline had no discernible date — they either happened in the general time in a month or even in an indeterminate time in a year. Having these properties separated out released me from having to choose a specific date for an event if I couldn’t find what it was.

Now, this is where we get into “dynamic interconnectivity” with our timeline: I made relation properties to the Locations, Episodes, Characters, and Groups databases so I could tie the When, Where, and Who parts of the story to these specific events in this Events database.

The Events database’s relations to the Locations, Episodes, Characters, and Groups databases.
The Events database’s relations to the Locations, Episodes, Characters, and Groups databases.

The last property I made was a function property for aesthetics. This grabs the day, month, and year properties I mentioned earlier and aggregates them into a simple line of text that I could use to display the full date of an event. This works great with linked instances of this database that’ll be made in the pages for Characters, Locations, and Groups.

The function property used in the Events database in Notion
The function property in Notion allows you to manipulate different properties in a database together using formulas.

Locations, Characters, and Groups databases

These are pretty simple databases. I just created a name and a selection property for organizing.

A gallery view of the Characters database in Notion.
A gallery view of the Characters database.

The real meat of information for these three databases would come from the relations they had to the Events database. The content in each location, character, and group is the linked instance of the Events database that only shows events that are relevant to that record.

Content in a Character’s page in the Character database in Notion.
The dynamic content in a character’s page from the Character database. You can place linked instances of other databases on this page and create templates for the Character page with the database automatically filtered to show records where said Character is marked as a relation.

Episodes Database

Since this was a TV show, I broke it down by episodes instead of chapters — but it’s as easy as just changing the name of the database to use it for chapters of a book. If you’ve watched Lost, you’ll know that each episode is structured to focus on one main character so I created a relation property relating to the Characters database.

Then I just made a selection property for the seasons (or if this was a book series, it’d be books) to organize them for different filtered views I would have in the database.

Gallery view of the Episodes database.
Gallery view of the Episodes database.

Months and Eras

These two databases weren’t needed for making the Lost dashboard since Lost took place in the real world, but for my story, O Burning Star, I created custom Months and Eras.

If your story is set in a totally original world set apart from the real one, it’s probably not going to follow the Gregorian calendar of our world. It might have more or less than twelve months in its year and the months might have different names than ours. With this database, I could create custom months, set their order with the Order integer property, and create a relation property to the Events database so I could use them to help sort events.

Months database in Notion in the Fictional Story Timeline template.
Months database — available in the Fictional Story Timeline template.

Another thing with fantasy worlds is Eras or you can call them Ages if you’re writing something like the Lord of the Rings. Eras can be the large groups of years that are a secondary ordering variable for a history timeline. The count of years can start over when a new era begins. Like in the Lord of the Rings, a new age would mark the start of a new counting of years starting with a Year 0. Like the Months database, you can set the Order integer property to help sort the Events database even further.

Eras database — available in the Fictional Story Timeline Notion template.
Eras database — available in the Fictional Story Timeline template.

The Benefits of my Timeline

Using this kind of structure for my own story, I’m able to keep better track of what is going on in it.

If I need to remember what events a character experiences, I can just look at their page from the Characters database and see a linked instance of the Events database that is automatically filtered to show events related to that character. And if I feel like I need to add an event to a character, I can just add it to that linked instance and it’s added dynamically to the Events database.

In Notion, linked instances are connected to the source database
Making edits to any linked instance of a database changes the source database and also every other linked instance anywhere else.

By tying chapters to specific events, I can make sure coinciding events that happen in the story happen in the right span of time. And if I ever need to make a change or move an event back, with the sorting capabilities that I made for the database, it’ll automatically shift the timeline in every instance that I have in notes of my characters, locations, and groups.

Ready to try it out?

Notion is a pretty powerful, yet simple platform to create dashboards and systems like this. It’s why it is now my favorite app right now for organizing pretty much anything in my life and work I can think of.

Oh yeah, Notion is also free to use.

If you’ve gotten this far in the article, you might be interested in my free Notion template, Fictional Story Timeline, which has all the databases I talked about built and ready for you to use. Get the link here to duplicate into your Notion workspace.

Follow me on Twitter for updates on more Notion templates or guides like this.

This article was originally posted on

More from Kevin on