6 min de lectureComparaisons

Elido vs Shlink: Self-Hosted PHP or Hosted EU Shortener

Elido vs Shlink, from Shlink's docs and Elido's product: licence, stack, redirect rules, visit data, QR codes, upkeep, and who should run which one.

Marius Voß
DevRel · edge infra

Shlink is an MIT-licensed PHP shortener you run yourself, built API-first with the web interface as a separate app. Elido is a hosted shortener with its primary data in the EU, and its code isn't open source or available to self-host. In Elido vs Shlink, then, the first question isn't features. It's whether the service has to run on your infrastructure. If yes, Shlink, and it's one of the best-maintained projects you can pick. If no, the rest of this post is about what you'd be signing up to operate.

Disclosure: I work on Elido. Facts about the project come from Shlink's documentation and its GitHub repository, accessed 2026-11-11.

Shlink's architecture page explains the design plainly. The server is an API plus the redirect endpoint, with a CLI next to it. User permissions and any UI live in consumers of that API, the main one being shlink-web-client, a progressive web app you can host or open at app.shlink.io. The upside is a small, single-process container that behaves the way Kubernetes expects. The cost, which the docs admit, is that running it on shared hosting is awkward.

The project is busy. Version 5.1.8 shipped on 2026-10-21, the default branch had a commit on 2026-11-11, and the repository had 5,421 stars that day. It needs PHP 8.4 or 8.5.

Elido is the opposite shape: one hosted product with a dashboard, and a REST API on every plan, described by an OpenAPI 3.1 spec (of the official SDKs, only Go is published so far). You don't deploy anything. For a wider map of what you can download, see our self-hosted URL shorteners comparison; for the hosted market, the cornerstone on URL shorteners for marketers.

Diagram of a Shlink deployment: the Shlink server with REST API and CLI, the separate web client, the database and GeoLite2 key, and optional event services, next to Elido as one hosted service

The table sticks to things each side documents. Where a row says "no", I looked for it in the docs and didn't find it.

QuestionElidoShlink
LicenceProprietary, hosted onlyMIT
Where it runsElido's service, primary data in the EUYour server or container platform
DatabaseManaged for youMySQL, MariaDB, PostgreSQL, SQL Server; SQLite for tests
Web interfaceBuilt inSeparate app (shlink-web-client)
Redirect rule conditionsCountry, device, browser, OS, language, user-agent, timeLanguage, query param, device, IP or CIDR, country, city
A/B variantsYes, weighted or round-robin (Pro and Business)No
Visitor geolocationIncludedNeeds a free MaxMind GeoLite2 licence key
QR codesDesigner with styles, logo, PNG and SVG/qr-code endpoint, deprecated since 4.5.0
Event deliveryWebhooks (Pro and Business)Mercure, RabbitMQ or Redis pub/sub
ImportersBitly, Rebrandly, Short.io, TinyURL, Dub; CSV on paid plansBitly, YOURLS, Kutt, Shlink, CSV
CostFree plan; paid plans in EURFree software; you pay for hosting and time

More of this table goes to Shlink than a vendor page usually admits. Licence and cost. IP and query-parameter rules. Importers from other self-hosted tools.

That's a real list.

If you need control, Shlink gives you more of it than any other open-source shortener I've read through.

The redirect rules are good. Since 4.0, a short URL can carry an ordered list of rules, each with conditions that all have to match: language, a query parameter (with or without a value), device type, an IP address or CIDR range, and country or city from geolocation. Elido can't route on an IP range or a query parameter, so if your use case is "employees on the office network go to the intranet page", Shlink does it and we don't. The rule-based redirects docs list the conditions.

Privacy defaults are careful. By default, only an anonymised version of the visitor's IP is stored unless you opt out, and you can switch off IP, referrer or user-agent tracking separately, or tracking altogether. It also records orphan visits (hits on the base URL, invalid short codes and plain 404s) and flags potential bots by user agent.

Integration is flexible. Real-time updates go out through a Mercure hub, RabbitMQ or Redis pub/sub, and visits can be forwarded to Matomo. API keys can be limited to the links they created or to one domain. One web client manages several Shlink servers at once.

And migration in is easy. The CLI imports from Bitly, YOURLS, Kutt, a CSV file or another Shlink instance, and can be re-run without duplicating links.

What You Take On When You Run It

The software is straightforward. It's still a service with dependencies, though, and several are easy to miss on day one.

