bio-free.openapps.xyz

Source

This app’s code and revision history are public. Download a copy or explore the files below.

Public
The app’s code and revision history are public.
Owned app · rev 3e98d5e10bac
Run it yourself
Take the whole tree and run it on your own machine. The download needs no account. Cloning needs a sign-in.
Download .zip
bounded clone 4ce232ee856d7de1ba5f2b6d
A copy you download is not bounded. The guarantees this app runs under - declared egress, proven invariants, writes that fail closed - live in the runtime serving this page, not in the files. What you get is auditable source you can read and run, with no runtime guarantees attached.
← All files
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<script>
// Public pages: /<handle> starts loading the page right away, before anything else here loads.
// The reserved list must match RESERVED in functions/lib/bio.ts.
(function () {
  var m = location.pathname.match(/^\/([a-z0-9][a-z0-9-]{1,28}[a-z0-9])\/?$/i);
  if (!m || /^(api|new|admin|about|help|assets|art|fonts|edit|login|signup|settings|privacy|terms|support|app|apps|www|bio|openapps|static|dashboard)$/i.test(m[1])) return;
  var handle = m[1].toLowerCase();
  if (location.pathname !== "/" + handle) history.replaceState(null, "", "/" + handle + location.search);
  document.documentElement.className = "bio";
  window.__bio = {
    handle: handle,
    data: fetch("https://functions.bounded.sh/apps/4ce232ee856d7de1ba5f2b6d/api/view/" + handle).then(function (r) {
      return r.json().then(function (body) { return { ok: r.ok, status: r.status, body: body }; });
    })
  };
})();
</script>
<style>
#page { display: none; }
html.bio body > .site-head, html.bio body > main, html.bio body > .site-foot { display: none !important; }
html.bio #page { display: block; }
html.bio body { background: #f8f3ea; }
/* The page's shape while its data arrives, so a visitor never stares at an empty screen. */
.bp-wait { display: flex; flex-direction: column; align-items: center; gap: 12px; width: min(560px, 100%); margin: 0 auto; padding: 64px 20px; }
.bp-wait i { display: block; width: 100%; height: 58px; border-radius: 14px; background: #00000009; animation: bp-wait 1s ease-in-out infinite alternate; }
.bp-wait i:nth-child(1) { width: 96px; height: 96px; margin-bottom: 6px; border-radius: 50%; }
.bp-wait i:nth-child(2) { width: 55%; height: 30px; border-radius: 8px; }
.bp-wait i:nth-child(3) { width: 75%; height: 16px; margin-bottom: 18px; border-radius: 6px; }
@keyframes bp-wait { to { opacity: .55; } }
</style>
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Bio: free Linktree alternative with unlimited links and click counts | OpenApps</title>
<meta name="description" content="Bio is a free Linktree alternative: your photo, a short bio, unlimited links and headers, social icons and a QR code at one address, with views and clicks for every link. No ads, no sign-up, no paid tier.">
<link rel="canonical" href="https://bio-free.openapps.xyz/">
<meta property="og:type" content="website">
<meta property="og:site_name" content="OpenApps">
<meta property="og:title" content="Bio: all your links on one page, free">
<meta property="og:description" content="A free link in bio page: your photo, a short bio, unlimited links and social icons at one address. No ads, no sign-up, no paid tier.">
<meta property="og:url" content="https://bio-free.openapps.xyz/">
<meta property="og:image" content="https://free-apps.openapps.xyz/og/bio.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="theme-color" content="#fdfdfc">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="alternate" type="text/plain" title="llms.txt" href="/llms.txt">
<link rel="alternate" type="text/markdown" title="Bio as plain markdown" href="/index.md">
<link rel="service-desc" type="application/vnd.oai.openapi+json" title="Bio API" href="/openapi.json">
<link rel="preload" href="/fonts/NewsreaderVariable-var.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/fonts/ArchivoVariable-var.woff2" as="font" type="font/woff2" crossorigin>
<link rel="stylesheet" href="/kit.css">
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"SoftwareApplication","name":"Bio by OpenApps","applicationCategory":"SocialNetworkingApplication","operatingSystem":"Web","url":"https://bio-free.openapps.xyz/","description":"A free Linktree alternative: a photo, a short bio, unlimited links and headers, social icons and a QR code at one address, with views and clicks for every link. No ads, no sign-up and no paid tier.","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"isAccessibleForFree":true,"dateModified":"2026-10-19","publisher":{"@type":"Organization","name":"OpenApps","url":"https://openapps.xyz"}}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"FAQPage","dateModified":"2026-10-19","mainEntity":[
{"@type":"Question","name":"Is there a free alternative to Linktree?","acceptedAnswer":{"@type":"Answer","text":"Yes. Bio is a free link in bio page with no paid tier: your photo, a short bio, unlimited links and headers, social icons, every theme, a QR code and view and click counts for every link. No ads and no sign-up."}},
{"@type":"Question","name":"Is Bio really free?","acceptedAnswer":{"@type":"Answer","text":"Yes. There is no paid plan, no ads and no limit on pages or links. A page is one small record, and OpenApps pays for it."}},
{"@type":"Question","name":"How is Bio different from Linktree?","acceptedAnswer":{"@type":"Answer","text":"Linktree's free plan has basic analytics and shows Linktree branding. Removing the branding and its advanced analytics come with paid plans, listed at $6 to $30 a month billed yearly when we checked in October 2026. Bio gives everyone every theme and click counts for every link, and its small \"Made with Bio\" line turns off with one switch. Linktree does more, like selling products and collecting emails; Bio is links only."}},
{"@type":"Question","name":"Do I need an account?","acceptedAnswer":{"@type":"Answer","text":"No. When you claim your page, Bio gives you a private edit link. It works on any device without an account. Anyone with it can change your page, so keep it to yourself. This browser also remembers your pages under \"Your pages\"."}},
{"@type":"Question","name":"Can I hide a link without deleting it?","acceptedAnswer":{"@type":"Answer","text":"Yes. Every link has a Show switch. A hidden link stays in your editor with its click count, and visitors do not see it until you switch it back on."}},
{"@type":"Question","name":"Can I get a QR code for my page?","acceptedAnswer":{"@type":"Answer","text":"Yes. Share in the editor shows your page's QR code. Download it as a PNG for flyers, menus or a table card."}},
{"@type":"Question","name":"Can I see who clicked my links?","acceptedAnswer":{"@type":"Answer","text":"You see how many times your page was viewed and how many times each link was clicked. Bio does not track visitors or keep anything about them; it only counts."}},
{"@type":"Question","name":"How do I put it in my Instagram or TikTok bio?","acceptedAnswer":{"@type":"Answer","text":"Copy your page address, like bio-free.openapps.xyz/yourname, and paste it into the website field when you edit your profile. Change your links any time; the address stays the same."}},
{"@type":"Question","name":"Can my AI assistant make a page for me?","acceptedAnswer":{"@type":"Answer","text":"Yes. Bio has a public HTTP API with no key. An assistant can make a page, change it later with the owner key it gets back, read its views and clicks, and fetch its QR code."}}]}
</script>
</head>
<body>
<div id="page"><div class="bp-wait" aria-hidden="true"><i></i><i></i><i></i><i></i><i></i><i></i></div></div>
<header class="site-head">
  <div class="wrap">
    <a class="brand" href="https://free-apps.openapps.xyz/" aria-label="OpenApps free apps">
      <img src="/logo.svg" alt="" width="26" height="26">
      <span>OpenApps</span>
    </a>
    <span class="brand-sep" aria-hidden="true">/</span>
    <a class="brand brand-app" href="/">Bio</a>
    <nav class="site-nav" aria-label="Main">
      <a class="nav-optional landing-link" href="/#how">How it works</a>
      <a class="landing-link" href="/#api">API</a>
      <a href="https://free-apps.openapps.xyz/apps">Free apps</a>
    </nav>
  </div>
