Timeline Graph

Create a diagonal timeline

Lay out people, events and ideas along a zoomable time axis, group them into eras and draw the connections between them. Everything stays in your browser.

Example timelines

Make one with ChatGPT or Claude

  1. Type a topic, then copy the prompt or open it in a chat app.
  2. The assistant writes the timeline and answers with a link and the JSON.
  3. Click the link, or copy the JSON and use Paste JSON above. Ask for an HTML file if you want one to keep or share; once it’s open here, “Export HTML” makes an offline copy.
Show the prompt
Make a timeline of [your topic] for Timeline Graph (https://timelinegraph.app).

Write it as JSON in this format:
- Required: `title`, and `items` (at least one), each with a `label` and a `date`.
- Dates: a year number (negative for BCE) or text such as "1905", "March 1905", "1905-03-14", "c. 500 BCE" or "1930s". For a span such as a lifetime, put its start in `date` and the span in `dateLabel` ("1596–1650").
- Optional per item: `id` (a short slug that links refer to), `era`, `description`, `url`, `tags`, and `entries`: sub-points listed under the item, as strings, or as `{ "id", "text" }` when a link points at them.
- Optional `eras`: `[{ "id", "label", "start", "end" }]`, coloured periods; when they have `start` dates, items fall into them by date.
- Optional `links`: `[{ "from", "to", "type" }]` between item or entry ids. `type` is "influenced" (arc below the axis) or "opposed" (above), unless you define `linkTypes`: `[{ "id", "label", "inverseLabel", "side": "above" | "below" }]`.
- Optional `tags`: `[{ "id", "label", "color" }]`, used in items’ and entries’ `tags`.
- Colours are optional hex strings like "#c98a1a"; leave them out to use the built-in palette.

Example: {"title":"Early modern philosophy","eras":[{"id":"rationalism","label":"Rationalism","start":1600},{"id":"enlightenment","label":"Enlightenment","start":1700,"end":"1789"}],"tags":[{"id":"epistemology","label":"Epistemology","color":"#2f86c9"}],"items":[{"id":"descartes","label":"René Descartes","date":1596,"dateLabel":"1596–1650","tags":["epistemology"],"entries":[{"id":"cogito","text":"Cogito, ergo sum"},"Mind–body dualism"]},{"id":"spinoza","label":"Baruch Spinoza","date":1632,"entries":["God or Nature is one substance"]},{"id":"hume","label":"David Hume","date":1711,"tags":["epistemology"],"entries":[{"id":"induction","text":"The problem of induction"}]}],"links":[{"from":"descartes","to":"spinoza","type":"influenced"},{"from":"cogito","to":"induction","type":"opposed"}]}

Aim for 15–40 items with entries under the important ones, a few eras, and links where one thing clearly influenced or opposed another. Use the same language as this message.

Then give me:
1. A link that opens it: https://timelinegraph.app/import#json= followed by the compact JSON, URL-encoded (as encodeURIComponent would). If you can run code, make a shorter link instead with this Python:

import json, zlib, base64
timeline = {...}  # the timeline JSON as a dict
c = zlib.compressobj(9, zlib.DEFLATED, -15)
data = c.compress(json.dumps(timeline, ensure_ascii=False, separators=(",", ":")).encode()) + c.flush()
print("https://timelinegraph.app/import#" + base64.urlsafe_b64encode(data).decode().rstrip("="))

2. The JSON in a ```json code block, so I can use “Paste JSON” on the site if the link doesn’t open.

If I ask for an HTML file: a page with <link rel="stylesheet" href="https://timelinegraph.app/viewer/viewer.css">, <div id="root"></div>, the JSON in <script id="timeline-data" type="application/json">, and <script defer src="https://timelinegraph.app/viewer/viewer.js"></script>.

Use it often? Connect it once

Add Timeline Graph as a custom connector and you can just ask “make me a timeline of …”: the assistant checks the timeline itself and always gives you a working link. No sign-in needed.

https://timelinegraph.app/mcp
  • Claude: Settings → Connectors → Add custom connector, and paste the URL.
  • ChatGPT: Settings → Apps & Connectors; with developer mode on (under Advanced), create a connector with the URL and no authentication.

Menu names vary by app version and plan; custom connectors may need a paid plan.

How it works

  • A zoomable time axis

    Scroll to travel through time, pinch or Ctrl +/− to zoom from millennia down to single days, and drag to pan. Dates can be years, months or days, BCE or CE.

  • Eras, items and entries

    Group items into colour-coded eras. Each item can list entries — events, works, ideas — that cascade down the diagonal under it.

  • Connections between ideas

    Draw typed connections, such as “influenced” or “disagreed with”, as arcs above and below the axis. Click any item to see everything it is connected to.

  • Private by default

    No account and no sign-up. Timelines are saved in your browser, never uploaded. Export them as JSON, a PNG image or a self-contained interactive HTML file.

Questions

What is a diagonal timeline?
A timeline whose time axis runs at 45°, so every item gets its own row of text without overlapping its neighbours. Each item’s entries follow it down the line, and connections between items are drawn as arcs: one kind above the axis, another below.
Is Timeline Graph free? Do I need an account?
Yes, it is free, and there is no account or sign-up. Open the site and start a timeline from scratch, from a JSON file, or from one of the examples.
Where are my timelines stored?
In your browser’s local storage, on your device. Nothing is uploaded to a server. Export a timeline as JSON to back it up or move it to another browser.
How do I share or publish a timeline?
Export it as a single self-contained HTML file: it is fully interactive, works offline and can be hosted anywhere or sent as an attachment. You can also export a PNG image or the JSON data.
Can ChatGPT, Claude or another AI agent make a timeline for me?
Yes. Copy the prompt under “Make one with ChatGPT or Claude” on the home page, put your topic in it and send it. The assistant answers with a link that opens the timeline here, and the JSON, which you can paste with “Paste JSON”. It can also write a standalone HTML file. Agents that can send HTTP requests can POST to /api/timelines instead; see /llms.txt.
What can I make with it?
Histories of ideas, science and technology, company or project histories, biographies, reading lists, course outlines — anything where order in time and the connections between things both matter. The built-in examples cover economics, religion, automobiles, steel and nuclear energy.

Inspiration

The History of Philosophy, summarized & visualized
by Deniz Cem Önduygu