You need a real database. The docs are direct that SQLite isn't supported for production, so plan for one of the four server databases and its backups. Geolocation needs a MaxMind account and a GeoLite2 licence key; without one, visits aren't located at all. Real-time updates only work under RoadRunner, which the Docker image uses. The UI is a second app to deploy or trust from app.shlink.io. And HTTPS for your short domains sits with the reverse proxy you put in front.

None of this is a criticism. Call it the normal bill for running your own redirect tier. One addition: set up monitoring of the redirect path itself, not just the container. The /rest/health endpoint is there for that. A shortener that's down breaks every link you've ever printed, and the people who notice first are customers, not your dashboards.

Two places where the hosted product does more, as a matter of fact rather than taste.

QR codes first. A Shlink server can still return a QR image for any short URL, but its own docs mark the feature deprecated from 4.5.0. Elido has a QR designer with module and eye styles, colours, a logo, PNG or SVG export, plus a GS1 Digital Link mode for packaging. The screenshot is our demo workspace.

Elido QR code designer in a demo workspace with rounded modules, rounded eyes, colour fields and PNG or SVG download buttons

Routing. Elido's smart links match on country, device, browser, OS, language, a user-agent pattern and a time window, and they add A/B variants with weighted or round-robin rotation. No variants or time rules on their side; no IP or query-parameter conditions on ours. Smart links and variants are on Pro and Business.

Pick by the rule you actually need, not by the longer list.

The rest is team plumbing: workspaces with seats, an audit log and webhooks on Pro, SSO and SCIM on Business. Prices from Elido's billing catalogue on 2026-11-11: Free is 50 links and 500 clicks a month with no branded domain, Pro starts at 3.50 EUR a month, Business at 70 EUR. If the server is the part you want gone, see the plans.

Choose Shlink if the shortener must live on your infrastructure, if you want an API-first service you script against, or if you need IP-range or query-parameter routing. The project is actively developed, the docs are honest about trade-offs, and the MIT licence asks nothing of you. Of the self-hosted options, I'd put it first for engineering teams.

Choose Elido if nobody wants to own the database, the GeoLite2 key, the proxy and the web client, if your marketing team needs a dashboard and QR designer without a second deploy, or if A/B variants and time rules matter more than IP rules. Your data lives with us in the EU, and the EU data residency guide spells out what that covers and what it doesn't.

Comparing Shlink with a Node option instead? Our Elido vs Kutt post covers Kutt's trade-offs, and Elido vs YOURLS covers the PHP veteran.

Questions fréquentes

What is Shlink?

Shlink is an MIT-licensed, self-hosted URL shortener written in PHP. It is API-first: the server exposes a REST API and a command line, and the web interface is a separate app (shlink-web-client) that you either host yourself or open at app.shlink.io in the browser.

Does Shlink have a web interface?

Not inside the server. Shlink's architecture page says the server treats any user interface as an external consumer. The official shlink-web-client is a separate progressive web app that talks to one or more Shlink servers with an API key, and it can manage several instances from one screen.

What database does Shlink need?

MySQL, MariaDB, PostgreSQL or Microsoft SQL Server for production. Shlink also runs on SQLite, but its docs say SQLite in production is not officially supported and is meant for quick tests. The Docker image includes drivers for all of them, except the SQL Server driver on ARM.

Is Elido an open-source alternative to Shlink?

No. Elido is a hosted service only. Its code has no public licence and there is no self-hosted edition, so if the shortener must run on your own servers, Shlink is the better choice. Elido suits teams that would rather not operate one and are fine with data held by us in the EU.

Can Shlink generate QR codes?

Yes, by appending /qr-code to a short URL, with size, margin, format and error-correction options. Shlink's own docs mark QR generation as deprecated since version 4.5.0, though, so plan for another QR tool if printed codes matter to you.

Can I import links into Shlink or Elido?

Shlink's command line imports from Bitly, YOURLS, Kutt, another Shlink instance or a CSV file, and it can bring visits along for some sources. Elido has one-click importers for Bitly, Rebrandly, Short.io, TinyURL and Dub, plus CSV import on Pro and Business; click history from other tools does not carry over.

Essayer Elido

Collez une URL, obtenez un lien court

Sans inscription. Lien actif 30 jours. Inscrivez-vous pour le garder pour toujours.

Sans inscription. Créez un compte gratuit pour 50 liens par mois.

Essayer Elido

Raccourcisseur d'URL hébergé en UE : domaines personnalisés, analyses approfondies et API ouverte. Forfait gratuit - sans carte bancaire.

Tags
elido vs shlink
shlink alternative
shlink url shortener
self-hosted link shortener
api-first url shortener
shlink vs yourls

Lire la suite