</header>

<main>
  <div id="app"></div>

  <section class="app-hero landing-only">
    <div class="wrap app-hero-grid">
      <div class="hero-copy">
        <img class="art hero-art" src="/art/card-bio.webp" alt="" width="200" height="175">
        <p class="eyebrow">Free alternative to Linktree</p>
        <h1 class="display">All your links on one page. Free, with no ads.</h1>
        <p class="lede">Make a link in bio page in a minute: your photo, a short bio, every link you want people to find and your social icons, at one short address. No sign-up and no paid tier.</p>
        <div id="claim"><noscript><p class="notice">Bio needs JavaScript to make a page.</p></noscript></div>
        <ul class="hero-points">
          <li>Unlimited links, headers and social icons</li>
          <li>Views and clicks for every link</li>
          <li>Every theme free, no logo you cannot remove</li>
        </ul>
      </div>
      <div class="hero-demo" aria-hidden="true">
        <div class="phone phone-demo"><div class="phone-screen" id="demo"></div></div>
      </div>
    </div>
  </section>

  <section id="mine" class="landing-only"></section>

  <section class="section landing-only" id="how">
    <div class="wrap">
      <h2 class="h2">How it works</h2>
      <ol class="steps">
        <li><h3>Claim your address</h3><p>Pick the name after the slash, like /yourname. It is yours right away, with no account.</p></li>
        <li><h3>Add your links</h3><p>Add a photo, a line about you, your links and social icons. Drag them into order and pick a theme. The preview shows exactly what people will see.</p></li>
        <li><h3>Put it in your bio</h3><p>Paste your address into Instagram, TikTok, YouTube or anywhere else. Change your links any time; the address stays the same.</p></li>
      </ol>
    </div>
  </section>

  <section class="section-tight landing-only" id="features">
    <div class="wrap">
      <h2 class="h2">Everything a link page needs</h2>
      <ul class="features">
        <li><h3>Links and headers</h3><p>Unlimited links. Group them under headers, drag them into order, and hide one without deleting it.</p></li>
        <li><h3>Social icons</h3><p>Instagram, TikTok, YouTube, X, Threads, Bluesky, Facebook, LinkedIn, GitHub, Spotify, Twitch, WhatsApp, Telegram, email and your website.</p></li>
        <li><h3>Views and clicks</h3><p>See how many people opened your page and how often each link was tapped. Nothing about visitors is kept.</p></li>
        <li><h3>Five looks</h3><p>Paper, ink, cobalt, sage or night, with filled or outline buttons. All free.</p></li>
        <li><h3>QR code</h3><p>Download your page's QR code as a PNG for flyers, menus and table cards.</p></li>
        <li><h3>No account</h3><p>A private edit link opens your editor on any device. Your browser remembers your pages too.</p></li>
      </ul>
    </div>
  </section>

  <section class="section-tight landing-only">
    <div class="wrap">
      <h2 class="h2">Free, with no catch</h2>
      <p class="lede" style="margin-top:14px">A page of links should not need a subscription to look the way you want or to tell you which links people tap. Bio is free because it costs almost nothing to run: a page is one small record, and OpenApps pays for it.</p>
      <div class="table-wrap" style="margin-top:24px">
        <table class="table compare">
          <thead><tr><th scope="col"></th><th scope="col">Bio</th><th scope="col">Linktree Free</th></tr></thead>
          <tbody>
            <tr><td>Links</td><td class="yes">Unlimited, with headers</td><td>Unlimited</td></tr>
            <tr><td>Clicks for every link</td><td class="yes">Yes, free</td><td>Basic analytics; advanced analytics from Pro</td></tr>
            <tr><td>Branding on your page</td><td class="yes">One small line you can turn off</td><td class="no">Linktree branding; removable on a paid plan</td></tr>
            <tr><td>Themes and button styles</td><td class="yes">All free</td><td class="no">Core options; more on paid plans</td></tr>
            <tr><td>Selling, collecting emails</td><td class="no">No, Bio is links only</td><td>Yes</td></tr>
            <tr><td>Paid plans</td><td class="yes">None</td><td class="no">$6, $12 or $30 a month, billed yearly</td></tr>
            <tr><td>Account needed</td><td class="yes">No</td><td class="no">Yes</td></tr>
          </tbody>
        </table>
      </div>
      <p class="hint" style="margin-top:12px">Checked October 2026 on <a href="https://linktr.ee/s/pricing">Linktree's pricing page</a>. Beacons' free plan takes a 9% fee on sales and allows 50 email sends a month, and its paid plans run $10 to $100 a month (<a href="https://beacons.ai/i/pricing">Beacons pricing</a>, checked October 2026). If you sell from your link page, they do more than Bio. If you want a clean page of links, Bio does that for free.</p>
    </div>
  </section>

  <section class="section landing-only" id="api">
    <div class="wrap api-grid">
      <div>
        <p class="eyebrow">For AI assistants</p>
        <h2 class="h2">Your assistant can make the page for you.</h2>
        <p class="lede" style="margin-top:14px">Bio has a public API with no key and no account. One call makes a page with links, headers and social icons and returns its address, a private edit link and an owner key. With the owner key, an assistant can change the page later and read its views and clicks.</p>
        <p style="margin-top:14px">Full reference: <a href="/llms.txt">llms.txt</a> and <a href="/openapi.json">openapi.json</a>. The owner key is what lets anyone edit the page, so treat it like a password.</p>
      </div>
      <pre class="code"><span class="c"># Make a page</span>
