Getting found · Edition No. 10 · 4 Sep 2026

shlinkio/shlink

A URL shortener you run yourself, with per-link visit statistics and a full web API.

← Getting foundRead the whole edition →
Shlink: a URL shortener you run. Short links on a domain you control.

5.3k stars · MIT · v5.1.6 (2026-09-06) · Track this in Rising ↗

The short link in the YouTube description, and the only honest answer to 'did that video do anything?'

Verified27 Oct 2026

Radar check

What we found when we opened it. Every bar is one fact, with its date.

Alive100

Last code pushed 24 Oct 2026, 3 days before this check.

Releases100

Latest release v5.1.8 on 21 Oct 2026.

Maturity100

Public since April 2016, a little over 10 years.

Adoption75

5,373 stars and 438 forks.

Activity65

50 commits and 24 new issues in the last 90 days.

Community60

27 contributors. 13 pull requests merged in 90 days.

Security80

A security policy says how to report a problem. No published security advisories.

Licence MIT | [shlink.io](https://shlink.io): permissive: use it for anything, keep the noticeSetup effort 3 of 5Payoff 4 of 5
How the bars are scored
  • Alive. Days since the last code push: a week or less 100, a month 90, three months 70, six months 50, a year 30, eighteen months 15, older 0.
  • Releases. Age of the latest GitHub release, on a similar scale; no bar when the project publishes no releases.
  • Maturity. Age of the project: eight years 100, five 90, three 70, two 55, one 40, six months 25, younger 10.
  • Adoption. Stars on a log scale: 100,000 stars is 100, 10,000 is 80, 1,000 is 60, 100 is 40.
  • Activity. Commits in the last 90 days: 300 or more 100, 100 85, 30 65, 10 45, any 25.
  • Community. People who have contributed: 100 or more 100, 30 80, 10 60, 5 40, 2 25, one 10.
  • Security. A published security policy 80, none 40; published advisories are listed, not scored.

Checked by Repo Radar on 27 Oct 2026 from the repository on GitHub. Covered in Edition 10.

▶Repo detailsthe review · specs · pros & cons · install

What it does

It serves short links from a domain you control. Every visit is recorded, so each link has its own count. There are two ways to drive it. The REST API — a web interface that other programs call — is fully documented and has a sandbox listing every endpoint. The command line is run as bin/cli, and every command accepts --help. The two cover mostly the same operations, with one exception: API keys can only be created from the command line, or by setting an environment variable at first start. It works with MySQL, MariaDB, PostgreSQL, Microsoft SQL and SQLite. What it does not do is run on an old PHP installation: the README requires PHP 8.4 or 8.5, plus the json, curl, pdo, intl, gd and either gmp or bcmath extensions.

Why it matters

Who it suits. Anyone publishing links in places that report nothing back — video descriptions, printed material, slides, a podcast note — who wants to know which of them worked. It also suits anyone who would rather not hand visit data to a third-party shortening service. Skip it if every link already lands on a page with its own analytics and the source is already recorded; this adds a count you can then compare.

Verdict. The least risky attribution tool of its kind: MIT licensed, mature at version 5.x, and releasing steadily, with 5.1.7 on 21 September 2026 after 5.1.6 on 6 September. Three practical notes. It is a PHP and Symfony application, which is a separate upgrade job from everything else on a machine. The administration interface is a second project you also host, because the core is API and command line only. And a short domain needs its own DNS and TLS certificate, and it needs guarding, because an open shortener gets abused and then blocked, which would take every published link down at once. dubinc/dub at 24,864 stars is the larger alternative with a much bigger application to host.

Stars5.3k
LicenceMIT
Latestv5.1.6 (2026-09-06)checked 7 Sep 2026
Written inPHP
NeedsDocker, PostgreSQL and MySQL
Summary (Key Points)from the README
Key features
  • Own domain: Serves shortened URLs under a domain you control, as a PHP self-hosted app.
  • Multiple databases: Works with MySQL, MariaDB, PostgreSQL, MicrosoftSQL or SQLite, each with its matching pdo driver.
  • Command line: The `bin/cli` entry point exposes all commands, and each one accepts `--help`/`-h` for its options.
  • REST API: Offers a full API with a sandbox portal that documents every endpoint.
  • Web client: A ready-made web client can be used directly or hosted by you.
  • API key management: Keys are created and managed from the command line only, via `bin/cli api-key:generate`.
  • Docker image: An official image lets you run a container configured through environment variables.
  • RabbitMQ integration: Optional, provided the sockets and bcmath extensions are installed.
Ways to install
Platform or methodWhat it needsEffort
Dist file (pre-bundled zip)PHP 8.4 or 8.5 with json, curl, pdo, intl, gd, gmp/bcmath, plus a database and its pdo driverLow: download the `shlink*_dist.zip` matching your PHP version, then decompress
Building from sourcesGit, Composer, and the ability to run `./build.sh <version>`Higher: clone, install Composer, build, then decompress the generated dist file
Docker imageA Docker host and env vars for custom configLow to moderate: the README points to the docs for usage details
Important
  • PHP and extensions: PHP 8.4 or 8.5 is required, along with the listed extensions. apcu is recommended unless you use RoadRunner.
  • Database setup: For MySQL, MariaDB, PostgreSQL or Microsoft SQL Server, you must create an empty database beforehand.
  • Write permissions: The data directory needs recursive write permissions because Shlink caches information there.
  • Installer location: `vendor/bin/shlink-installer` must be run directly on the server that will host Shlink, not before uploading it there.
  • API key first: Generate an API key before using the API, since it is needed for every interaction.
  • Dev setup: Running in development mode and contributing are covered in the CONTRIBUTING doc, not in the README.
  • Attribution: The project includes GeoLite2 data created by MaxMind, and the README carries a notice for it.

Written by an AI model from the project’s README; not part of the review, and it can be wrong.

Setup effort
3 / 5
Payoff
4 / 5
Good
  • MIT licensed and mature, with releases every few weeks.
  • A documented web API, so links can be created by a script rather than by hand.
  • Works with five different databases, including SQLite for a small install.
Watch for
  • PHP 8.4 or 8.5 and six extensions, which is a stack many teams do not otherwise run.
  • The administration interface is a separate project to host; the core has no web interface.
  • A short domain needs its own DNS and certificate, and an unguarded shortener attracts abuse.
Works well with

Pull visit data via the REST API into research.db beside the yt-dlp (Ed.6 #4) video metadata, and "video → clicks → signups" becomes a single SQL join.

Install
docker run \
  --name my_shlink \
  -p 8080:8080 \
  -e DEFAULT_DOMAIN=s.example.com \
  -e IS_HTTPS_ENABLED=true \
  -e GEOLITE_LICENSE_KEY=your_geolite_key \
  shlinkio/shlink:stable
Screenshots
shlinkio/shlink: GitHub preview cardshlinkio/shlink: Screenshot 1

On Stack Radar: Marketing & Growth › Conversion & Growth Analytics › Funnels & CRO.

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.