comparisonself-hostedurl shortenershlinkyourlskutt

Self-Hosting a URL Shortener vs Codelloy: The Real Monthly Cost

Codelloy TeamMay 27, 2026

Self-Hosting a URL Shortener vs Codelloy: The Real Monthly Cost

If you've looked at link-shortener pricing and thought "I could just self-host this for free," you're not wrong — and you're not right either. Open-source shorteners like Shlink, YOURLS, and Kutt are genuinely good software. But "free" software still runs on servers someone has to pay for and maintain.

This is an honest accounting of what self-hosting actually costs per month on GCP or AWS, where it genuinely beats a managed tool like Codelloy, and where the numbers stop telling the whole story.

Cloud-infra figures below are modeled estimates (±25%) from each tool's stack and cloud list pricing as of May 2026. Check the live GCP/AWS calculators for your exact region and instance choices.


First, the honest part: at high volume, self-hosting is cheaper

Let's not bury it. If all you need is to shorten a lot of URLs and you have spare ops capacity, self-hosting wins on raw cost. A single Shlink box can push 100,000+ links a month on a $30–50 VM — no per-link metering, no plan tiers.

So if you're a developer who values your own time at zero, or you're running tens of thousands of pure redirects with no need for mobile routing or deep analytics, self-hosting is the cheaper line item. Full stop.

Now the rest of the story.


What each tool needs to run

The three popular self-hosted options have different footprints:

| Tool | Stack | Minimum footprint | |------|-------|-------------------| | YOURLS | PHP + MySQL | One small VM, DB co-located | | Shlink | PHP 8 (RoadRunner/Swoole) + MySQL/PostgreSQL | One medium VM + DB | | Kutt | Node.js + PostgreSQL + Redis | One medium VM + Postgres + Redis |

YOURLS is the lightest. Kutt is the heaviest — three moving parts to keep alive.


Scenario A — hobby / single box

One VM, database co-located, no redundancy, no managed backups, you are the on-call:

| Tool | Infra / month | |------|---------------| | YOURLS | ~$13–18 | | Shlink | ~$25–30 | | Kutt | ~$25–30 |

This is the "it's basically free" tier people imagine. It's real — but it's a single point of failure with no backups and no one to page when it falls over at 2am.

Scenario B — actual production

Managed database, load balancer, HTTPS, automated backups, a setup you'd trust with real campaign links:

| Tool | Infra / month | |------|---------------| | YOURLS | VM $25 + managed MySQL $30 + LB $18 → ~$80–95 | | Shlink | VM $27 + managed PG $35 + LB $18 → ~$90–110 | | Kutt | VM $27 + managed PG $35 + Redis $35 + LB $18 → ~$115–135 |

One reassuring note: bandwidth isn't the killer. Redirects are a few hundred bytes each, so even a million redirects is well under 1 GB of egress — pennies. The cost is compute, the managed database, and (for Kutt) Redis.


The bill you don't see

Here's the line item that never appears on a cloud invoice: your time.

  • Setup: 4–20 hours depending on the tool and how much you customize.
  • Maintenance: security patches, version upgrades, monitoring, and the occasional incident — call it 2–5 hours a month, every month, forever.

At a blended $50–100/hour, that's $100–500/month of labor that's invisible until you account for it. A self-hosted shortener isn't a "set it and forget it" — it's a small service you now own, including its CVEs.

For comparison, here's Codelloy's managed pricing (EUR, ~$ at €1≈$1.16):

| Plan | Links / month | Price | |------|---------------|-------| | Free | 20 | €0 | | Pro | 10,000 | €49 (~$57) | | Business | 100,000 | €199 (~$232) |

Put those side by side with Scenario B: Pro at ~$57/month already undercuts a production self-host ($80–135 infra) before you add a single hour of labor. The "free" option is more expensive than the paid one the moment you run it properly and value your time honestly.


The part cost can't capture: what you can't self-host

Even if the economics favored self-hosting in your case, there's a capability wall. None of the three open-source tools do mobile app routing the way a deep-linking platform does:

| Capability | Codelloy | Shlink | YOURLS | Kutt | |------------|--------------|--------|--------|------| | Custom slugs & domains | ✓ | ✓ | ~ | ✓ | | REST API | ✓ | ✓ | ~ | ✓ | | Deep linking (Universal/App Links) | ✓ | ✗ | ✗ | ✗ | | Auto AASA / assetlinks.json | ✓ | ✗ | ✗ | ✗ | | App → Store → web fallback | ✓ | ~ (manual) | ✗ | ✗ | | Geo / device analytics | ✓ | ✓ | ~ (plugin) | ~ (basic) | | QR-scan analytics | ✓ | ✗ | ✗ | ✗ | | Metadata / link preview control | ✓ | ✗ | ✗ | ✗ | | Zero-ops (managed) | ✓ | ✗ | ✗ | ✗ | | SLA / vendor support | ✓ | community | community | community |

native · ~ plugin / manual / partial · none

"But Shlink has device redirects"

It does, and it's worth being precise about. Shlink 4.0's dynamic rule-based redirects can send Android, iOS, or different countries to different long URLs. That's useful — but it's not deep linking. You hand-author a destination URL per rule, per link. There's no Universal Links / App Links handshake, no auto-generated AASA or assetlinks.json, no deferred deep linking that survives an app install, and no automatic app→store→web fallback chain.

In other words: Shlink gives you manual per-link device branching. A deep-linking platform gives you app routing as a feature. If you have a mobile app, that difference is the whole game.


Quick read on each tool

  • Shlink — the strongest self-host option. Real REST API, CLI, SDKs, multi-domain, native QR codes, GeoLite2 geolocation. No real deep linking, no QR-scan analytics, and you run it.
  • YOURLS — a lightweight PHP core where almost everything beyond the basics (QR codes, geolocation, password protection) is a community plugin of varying maintenance. Perfect for a personal bit.ly; not built for teams.
  • Kutt — the cleanest modern stack: custom domains, password-protected links, expiration, OIDC login, private stats. But no QR codes in core, no deep linking, and the heaviest infra of the three.

So who should self-host?

Genuinely, self-host if:

  • You only need pure URL shortening at high volume and per-link metering would hurt.
  • You have spare ops capacity and value the control / data residency.
  • You're a hobbyist or solo developer and your time isn't a billable cost.

Choose a managed platform like Codelloy if:

  • You have a mobile app and need links to route into it — no self-hosted tool does this properly.
  • You want real analytics (geo, device, referrer, QR scans), not just click counts.
  • You'd rather not own a service's security patching, uptime, and 2am incidents.
  • You count your team's time honestly — in which case Pro already costs less than running it yourself.

The fairest summary: self-hosting isn't cheaper, it's a different bill. You trade a predictable monthly subscription for cloud costs plus your own engineering time plus the capability ceiling of a URL shortener. For a lot of teams — especially anyone with an app — that trade doesn't pay off.

See Codelloy's pricing → · Compare the managed alternatives →

Ready to get started?

Create smart links and QR codes that drive results.

Start Free Trial