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.
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.
-
01Point a domain at itAdd the domain you already own, or one you buy for this. Every link made afterwards carries it.
-
02Make the link, or print the codePick the back half yourself, or let one be generated. A QR code can be restyled later without changing what is printed.
-
03Read the clicksWhere 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.
| Line | Typical | Note |
|---|---|---|
| A server | $5–$12 / month | 2 vCPU, 2 GB of RAM and 40 GB of disk is enough for a small workspace. |
| A domain | $10–$15 / year | The short domain. It is yours, and it moves with you. |
| PostgreSQL | $0 | Runs beside the app in the compose file. |
| TLS | $0 | Let's Encrypt, through the reverse proxy. |
| Email (optional) | $0–$10 / month | Sign-in links and alerts. A free relay covers a small workspace. |
| Total | $6–$15 / month | And 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.