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
- ExploreHistory of Automobiles50 milestones · 172 developments
- ExploreHistory of Steel Manufacturing50 milestones · 168 developments
- ExploreHistory of Nuclear Energy51 milestones · 177 developments
- ExploreHistory of Economics53 milestones · 178 ideas
- ExploreHistory of Religion55 traditions · 182 developments
Make one with ChatGPT or Claude
- Type a topic, then copy the prompt or open it in a chat app.
- The assistant writes the timeline and answers with a link and the JSON.
- 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.