8 min czytaniaPorównania

Elido vs Kutt: Self-Hosted Kutt or Managed EU Shortener

Elido vs Kutt compared from Kutt's repo and Elido's product: licence, stack, analytics, custom domains, teams and upkeep, with a fair verdict on each.

Ana Kowalska
Marketing solutions engineering

Kutt is a free, MIT-licensed URL shortener you run on your own server. Elido is a hosted shortener with its primary data in the EU, and it isn't open source. So the real choice in Elido vs Kutt is simple. Do you want to operate a shortener, or pay someone else to? Need the code on your own hardware? Then Kutt wins, and Elido isn't an option at all. If you'd rather not patch Node, renew certificates and run backups, Elido does that part.

I'm on the Elido team, so read the verdict with that in mind. Every Kutt fact below comes from Kutt's README and source code, accessed 2026-11-11.

Kutt and Elido at a Glance

Under the hood: a Node.js app with server-rendered views (htmx and Handlebars since v3) that stores links in SQLite by default. Its GitHub repository had 11,204 stars on 2026-11-11, the latest release was v3.2.6 on 2026-07-05, and the last commit landed on 2026-10-19. Maintained, then, though not on a fast release cadence. For the wider field of tools you can download, our self-hosted URL shorteners comparison sets it beside YOURLS and Shlink (plus Dub and Polr), while the cornerstone URL shorteners for marketers covers the hosted side.

QuestionElidoKutt
LicenceProprietary, hosted onlyMIT
Where it runsElido's hosted service, primary data in the EUYour server (Node.js 20+), or the public kutt.to
DatabaseManaged for youSQLite default; Postgres or MySQL/MariaDB optional
Custom domains and HTTPSYes; certificate issued after the DNS checkYes; certificates are yours to issue
Click statsCountries, devices, browsers, referrers, per link and workspaceBrowser, OS, country, referrer per link
Password and expiryYesYes
Team modelWorkspaces with seats and roles; SSO and SCIM on BusinessUsers plus an admin page
WebhooksYes, on Pro and BusinessNot in the README
CostFree plan, paid plans in EURFree software; you pay for hosting and time

Two rows go to Kutt outright: licence and cost. If those decide it for you, stop here.

What Running Kutt Actually Involves

Starting it is easy. The README promises zero configuration and no build step, and the only setting it calls required for production is JWT_SECRET. Clone, npm install, npm run migrate, npm start, and the first visit prompts you to create an admin account. With Docker it's one docker compose up, and the repo carries extra Compose files for Postgres or MariaDB, each with Redis.

The work starts later. A shortener that's been running for a year has links on posters and in old emails. None of them can break. That means four ongoing jobs:

  • Certificates. For custom domains, Kutt's own config table says it's on you to generate SSL certificates manually, at least in this version. In practice you put a reverse proxy with ACME in front and keep it renewing.
  • Mail. Sign-ups, email verification and password resets need an SMTP server (MAIL_ENABLED). With mail off, registration stays off too.
  • Backups. The default SQLite file is a single file on a volume. Copy it somewhere else on a schedule, or move to Postgres and back that up.
  • Upgrades. Node major versions, Kutt releases and their migrations.
Three-column diagram: what you run when you self-host Kutt, what Elido runs as a hosted service, and what you still do yourself with Elido

None of that is hard for someone who already runs servers. The catch is that it's yours forever. The typical way a team finds out its shortener's certificate has lapsed is the worst one: somebody scans the QR code on their own trade-show banner, on the stand, on the first morning of the show, and gets a full-page browser warning instead of the product page. That is the failure mode to plan for.

Where Kutt Is the Better Choice

Several things are done well here, and some of them Elido doesn't do at all.

It's yours. The MIT licence lets you fork it, change the views and ship it inside your own product. A custom folder takes your own CSS and images, even replacement Handlebars views, and there's an official theme to copy from. Elido can't be forked or self-hosted, so if data has to sit on hardware you control, the comparison ends in Kutt's favour.

It's light. One Node.js process and a SQLite file will serve a team's internal links on a small VPS. Redis is optional. There's no click pipeline or message queue to run.

It has OIDC login. You can point Kutt at your identity provider and even turn off the email-and-password form (DISALLOW_LOGIN_FORM). On Elido, single sign-on sits in the Business plan. A small team that wants SSO pays more with us.

It has the small conveniences people like: official Chrome and Firefox extensions, a ShareX integration, an Alfred workflow, and a list of community API clients in Go, Python, Ruby, Rust and .NET. Admins can also ban a user or a whole domain from the admin page, which matters if you open sign-ups to the public.

Analytics: Kutt Stats vs Elido Reports

Each visit in Kutt is stored with four attributes: browser, operating system, country, referrer host. Country comes from a Cloudflare header when present, otherwise from a local GeoIP lookup. The stats page groups those by period, from the last day up to the last year. For "is anyone clicking this link, and from where", that's enough.

Elido stores more per click and lets you slice it across a whole workspace. Per link you see clicks over time and top destinations, then countries, devices and browsers. Across links you get the same views by campaign, plus conversions if you send them back. The screenshot below is a demo workspace with synthetic data.

Elido per-link analytics in a demo workspace: 30-day click chart, top destination, top countries, devices and browsers for one short link