curl -X POST https://functions.bounded.sh/apps/4ce232ee856d7de1ba5f2b6d/api/pages \
  -H 'content-type: application/json' \
  -d '{"handle": "maya-ceramics", "name": "Maya Okafor",
       "bio": "Ceramics and slow mornings in Lisbon.",
       "links": [{"title": "Shop", "header": true},
                 {"title": "October pieces", "url": "https://example.com/shop"}],
       "socials": {"instagram": "@maya", "email": "maya@example.com"}}'

<span class="c"># Change it later, with the ownerKey from above</span>
curl -X PATCH https://functions.bounded.sh/apps/4ce232ee856d7de1ba5f2b6d/api/pages/maya-ceramics \
  -H 'x-owner-key: OWNER_KEY' \
  -H 'content-type: application/json' \
  -d '{"theme": "sage", "bio": "New pieces every first Sunday."}'

<span class="c"># Views and clicks per link</span>
curl https://functions.bounded.sh/apps/4ce232ee856d7de1ba5f2b6d/api/pages/maya-ceramics/stats \
  -H 'x-owner-key: OWNER_KEY'

<span class="c"># The page's QR code, as an SVG image</span>
curl -o qr.svg https://functions.bounded.sh/apps/4ce232ee856d7de1ba5f2b6d/api/pages/maya-ceramics/qr.svg</pre>
    </div>
  </section>

  <section class="section-tight landing-only">
    <div class="wrap">
      <h2 class="h2">Questions</h2>
      <div class="faq" style="margin-top:22px">
        <details><summary>Is there a free alternative to Linktree?</summary><div>Yes. Bio is a free link in bio page with no paid tier: your photo, a short bio, unlimited links and headers, social icons, every theme, a QR code and view and click counts for every link. No ads and no sign-up.</div></details>
        <details><summary>Is Bio really free?</summary><div>Yes. There is no paid plan, no ads and no limit on pages or links. A page is one small record, and OpenApps pays for it.</div></details>
        <details><summary>How is Bio different from Linktree?</summary><div>Linktree's free plan has basic analytics and shows Linktree branding. Removing the branding and its advanced analytics come with paid plans, listed at $6 to $30 a month billed yearly when we checked in October 2026. Bio gives everyone every theme and click counts for every link, and its small "Made with Bio" line turns off with one switch. Linktree does more, like selling products and collecting emails; Bio is links only.</div></details>
        <details><summary>Do I need an account?</summary><div>No. When you claim your page, Bio gives you a private edit link. It works on any device without an account. Anyone with it can change your page, so keep it to yourself. This browser also remembers your pages under "Your pages".</div></details>
        <details><summary>Can I hide a link without deleting it?</summary><div>Yes. Every link has a Show switch. A hidden link stays in your editor with its click count, and visitors do not see it until you switch it back on.</div></details>
        <details><summary>Can I get a QR code for my page?</summary><div>Yes. Share in the editor shows your page's QR code. Download it as a PNG for flyers, menus or a table card.</div></details>
        <details><summary>Can I see who clicked my links?</summary><div>You see how many times your page was viewed and how many times each link was clicked. Bio does not track visitors or keep anything about them; it only counts.</div></details>
        <details><summary>How do I put it in my Instagram or TikTok bio?</summary><div>Copy your page address, like bio-free.openapps.xyz/yourname, and paste it into the website field when you edit your profile. Change your links any time; the address stays the same.</div></details>
        <details><summary>Can my AI assistant make a page for me?</summary><div>Yes. Bio has a public HTTP API with no key. An assistant can make a page, change it later with the owner key it gets back, read its views and clicks, and fetch its QR code. See <a href="/llms.txt">llms.txt</a> or <a href="/openapi.json">openapi.json</a>.</div></details>
      </div>
    </div>
  </section>

  <section class="section-tight landing-only">
    <div class="wrap">
      <h2 class="h2">More free apps</h2>
      <ul class="more-apps">
        <li><a href="https://links-free.openapps.xyz/"><strong>Links</strong><span>Short links and QR codes, instead of Bitly</span></a></li>
        <li><a href="https://forms-free.openapps.xyz/"><strong>Forms</strong><span>Unlimited responses, instead of Typeform</span></a></li>
        <li><a href="https://split-free.openapps.xyz/"><strong>Split</strong><span>Shared expenses, instead of Splitwise</span></a></li>
        <li><a href="https://free-apps.openapps.xyz/apps"><strong>All apps</strong><span>The app store of free alternatives</span></a></li>
      </ul>
    </div>
  </section>
