Replay the page Fetch captured, see where each line of Markdown came from, and give your users a link to the exact evidence behind an answer.
A Snapshot can be opened by a person. Replay shows the page as Fetch captured it. The Playground puts that replay next to the Markdown, so you can see where each line came from. A citation link opens one piece of evidence, so a reader can check an agent's claim against the page.
Citation link
/s/<snapshotId>?id=<evidenceId>Evidence
location.evidenceIdSnapshot
snapshotIdReplay
/s/<snapshotId>Playground
/s/<snapshotId>/playgroundCitation link
/s/<snapshotId>?id=<evidenceId>Evidence
location.evidenceId1. Show HN: A tiny database in one file
128 points by example · 2 hours ago · 41 comments
2. The rendering gap in web scrapers
128 points by example · 2 hours ago · 41 comments
3. Ask HN: How do you cite sources?
128 points by example · 2 hours ago · 41 comments
The Playground is two synchronized panes: the Markdown on the left, the replayed page on the right. The left pane opens in raw Markdown; you can switch to rendered Markdown or copy the Markdown. Hovering or selecting a source block in the Markdown highlights the region it came from in the replay. A State JSON citation opens the matched State JSON entry instead.
Every URL is built from the snapshotId:
| What you get | URL |
|---|---|
| Replay of the whole page | https://expand.land/s/<snapshotId> |
| The Playground | https://expand.land/s/<snapshotId>/playground |
| One piece of evidence | https://expand.land/s/<snapshotId>?id=<evidenceId> |
| The WACZ archive |
Replay opens the captured page from the Snapshot's WACZ archive, so you see the page state Fetch saw.
Evidence is one block of the page. Add ?id=<evidenceId> to the replay URL and it opens there: a Markdown or Appendix block is highlighted in the replay, and a State JSON entry opens as JSON.
?id=.A citation link is more than a footnote. It lets a reader open the exact captured evidence behind an agent's claim.
Every Highlights snippet carries a location.evidenceId, whatever its source. The citation link is the replay URL plus that ID:
https://expand.land/s/<snapshotId>?id=<evidenceId>How each surface gives you the link is on Working with snippets: Citing a snippet.
You do not need a snippet to cite. Expand stamps an evidence ID into the captured Markdown next to the text it belongs to, written as {1199}, and every response carries the playground URL for the Snapshot. Any citation is those two joined. That works for anything you read, not only snippets, which is why the markers are inline in the Markdown.
If there is no precise evidence, link to the whole Snapshot at /s/<snapshotId>.
The same URLs serve machines. A browser gets the replay, and a client that asks for Markdown gets the Main Markdown:
# The full Main Markdown.
curl -H "Accept: text/markdown" "https://expand.land/s/<snapshotId>/content"
# One block, by its evidence ID. A State JSON entry comes back as JSON.
curl -H "Accept: text/markdown" "https://expand.land/s/<snapshotId>/content?id=<evidenceId>"An invalid or missing evidence ID returns not found. For everything else a Snapshot saves, such as the original HTML and the network requests, see Progressive disclosure.
The WACZ archive is the whole capture: the page, its assets, the Markdown, the State JSON, and the evidence. It is what replay loads from, and you can download it from /s/<snapshotId>/archive.wacz.
If you build a research agent, return citation links with the answer, so your users can click a claim and inspect the source behind it. A citation card needs the claim, the link, a source label, and the snippet text:
Enterprise includes 50 seats. [View evidence]
Source: pricing page
Evidence: State JSON
Link: https://expand.land/s/019...?id=3To build it:
snapshotId with the research result.source, text, location, and citationUrl when there is one.location.evidenceId. The CLI and MCP give you citationUrl.Snapshot links are public to anyone who has them. See Who can read a Snapshot before you share them.
https://expand.land/s/<snapshotId>/archive.wacz