• MIT licensed
  • Visitor IPs never stored
  • OpenAPI 3.1
  • One docker compose up

From long URL to clear answers

Three steps, no tracking pixels, no third-party scripts on your links.

  1. 1

    Paste a long link

    Pick a custom code if you like, add an expiry, a visit limit or a password.

    https://acme.dev/blog/introducing-acme-2?ref=nav
    vialb.link/launch
  2. 2

    Share it anywhere

    Post it, print it as a QR code or send it by email.

    vialb.link/launch

    Copied to clipboard

  3. 3

    Learn what worked

    See which channel, country and hour brought the clicks, and plan the next post.

    • news.ycombinator.com46%
    • x.com21%
    • linkedin.com12%

Everything a link needs

The features of a paid link platform, in one small app you can read, change and host yourself.

Clicks, last 30 days

1,775

ReferrersCountriesDevices

Analytics you can act on

Countries, devices, referrers, UTM campaigns and the hours people click. Computed in your own database.

QR codes in your colors

Download PNG or SVG for print, packaging or a table card. Every scan is counted.

Password required

••••••••
Open link

Password protection

Gate a link behind a password, hashed with argon2id. Crawlers never see the destination.

Visits312 / 500
Expiresin 3 days

Expiry and visit limits

Stop a link after a date or a number of visits. Limits are enforced atomically in the database.

203.0.113.42
+ browser + daily salt
visitor 3f9a…c21e

Private by design

Link visitors are counted with a daily-salted hash. Their IP addresses are never written to disk.

# Create a short link
curl -X POST https://vialb.link/api/v1/links \
  -H "Authorization: Bearer tw_••••" \
  -d '{"url":"https://example.com"}'

A real REST API

OpenAPI 3.1 with interactive docs, personal API keys and per-key rate limits.

vialb.link/launch

Introducing Acme 2.0

Faster builds and a new CLI.

Link previews you control

Set the title, description and image people see when the link is shared in chat.

Also included

  • TOTP two-factor sign-in
  • Admin roles and bans
  • Domain blocklist
  • Safe Browsing checks
  • CSV export
  • Bulk actions
  • Anonymous links you can claim later
  • GitHub and Google sign-in

When people scan the menu

vialb.link/menu
Day001203450678091011121314151617181920212223
Sun400000005371449502511711365156383012
Mon000000000000000000000000
Tue1000000043318253720112527505452309
Wed2000000031726304528641835505346319
Thu2000000044416343525119726484440258
Fri600000004882758573317920436192652411
Sat50000000537126462309519397487654615
FewerMorePeak hour

Busiest time

Fri 20:00

Clicks peak on Fridays around 20:00 UTC. Post or send around then.

Direct traffic

91%

Most visits had no referrer. That is typical for QR codes, chat apps and email.

A restaurant learns it should staff up on Fridays.

One QR code on each table. A month later the owner knows the dinner rush starts at 19:00, that nine in ten guests scan with a phone, and that Mondays are dead. That is the kind of answer every link in Vialb gives you.

Your links. Your server. Your data.

One Docker Compose file starts the app and Postgres, with Redis as an option. Back it up like any other database and move it whenever you want.

bash
$ git clone https://github.com/RaydanAridiCS/vialb.link.git && cd vialb.link$ cp .env.example .env# set SITE_URL and BETTER_AUTH_SECRET in .env$ docker compose up -d

Make your next link count.

Free and open source under the MIT license.