Linktree replacement · self-hosted · free

Your link-in-bio,
without the $24 a month.

A bio page at yourdomain.com/you. Five themes, scheduled links, click analytics, your data. Runs on a $6 VPS with SQLite — no monthly bill.

Click tracking is server-side — no third-party analytics script on your visitors. Your audience's data stays yours.

@coreysteward
Steward · New Smyrna Beach

Builder. Operator. I make things that handle themselves.

🌐 Irie Builder
🛍️ Irie Threads
🎙️ Latest podcast
📬 Newsletter
Built on Irie Link

What Linktree Pro is for

$288/year for what should be a static page.

Linktree Pro · $24/mo

  • × Custom themes & backgrounds
  • × Analytics on link clicks
  • × Scheduled link visibility
  • × Custom domain on a paid tier
  • × Animated link priority

Irie Link · $0/mo, included

  • Five themes shipped · lib/themes/index.ts
  • Click analytics by link, by day · clicks table
  • scheduled_at + hide_after columns
  • Any domain on Vercel free tier
  • Sparse-position reordering · two-line CSS animations

Free as in beer + as in repo. MIT licensed. If a feature is missing, the schema is yours to extend.

Pick a theme. It's a one-word change.

Each theme is a CSS-variable map in a single file. Adding a sixth is one entry plus one option in a CHECK constraint — no design system to learn.

@you
A short bio fits here.
Link 1
Link 2
Link 3
Peach
@you
A short bio fits here.
Link 1
Link 2
Link 3
Midnight
@you
A short bio fits here.
Link 1
Link 2
Link 3
Forest
@you
A short bio fits here.
Link 1
Link 2
Link 3
Paper
@you
A short bio fits here.
Link 1
Link 2
Link 3
Neon

Deploy

Live for a community of any size in one evening.

  1. 1

    Pull the repo, run npm install.

    Standard Next.js. SQLite is bundled — no separate database server.

  2. 2

    Set ADMIN_EMAIL and (optionally) RESEND_API_KEY in .env.local.

    One env var locally; magic links print to the console if you skip Resend in dev.

  3. 3

    Docker Compose up on your VPS. Point your domain at the Cloudflare Tunnel.

    Everyone you invite signs in via magic link and gets yourdomain.com/their-name. Nightly backup to your NAS.

The CLAUDE.md at the repo root scripts every step. Open it in Claude Code, say "set up the app", and the conversation walks you through it.

Why it's safe to host this

The redirect that doesn't open-redirect.

Most link-in-bio clones have one quiet vulnerability — a URL like /go/?url=https://phishing.example redirects anywhere. Free real estate for spammers.

Irie Link's click endpoint takes only a link ID. The redirect URL is looked up server-side from the owner's row, validated against ^https?://, then 302'd. There's a unit test for it. Your domain doesn't end up on phishing reports.

Honest answers

Why not just use Linktree?
Linktree is fine if you want it managed. Irie Link is for people who'd rather own their bio page, their custom domain, their analytics, and the data their audience generates. Not for everyone.
What about scale? Can it host a few thousand creators?
A single SQLite file on a modest VPS handles a few thousand creators and millions of clicks before you'd think about it. better-sqlite3 reads are sub-millisecond. When you do outgrow it, the schema is portable to Postgres — but that's a happy problem for later.
Can my users have multiple bio pages?
Not in v1. One profile per user. The CLAUDE.md walks through extending the schema to a pages table if you need it.
What about image uploads for avatars?
v1 stores an avatar URL string. Wiring object storage (Cloudflare R2, Backblaze B2, or a local file path served behind the tunnel) is documented in CLAUDE.md. Most operators wire it later, after they have users.

A free page is the start.

Claim a username, drop your links, send the URL to anyone who asks where to follow you.

Claim your username →