Your domain. Your data. Your links.

The link you printed still works.

Steadlink puts short links and QR codes on a domain you own. The click goes straight to the destination — no page in between, no ad, no countdown — and the numbers are yours to keep.

Read the setup guide Free to self-host. MIT. No meter.
The Steadlink dashboard: links with their clicks, and a chart of the last thirty days.
The dashboard, with the seed data it ships with. No mockups.

A link is a promise with a date on it.

The date is the day someone scans the card, opens the brochure or taps the poster. From that moment the link has to work, and it has to go where it said it would.

Something appears before the destination

A preview, a countdown, an ad — a page that was not there when the code was printed, inserted by the service after the printing. The click was promised to one place and lands somewhere else for a few seconds first.

The link stops working

Quietly, and without notice. The code is fine, the card is fine, and the person holding it gets an error. You find out from them, weeks after it started.

Both of those are choices the service makes. Steadlink makes the other one.

How it works

Three steps, and none of them requires an account with us.

  1. 01
    Point a domain at it
    Add the domain you already own, or one you buy for this. Every link made afterwards carries it.
  2. 02
    Make the link, or print the code
    Pick the back half yourself, or let one be generated. A QR code can be restyled later without changing what is printed.
  3. 03
    Read the clicks
    Where they came from, which device, which country, and when. The history stays for as long as the link does.

What is different here

A full link manager is the price of entry. These six are the part the market does not do.

A redirect that is only a redirect

No page, no countdown, no ad, on any link. The response is the redirect, and the click is written behind it.

Your own domain

Every link carries a domain you own. If you move servers, the domain moves with you and the links keep working.

A history that is never cut short

The events are kept for as long as the link exists. There is no thirty-day window, and no upgrade that unlocks last year.

Every link, as a spreadsheet

The workspace exports to CSV — short link, destination, title, clicks, created, state — from a button, not a support ticket.

Your server, your database

Run it on a machine you control. The data is in your Postgres, the backups are yours, and nobody else can read it.

An API with a key you can revoke

Scoped API tokens and signed webhooks, for the things you would rather automate than click.

Also in the box: QR codes with your own colours and logo, link-in-bio pages, campaigns with channels, deep links, bulk actions up to 100 links, and groups for splitting one workspace into several.

Up in five minutes

One compose file, one command. The schema migrates on start.

git clone https://github.com/arjav3003jain/steadlink
cd steadlink
cp .env.example .env
docker compose up -d
# open http://localhost:3000

Replace the GitHub URL with your fork if you cloned from elsewhere. The environment table and the backup page are in the docs.

What it costs

Steadlink is MIT-licensed and self-hosted. There is no plan, no seat count, no trial and no per-click charge. What you pay for is the machine it runs on.

For comparison, the going rate for a hosted shortener is $10 to $48 a month, metered on links created or clicks tracked, with the entry tier holding thirty days of history. Here there is nothing to meter.

The cost of running Steadlink on your own server
Line Typical Note
A server$5–$12 / month2 vCPU, 2 GB of RAM and 40 GB of disk is enough for a small workspace.
A domain$10–$15 / yearThe short domain. It is yours, and it moves with you.
PostgreSQL$0Runs beside the app in the compose file.
TLS$0Let's Encrypt, through the reverse proxy.
Email (optional)$0–$10 / monthSign-in links and alerts. A free relay covers a small workspace.
Total$6–$15 / monthAnd nothing per click.

Questions

Does anything appear between the click and the destination?+

No. The answer is a redirect, on every link, and the test suite asserts it on every run. There is no ad inventory in the product to sell.

What does it cost?+

The software is free and MIT. You pay for the server and the domain, about $6 to $15 a month, and nothing per click.

Can I import from the shortener I use now?+

Not yet. The export is a CSV of every link with its destination; the import is next.

What happens to my links if this project stops?+

Nothing. MIT, your database, your domain. The links keep resolving as long as the server runs.

Is there a limit on links or clicks?+

No. The counts on the dashboard are counts; nothing enforces a ceiling and there is nothing to buy.

Where does the data live?+

In your PostgreSQL, on your server. There is no Steadlink server holding a copy.

Put a link on something you cannot take back.

The card, the poster, the packaging. It should still work when the campaign is over and the invoice is paid.

Read the setup guide Free to self-host. Nothing between the click and the destination.