Demo workspace with synthetic example data, not customer results.

The difference that matters most isn't the chart. Scale is. Visits sit in the same database as links, and the stats query walks every visit row for that link each time someone opens the page, unless Redis happens to have a cached copy from a recent request. That's a fine design for internal tools. It gets slow for a link that's been printed on a million packages. Our analytics feature page describes what Elido keeps and for how long.

Teams, Domains and Integrations

Kutt's README lists an admin page to manage users and links. It doesn't describe shared workspaces, per-team domains or roles beyond admin, so a team either shares one account or each person keeps separate links.

Our side is built around workspaces. Pro plans include 3 to 10 seats depending on size, an audit log, and webhooks for click and link events. Business adds SSO and SCIM provisioning (see SSO and SCIM) and custom roles. The REST API is on every plan, including Free. Official SDKs are built: the Go SDK is published (github.com/elidoapp/elido-go), and the TypeScript, Python and Ruby releases are in progress.

On domains, both let you bring your own. Kutt's settings page shows the IP or CNAME to point at. HTTPS is your job. Elido checks DNS and then issues the certificate itself, which is the part that hurts once you manage a dozen client domains. How that works is on the custom domains page.

Prices, read 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 for 250 links, one branded domain and three seats; Business starts at 70 EUR a month. If running a server is the part you want to stop doing, compare the plans against what your Kutt box costs in hours.

Moving Between Kutt and Elido

Going from Kutt to Elido is a CSV job. Export your links (the Kutt API lists them), map each row to a destination plus an optional slug and title, then use the CSV import in Elido's dashboard. Bulk import and custom slugs need a Pro or Business plan. There's no one-click Kutt importer; ours cover five hosted vendors (Bitly, Rebrandly, Short.io, TinyURL, Dub). Click history stays behind, so archive the stats first.

Keep the custom domain. Add it to Elido, let the certificate issue, then switch the DNS record. Printed links keep working because the slug and domain didn't change. Links on the shared kutt.to domain can't move, since you don't own that domain.

One more route is worth knowing. If you'd rather stay self-hosted and just swap tools, Shlink can import short URLs from Kutt or YOURLS, as well as Bitly or a CSV file from its command line.

Verdict: Who Should Pick Which

Pick Kutt if the shortener has to run on your own infrastructure, if you want to change its code or look, or if you have someone who already runs Node services and is happy to own certificates and backups. Well kept, honest, and the price is right.

Pick Elido if nobody on your team wants that job, if you need per-workspace roles with webhooks and an audit log, or if certificates for many customer domains are the thing breaking. Your data sits with us in the EU rather than on your server, and our EU data residency guide lists what that does and doesn't cover.

If you're still weighing self-hosted options against each other, Elido vs YOURLS covers the PHP veteran, the YOURLS alternatives roundup lists every route out of it, and the cornerstone on URL shorteners for marketers maps the hosted field.

Najczęściej zadawane pytania

Is Kutt free to self-host?

Yes. Kutt is MIT-licensed, so you can run, modify and redistribute it at no cost. You pay for the server, the database if you move off SQLite, an SMTP service if you want sign-ups, and the hours someone spends on upgrades, backups and certificates.

What do I need to run Kutt?

Per its README (accessed 2026-11-11), Node.js 20 or newer. SQLite is the default database, Postgres or MySQL/MariaDB are options, and Redis is an optional cache. A JWT_SECRET is the only required setting in production. The repo ships Docker Compose files for SQLite, SQLite plus Redis, Postgres and MariaDB.

Does Kutt support HTTPS on custom domains?

It supports custom domains, but certificates are yours to issue. The README's CUSTOM_DOMAIN_USE_HTTPS setting leaves certificate issuance for those domains to you, done by hand. Most people put a reverse proxy with ACME support in front of Kutt for that.

Is Elido an open-source alternative to Kutt?

No. Elido is a hosted service and is not open source: the code has no public licence and there is no self-hosted edition. If you must run the shortener on your own servers, pick Kutt, Shlink or YOURLS. Elido fits teams that would rather not run one at all.

Can I move my links from Kutt to Elido?

Yes, through Elido's CSV import on a Pro or Business plan (bulk import, custom slugs and branded domains aren't on Free). It takes a destination URL plus an optional slug and title per row. Elido has no one-click Kutt importer. Click history does not move, so archive Kutt's stats first, and keep the same custom domain so printed links keep working once DNS points at Elido.

Which is better, Kutt or Shlink?

Kutt if you want a web dashboard with sign-ups, OIDC login and themes in one Node.js app. Shlink if you want an API-first PHP service with rule-based redirects and built-in importers, and you are happy to run its web client as a separate app. Both are MIT-licensed and actively maintained.

Wypróbuj Elido

Wklej URL, otrzymaj krótki link

Bez rejestracji. Link działa 30 dni. Zarejestruj się, aby zachować go na zawsze.

Bez rejestracji. Załóż darmowe konto i korzystaj z 50 linków miesięcznie.

Wypróbuj Elido

Skracarka URL hostowana w UE: własne domeny, głęboka analityka i otwarte API. Darmowy plan - bez karty kredytowej.

Tagi
elido vs kutt
kutt alternative
kutt url shortener
self-hosted url shortener
kutt vs shlink
managed url shortener eu

Czytaj dalej