</main>

<footer class="site-foot">
  <div class="wrap">
    <!-- network:start -->
    <nav class="oa-network" aria-label="Free apps from OpenApps">
      <p class="oa-network-title"><a href="https://free-apps.openapps.xyz/">Free apps from OpenApps</a><span>Free alternatives to the apps you pay for, built for people and their AI assistants.</span></p>
      <ul>
      <li><a href="https://sign-free.openapps.xyz/">Sign</a><span>instead of DocuSign</span></li>
      <li><a href="https://forms-free.openapps.xyz/">Forms</a><span>instead of Typeform</span></li>
      <li><a href="https://split-free.openapps.xyz/">Split</a><span>instead of Splitwise</span></li>
      <li><a href="https://links-free.openapps.xyz/">Links</a><span>instead of Bitly</span></li>
      <li><a href="https://when-free.openapps.xyz/">When</a><span>instead of Doodle</span></li>
      <li><a href="https://pdf-free.openapps.xyz/">PDF</a><span>instead of Smallpdf</span></li>
      <li><a href="https://invoice-free.openapps.xyz/">Invoice</a><span>instead of FreshBooks</span></li>
      <li><a href="https://bio-free.openapps.xyz/" aria-current="page">Bio</a><span>instead of Linktree</span></li>
      <li><a href="https://book-free.openapps.xyz/">Book</a><span>instead of Calendly</span></li>
      <li><a href="https://dictate-free.openapps.xyz/">Dictate</a><span>instead of Wispr Flow</span></li>
      <li><a href="https://images-free.openapps.xyz/">Images</a><span>instead of TinyPNG</span></li>
      </ul>
      <p class="oa-network-more"><a href="https://free-apps.openapps.xyz/apps">All free apps</a> · <a href="https://free-apps.openapps.xyz/alternatives">Free alternatives A to Z</a> · <a href="https://free-apps.openapps.xyz/for-ai">Add every app to your AI assistant</a></p>
    </nav>
    <!-- network:end -->
    <div class="foot-note" style="margin-top:0;border-top:0;padding-top:0">
      <span>Bio is an <a href="https://openapps.xyz">OpenApp</a>: free, with public <a href="/__bounded/source">source</a> and its own agent.</span>
      <span><a href="https://free-apps.openapps.xyz/">OpenApps free apps</a> · <a href="/llms.txt">llms.txt</a></span>
    </div>
  </div>
</footer>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>

Change history

Quality pass: reorder, hide links, headers, QR share, 15 social icons, API docs
3e98d5e10b · 4 hours ago
Bounded source sync
c1194348e3 · 1 day ago
Bounded source sync
5b1f3fab35 · 1 day ago
Bounded source sync
21e45889ea · 1 day ago
Bounded source sync
8e21b0e5b7 · 1 day ago
Bounded source sync
0598bcc9b2 · 1 day ago
Bounded source sync
0ea5668865 · 1 day ago