Shorten links.
See every click.

shrl.io is a self-hosted URL shortener with per-link analytics: referrers, countries, devices, and campaigns.

shrl.io dashboard showing visits, visitors, top links, sources, and a world map of visitors by country

The link is just the start

Every short link records the full story of its traffic: referrers, geography, devices, and campaigns.

Per-link analytics

Each link gets its own dashboard: lifetime visits, visits in range, unique visitors, and average visits per day.

Visits
683
Visitors
440
Per day
48.8

Numbers from a real link in the product.

Referrer breakdown

Know which sites actually send traffic, ranked by visits and unique visitors.

googlenews.ycombinator.comreddit.comgithub.comt.co

QR codes included

Every link gets a QR code you can preview and download as a PNG.

Campaign tracking

UTM source, medium, and campaign roll up per link, so you can compare channels.

Teams

Manage links together in one workspace, on your own short domain.

Where clicks come from

Country, region, and city for every visit, plotted on a world map you can scan in seconds.

World map from the shrl.io dashboard shading visitor counts by country, next to a table ranking the United States, Germany, India, and other countries by visits and visitors
Link detail page for the short URL pzcpa2 with analytics charts, sources, environment, location, campaigns, and a world map

Follow a link all the way down

From one short URL, see who clicked, where they came from, and what they used.

  • Visits and unique visitors, charted day by day
  • Country, region, and city, with a world map
  • Browser, OS, and device mix
  • Tags to organize links like "docs"

Your links, your servers

shrl.io runs on infrastructure you control. No third-party service sits between you and your click data.

Deploy

One compose file brings up the whole stack with Docker or Podman, on a VPS, a home lab, or an internal network.

Connect your domain

Point a short domain at it. Every link you create uses it from then on.

Share and measure

Create links in the dashboard and watch visits, referrers, and geography roll in.

Start shortening on your own domain

Grab the compose file, export two secrets, and bring up the full stack: redirector, UI, analytics worker, PostgreSQL, and Redis.

sh
curl -O https://raw.githubusercontent.com/barats/shrl-io/main/compose.yaml
export SHRL_API_INTERNAL_SECRET="$(openssl rand -hex 32)"
export SHRL_SESSION_SECRET="$(openssl rand -hex 32)"
podman compose up -d

Then sign in at localhost:8082 with the first-run admin account. The same file works with Docker Compose: swap podman for docker.