How it works
Observably
private.
Timechain Graph makes the Bitcoin chain observable in your browser — and it does so without telling anyone you looked. That isn’t a promise printed on a page; it’s a property of how the thing is built, and you can check it yourself in under a minute (jump to how).
The pipeline
The chain data is built offline by the operator and shipped as a static file. The browser never talks to a block explorer, an indexer, or any third-party API — it reads one bundle from our own origin and queries it locally.
Operator plane · offline
Self-hosted bitcoind
Source data comes from Bitcoin’s own peer-to-peer network into a full node the operator runs, read directly over JSON-RPC (getblock v3). No third-party indexer or block explorer is ever involved.
Operator plane · offline
Reduce with DuckDB
An out-of-core DuckDB pass distills the chain down to just the slice this view renders — running in bounded memory on the operator’s machine, with no cloud service involved.
Operator plane · offline
Carve a static Parquet bundle
The result is exported as a static, columnar Parquet bundle plus a manifest — a plain file you can inspect, with nothing viewer-specific in it.
Serving plane
Serve from our own origin
The bundle is published to a storage bucket we control (Cloudflare R2) and served from timechaingraph.com. No library, font, or asset is loaded from anyone else.
Serving plane · your browser
Read it in your browser
Your browser downloads the Parquet bundle and decodes it locally, with a small reader bundled into this site. Search, playback and inspection all happen on your machine — there is no backend to send them to.
What your visit reveals
To our origin (timechaingraph.com): ordinary requests for static files — the page, its scripts and styles, system fonts, and the Parquet data bundle. The same footprint as loading any static website.
To any third party: nothing. No analytics, no tag managers, no CDN-hosted libraries, no web fonts, no telemetry, no cookies tied to you. There is no server that could log your searches, because they run in your browser.
Verify it yourself
- Open DevTools → Network and reload. Every request goes to timechaingraph.com, the host we control, for the page and its data. If you ever see any other domain, that is a bug — please report it.
- Read the audit. Every push runs a privacy audit that scans the built site for forbidden third-party domains (Google Fonts/Analytics, common CDNs, trackers) and fails the build if one leaks in. The boundary is a required green check, not a pinky-swear.
One honest caveat
A network observer (your ISP, a state-level watcher) can still see that you connected to timechaingraph.com at all — that is true of every website. If that matters to you, reach the site over Tor; a dedicated onion service is on the roadmap. What we can promise is that nothing on our side ever links a visit to a person.
Read the source
This page is the short version. The formal, checkable detail lives in the repository:
- Threat model & privacy posture — the priorities, the data flow, what is enforced and how.
- Infrastructure & operations docs — how the bundle is built and served without touching your privacy.
- The full source on GitHub — read it, audit it, run it yourself.
- FAQ — common questions about the data pipeline, privacy guarantees, and Bitcoin basics.
Open data
There is no hosted API, by design: a server that answers queries is a server that sees them. The data is open instead — the same Parquet files the views load, listed on /api, with every published version, its sizes and SHA-256 hashes in the open-data index. A listed version stays downloadable at its listed URLs.