Link in bio
One page for every link you post — and unlike every other link-in-bio tool, each button springs the real native app, so you can see which blocks actually got people into the app.
Link in bio
Your Zippy bio page lives at zipthe.link/@yourhandle and holds every link you post — the
new video, the preset pack, your socials.
The difference from every other link-in-bio tool is one design decision: a block never holds a URL. Every tappable block points at one of your Zippy links, so a tap runs through the redirect engine and springs the real native app out of the Instagram or TikTok in-app browser. And because the engine records how each tap landed, your bio page can answer a question no other bio tool can: which block actually got people into the app.
The page is free on every plan. Custom colours are Hero and up. The whole feature is behind
the link-in-bio feature flag.
Claim your handle
Dashboard → Link in bio (or my bio on the phone).
| Field | What it is |
|---|---|
| Handle | The address people tap: zipthe.link/@yourhandle. 3–30 characters, letters/numbers/./-/_, starting with a letter or number. |
| Display name | The big name at the top of the page. |
| Bio | One line under your name. Up to 280 characters. |
| Profile picture URL | Any public https:// image. |
| Page is live | Off hides the page — and nothing else. See Hiding the page never breaks a link. |
Handles are case-insensitive (/Mona and /mona are one page, stored lowercase), and every
top-level route of the app is reserved, so nobody can claim links, settings or billing.
Change your handle any time — the old one frees up and every link on the page keeps working.
Blocks
A page is an ordered list of up to 50 blocks.
| Block | What it does |
|---|---|
| Link button | The big tap target. Points at one of your links; optional small print under the label. |
| Heading | A section title between groups of buttons. |
| Text | A line of plain text (rendered as text — never HTML). |
| Social row | A row of pills, up to 8, each one its own link. |
Why you pick a link instead of pasting a URL
Because a pasted URL just opens a webpage. That's the entire gap between Zippy and a Linktree:
- A link block resolves through the redirect engine, which fires the native app intent — YouTube opens in YouTube, Spotify in Spotify, instead of a webview.
- The engine records the outcome, so the block gets a real app-open rate.
- Everything you already set on that link comes along: deep-linking, UTM tags, pixels, password, A/B tests.
Make links on the Links page, then pick one in the block. There is no URL field on a block, and the API refuses any block that carries one.
Reordering
Every block has Move up and Move down buttons — on the web dashboard and in the mobile app. They're real buttons, so reordering works with a keyboard, a screen reader or a switch control, not just a mouse drag.
Saving replaces the whole list in one write. There's no per-block position to drift out of sync, so a reorder can never duplicate or lose a block: either the new order is stored, or nothing changed. If a block is unfinished (no button text, no link picked), the editor names it and holds the save rather than quietly dropping it.
Which block opens the app
This is the payoff, and it's on the editor screen under Which block opens the app.
GET /api/bio/stats
Read it the way we report it:
appOpenRateisopened / outcomes, computed inside the outcomes dataset — notopened / clicks. Clicks and outcomes are sampled independently, so dividing one by the other would be a made-up ratio.sampled: trueis always true. These are trends. The gap between 91% and 30% is real; the last digit isn't. We show whole numbers only, for that reason.appOpenRate: nullmeans no outcome rows yet and renders as—. A block with outcome rows and zero opens is a real 0%. Those are different facts and never render the same.- No traffic at all gets a plain "nobody has tapped yet" — never a table of fake zeros.
Per-block rates are Hero and up (fullAnalytics), the same tier as the rest of your
per-link analytics. On the free plan the page and every block still work, still redirect, and
are still measured — you just can't read the rate yet.
Colours
Hero and up can set three hex colours: page background, text, and buttons. Everything else on the page reads those three values, so a page is always internally consistent.
Two deliberate behaviours:
- Saving your page without touching colours preserves them. If your plan changes, editing your title never wipes your palette.
- The public page paints the colours you stored, whatever your plan is today. A downgrade never repaints a page your audience already knows.
Hiding the page never breaks a link
Switching Page is live off hides the page. Deleting the page frees the handle. Neither one touches a single link:
Every link that was ever on your bio page keeps redirecting. Forever.
That's the same permanence rule as everywhere else in Zippy — no expiry, no click caps, no dead 404s. The QR you printed, the caption you posted last year, the block you deleted this morning: all still resolve.
Your bio blocks also don't count against your plan's link limit. The page is free on every tier, so it would be a strange kind of free if five blocks ate a free plan's five links.
Your page as your audience sees it
The public page is server-rendered, has no client-side JavaScript at all, and every button is a plain same-tab link. That's not minimalism for its own sake — a new tab or a JS-driven navigation breaks the in-app-browser → native-app hand-off, which is the only reason this page exists.
The preview in the editor is the exact same renderer as the public page, so what you arrange is what your audience gets.
FAQ
How do I make a link-in-bio page?
Open Link in bio in the dashboard (or my bio in the app), claim a handle, then add
blocks. Each link block points at one of your Zippy links. Your page is live at
zipthe.link/@yourhandle as soon as you claim the handle.
How do I make a link in bio that opens the Instagram app?
Make a Zippy link whose destination is the Instagram URL (a profile, a Reel, a post), then add a link button block that points at that link — not at the raw URL. The redirect engine fires Instagram's native app intent, so the tap leaves whatever in-app browser it started in and lands in the Instagram app, logged in. The same holds for TikTok, YouTube, Spotify and every other app in the routing table; put them in a social row block if you want them as a row of pills. Nothing to configure: it's what a link block does by default.
Why does my bio page ask for a link instead of a URL?
So a tap can open the real app. A pasted URL is just a webpage; a Zippy link runs through the redirect engine, which springs the native app out of the Instagram/TikTok browser — and reports whether it worked.
Can I see which bio link performs best?
Yes, and by the metric that matters: app-open rate per block, not just clicks. It's on the editor screen, Hero and up.
Does hiding or deleting my bio page break my links?
No. Hiding hides only the page; deleting frees only the handle. Every link stays live and keeps redirecting forever.
Do bio blocks use up my link limit?
No. Links created for your bio page are excluded from your plan's active-link count.
Read more
- Blog: Your link-in-bio page has been lying to you — here's the number it was hiding
- Changelog: Link in bio
- Sibling features: A/B split testing (a block's link can be running a split test) · Audience routing (send iOS and Android taps to different places from the same block) · The app-open receipt (the shareable proof behind the same outcome data)