Tool
Markdown reader for documents that do not fit on one screen
Paste the text, open a .md file, or point at a URL. The document renders below straight away — and the full reader adds an automatic outline, reading progress and modes built for text you read across several sittings.
API deprecation runbook — Billing v1
Owner: Platform team · Cutoff: 30 June · Status: in progress
1. What is being removed
Billing API v1 is retired on 30 June. Every endpoint under /v1/billing/*
returns 410 Gone after that date. The v2 endpoints have been available for
fourteen months and are already handling 83% of production traffic.
Nothing in this runbook is reversible after the cutoff. Read section 4 before you disable anything.
2. Who is still calling v1
| Consumer | Calls / day | Owner | Migrated? |
|---|---|---|---|
checkout-web | 41,200 | Storefront | Yes |
invoice-worker | 6,800 | Finance | Partially |
partner-sync | 940 | Integrations | No |
| unidentified | 120 | — | Unknown |
The unidentified traffic has no user agent and no API key label. Treat it as a partner integration until proven otherwise, and do not shut it off silently.
3. Migration order
- Freeze new v1 API keys — done on 2 March.
- Move
invoice-workerwrites to v2, keeping reads on v1 for one week. - Cut
partner-syncover during a scheduled maintenance window. - Return
299 Deprecatedwarning headers on every v1 response. - Flip the kill switch, then keep the 410 handler for six months.
# who called v1 in the last hour, grouped by key label
logcli query '{app="billing"} |= "/v1/billing"' --since=1h \
| jq -r '.key_label // "unknown"' | sort | uniq -c | sort -rn
4. Before you disable anything
- Announce the date in the partner changelog, twice, 30 days apart
- Confirm v2 handles the
refund.partialcase that blocked Finance - Verify the 410 body includes a link to the migration guide
- Get written sign-off from Integrations for
partner-sync
A 410 without a machine-readable body is the single most common complaint we
get from partners. The response must include Link: and a JSON body with the
replacement path, not just an empty status line.
5. Rollback and its limits
There is no rollback after step 5. The v1 handlers share a database schema migration with v2, and that migration drops two columns. Until step 5, a rollback means re-enabling the route and reverting the feature flag — about four minutes. After it, recovery is a restore from snapshot.
Why long Markdown breaks an ordinary viewer
Most Markdown viewers solve the easy problem: take the text and show it formatted. That works for ten lines. A thirty-page runbook is a different task, because the reader needs to know where they are, how much is left, and how to get back to one section without scrolling blind.
That is where nearly every viewer clone stops. It hands you one continuous column with no navigation, no sense of progress and no memory: close the tab and you have lost your place. This reader was built for the opposite case — the document you read in more than one sitting, and come back to a week later.
The outline comes out of the document
Every Markdown heading becomes an entry in the table of contents, nested by the number of hash
marks: # is the top, ## is a section, ### is a
subsection. There is no summary to maintain and no anchors to write. If the document has
headings, it already has navigation.
The section you are in stays highlighted as the text scrolls, which answers the question that comes up most often in technical reading: which part of the document was that in? For a specification with forty numbered sections, that single behaviour is the difference between reading it and searching it.
Headings do more work than they look like they do. A document with a flat structure — one
# and forty paragraphs — produces a flat outline and nothing to navigate. If you
control the source, splitting it into ## sections costs a minute and changes how
the document reads for everyone after you.
Progress, and coming back later
A thin bar tracks how much of the document has gone by, and the position is kept in your own browser. Reopen the same document and reading resumes where it stopped — no account, no sync, nothing sent anywhere.
For study material that changes how the tool gets used: one chapter a day, without noting down which paragraph you had reached. For review work it does something else — it tells you honestly how much of a document you actually read before you approved it.
Four ways to read the same file
| Mode | What it is for |
|---|---|
| Scroll | Continuous reading with the outline beside it and a progress bar — the default. |
| Book | Paginated columns, for long text you want to read slowly rather than scan. |
| Focus | One section at a time, with everything around it out of the way. |
| Presentation | Each section becomes a slide, generated from the same file. |
Switching modes never changes the file. It is the same source displayed a different way, so there is no second copy to keep in sync and no export step. The presentation mode in particular removes a whole task: a design document you already wrote is a deck, without rebuilding it in slide software.
What gets rendered
Headings, lists, task lists, tables with alignment, block quotes, footnotes, images, horizontal
rules, inline code and fenced code blocks with syntax highlighting. Fenced
mermaid blocks are drawn as diagrams — there is a
separate page for that if diagrams are the
reason you are here.
Two things it deliberately does not do: it does not convert to PDF or Word, and it does not load remote images. The first is a job for a converter. The second is a privacy decision — a document that pulls images from a third-party host tells that host when and where you read it.
The document does not leave your device
There is no upload step. The file is read by the browser, rendered by the browser and stored in the browser's own storage, which you can clear whenever you want. For internal documents, contracts and unpublished drafts that is usually the difference between being allowed to use an online tool and not.
It also means the practical limit is your device, not a server quota. A 2 MB document — roughly a 600-page book in plain text — renders locally in about a second on a normal laptop.
Frequently asked questions
How long a document can this handle?
Up to 2 MB of text, which covers a full manual, a specification or a set of course notes. Past that, split the file or open only the section you are reviewing.
Do I need to install anything or create an account?
No. It runs in the browser with no sign-up and no install. Paste the text, pick a local file, or point it at a public URL.
Is my document uploaded to a server?
No. Rendering happens on your device, and the text is kept in your browser storage while you read. You can clear it at any time.
Where does the outline come from?
From the document itself. Every Markdown heading becomes an outline entry, nested by the number of hash marks, so there is no summary to maintain by hand.
Does it remember where I stopped reading?
Yes. Reading position is stored locally per document, so reopening the same file picks up where you left off without an account.