Every time you shorten a link with Bit.ly or TinyURL, you hand them a logbook. Who clicked. When. From what country. On what device. That data gets sold, analyzed, and stored forever — even for the link you sent to your mom.
There's a fix. Run your own shortener. You keep the click logs, or keep none at all.
Why bother with short links at all?
Short links aren't just pretty. They let you:
- Change where a link points after you've shared it
- Use one memorable address (
go.yoursite.com/taxes) instead of a 200-character monster - Track clicks on your terms — or not track them
The catch with free services: that redirect server sees every single click. That's the trade you didn't agree to.
Pick the right tool
For beginners, Shlink is the sweet spot. It's open source, actively maintained, and ships with a clean web dashboard. No coding required after setup.
If you want something even lighter, YOURLS is a classic PHP option. But Shlink runs in Docker with one command, so we'll use that.
Step 1: Install Docker
If you don't have it, install Docker Desktop (Mac/Windows) or Docker Engine (Linux). One install, done forever.
Step 2: Run Shlink
Open a terminal and paste this, swapping in your own domain:
docker run --name shlink -p 8080:8080 \
-e DEFAULT_DOMAIN=links.yoursite.com \
-e IS_HTTPS_ENABLED=true \
shlinkio/shlink:stable
That's it. Shlink is now running on port 8080.
Step 3: Add the dashboard
The command line works, but the web UI is friendlier. Run the official dashboard:
docker run --name shlink-web -p 8000:8080 shlinkio/shlink-web-client
Visit http://localhost:8000, point it at your Shlink server, and create links by clicking buttons.
Step 4: Generate an API key
From your terminal:
docker exec -it shlink shlink api-key:generate
Paste that key into the dashboard to connect them. Now you create, edit, and delete short links from your browser.
Step 5: Decide how much to track
This is the privacy payoff. Shlink lets you turn visit tracking off entirely per link, or strip out IP addresses while keeping basic counts. Set it in the dashboard under each link's settings.
Want zero logs? Add this when launching:
-e DISABLE_TRACK_PARAM=true
Now your links redirect silently. No one — not even you — gets a profile of who clicked.
Point a domain at it
Use a short domain you own. Add an A record pointing to your server, slap a free Let's Encrypt certificate in front with a reverse proxy like Caddy, and your links go live as links.yoursite.com/x.
The takeaway
Spin up Shlink in Docker tonight, flip tracking off, and every link you share stops feeding a marketing database. Your clicks become your business again.