Story timeline maker
Plot lines and characters as tracks, and your world's own eras and year numbers. Free, no sign-up, saved in this browser.
Start your story's timeline, or look around a finished one first.
Your timeline is kept in this browser only. Clearing site data deletes it; save a file to keep it or move it to another device.
What this is
A timeline for a story you are writing or a world you are building. Tracks are its rows: a plot line, a character, a kingdom, each with a name and a colour. Events have a title, a start year, an optional end year (a reign or a war draws as a bar), a track and notes. Where labels would collide, they stack on a second line of the same track.
Your own calendar: list your world's eras in order, each with a name, an abbreviation and a length in years, and type dates the way your characters would: Year 12, Age of Lanterns. If the Age of Kilns lasts 380 years, then year 1 AL is the 381st year on the axis and the page does that sum for you. You choose whether years before the first era (negative years) and a year 0 exist; with neither, year -1 comes straight before year 1.
Moving around: zoom with + and −, the mouse wheel or two fingers, from thousands of years down to single years, and drag the empty space to pan. Fit shows every event. On a phone, time runs down the screen and tracks are columns.
Characters and their ages
Under Characters, give each one a birth year and, if they die, a death year, in your own eras. Open any event and its editor lists everyone alive in that year with their age: Ondrea Saltmarsh, 23. Ages are plain arithmetic on one continuous count of years, so eras do not break them: in the example, the Age of Kilns is 380 years long, and someone born in Year 362 AK is 32 in Year 14 AL (18 years to the end of the age, then 14 more). Someone who died in an earlier year is left out; someone born or dying that year is listed with a note.
Each character gets a lifeline under the tracks, from a ring at their birth to a cross at their death. Tick up to four for the Ages row, which writes their ages under the year labels as you scroll and zoom.
From a family tree: open a tree saved from the Dankstory family tree maker and everyone whose born text has a year number in one of your eras ("Year 241 of the Ember Reckoning") comes in as a character. Nobody gets a guessed year: text such as "unknown" or "the winter of the long frost" puts that person on a "no usable year, add one" list instead. If the tree's years name an era your timeline does not have, you choose which of your eras to read them in, or have them listed.
Export
The Export button makes a PNG at twice the size, an SVG with the fonts inside it, or a one-page print you can save as a PDF, in light or dark. It covers the whole timeline from first to last year at your current zoom, with a legend of the tracks, the marks and the eras, plus the lifelines and the ages row if it is on. A very long timeline's PNG is scaled down to fit what phone browsers can draw (16,000 px a side), and the page says so; the SVG keeps every detail.
Editing
Tap an event to edit it. Drag it along its track to change its year: it snaps to whole years, and a bar keeps its length. For an exact year, type it in the edit sheet. With an event focused, the arrow keys move it one year at a time. Every change can be undone.
Private by design
No account and no upload: the timeline is saved in this browser on every change, and nothing you type leaves your device. Use Save file to keep a copy or move it to another device, and Open file to load it back; a damaged file, or one from a newer version of this page, is refused with a message and never replaces your work.
What it cannot do yet
Dates are whole years only: no months, days or seasons, and no Gregorian calendar is imposed (a real year is just a year number). So ages are whole years too, with no birthdays: someone born in Year 12 is 0 all through Year 12 and 1 all through Year 13. An event sits on one track; to show it on two, add it twice. The ages row shows at most four characters at a time. Characters import only from Dankstory family-tree files (no GEDCOM yet), and only from born and died text that has a year number in one of your eras.