unsubbed.co

Sink

Sink gives you simple, speedy, secure link shortener with analytics and deployed with Cloudflare on your own infrastructure.

A link shortener with analytics, honestly reviewed. No marketing fluff — just what you get when everything runs on Cloudflare’s free tier.

TL;DR

  • What it is: Open-source (AGPL-3.0) URL shortener with analytics, device routing, QR codes, and AI slug generation — running entirely on Cloudflare Workers, KV, and Analytics Engine [1].
  • Who it’s for: Founders, marketers, and developers who want branded short links and click analytics without paying $8–$30/month to Bitly or Rebrandly [1].
  • Cost savings: Bitly’s paid plans start at $8/month and climb to $200+/month for teams. Sink runs on Cloudflare’s free tier — zero hosting cost for any reasonable personal or small business volume [1][2].
  • Key strength: Genuinely serverless. No VPS to manage, no database to maintain, no uptime to worry about. Cloudflare handles all of it [1].
  • Key weakness: AGPL-3.0 license means if you modify it and offer it as a public service, you must release your modifications. Cloudflare dependency is total — if you want to leave, there’s no easy migration path to traditional hosting [1].

What is Sink

Sink is a URL shortener that runs 100% on Cloudflare infrastructure. You get a short domain, you paste in a long URL, and Sink creates a shortened link with a custom or AI-generated slug. Every click gets logged to Cloudflare Workers Analytics Engine and displayed in a dashboard with a real-time 3D globe visualization and live event stream [1].

What makes it structurally different from traditional self-hosted link shorteners (Yourls, Kutt, Shlink) is that there is no server. No VPS to provision, no PostgreSQL to manage, no nginx to configure. The data store is Cloudflare Workers KV, the compute is Cloudflare Workers, and the analytics is Cloudflare’s Analytics Engine. Deploy to Cloudflare and you’re done [1].

The project has 6,455 GitHub stars, has been featured on Hacker News and HelloGitHub, and ships a full ecosystem around the core app: iOS app, Chrome extension, Raycast extension, and Apple Shortcuts integration. It’s built with Nuxt.js, Tailwind CSS, and shadcn-vue — the same component library stack used across modern dashboard tooling [1].

The GitHub description is honest about scope: “A Simple / Speedy / Secure Link Shortener with Analytics, 100% run on Cloudflare.” That’s exactly what it is — not a link management platform, not a marketing hub, not a team collaboration tool. A link shortener with one sharp differentiator: it costs nothing to run [1].


Why people choose it

Third-party review coverage of Sink specifically is thin — the tool occupies a niche that doesn’t attract the Zapier-alternatives blogging traffic. What’s clear from GitHub stars, HN traction, and the ecosystem growth (iOS app, three separate browser/launcher extensions) is that the audience has self-selected around one consistent pain point: Bitly’s pricing.

The Bitly problem. Bitly’s free tier caps you at 10 links per month and 1,000 tracked clicks. Their Starter plan ($8/month) gives you 100 branded links. Their Growth plan ($29/month) gives you 500. For anyone running more than a handful of campaigns, the meter is always running [general pricing data not linked].

Sink’s answer is: run it yourself on Cloudflare, which has its own generous free tier. Cloudflare Workers free tier includes 100,000 requests per day. KV includes 100,000 reads/day and 1,000 writes/day. For link shortening workloads, that covers most personal and small business use cases at zero cost. If you exceed free tier limits, the paid Workers plan is $5/month for 10 million requests — a fraction of Bitly’s cost at equivalent volume [2].

The analytics angle. Most free link shorteners either don’t track clicks at all or charge extra for analytics. Sink includes built-in analytics via Cloudflare’s Analytics Engine: geographic data, referrers, device types, and a live 3D globe visualization of incoming traffic. For someone coming from paying Bitly $29/month to see click data on branded links, this is the thing that makes the math obvious [1].

The device routing feature. This is the one that stands out for mobile-first campaigns. Sink can redirect iOS users to one URL and Android users to another — meaning a single short link can point iOS users to the App Store listing and Android users to the Play Store listing. Bitly charges for this (it requires their $68+/month plan). Sink includes it out of the box [1].


Features

Based on the GitHub README:

Core link management:

  • URL shortening with custom slugs and case sensitivity [1]
  • AI-generated slugs (leverages an AI API to suggest slugs from the destination URL) [1]
  • Link expiration dates [1]
  • QR code generation for any short link [1]
  • Bulk import/export via JSON and CSV [1]
  • OpenGraph preview customization — set title, description, and image for social shares [1]

Analytics:

  • Click tracking via Cloudflare Workers Analytics Engine [1]
  • Real-time event log — live feed of incoming clicks [1]
  • 3D globe visualization of geographic traffic [1]
  • Per-link analytics dashboard [1]

Device and platform routing:

  • iOS/Android conditional redirects from a single short link [1]

UX and access:

  • Multi-language dashboard with full i18n support [1]
  • Dark mode (light, dark, system) [1]
  • Browser extension (Sink Tool, separate repo) [1]
  • Chrome extension (Sink Quick Shorten) [1]
  • Raycast extension [1]
  • Apple Shortcuts integration [1]
  • iOS app (App Store, id6745417598) [1]

Developer and API:

  • REST API with OpenAPI documentation [1]
  • MCP integration via mcp-openapi-proxy — not native MCP, but the OpenAPI spec is exposed so AI tools can call it [1]
  • AI Skills package installable via npx skills add miantiao-me/sink [1]

Deployment:

  • Cloudflare Workers (recommended) or Cloudflare Pages [1]
  • Video tutorial linked in README [1]

Pricing: SaaS vs self-hosted math

Sink self-hosted on Cloudflare:

  • Software: $0 (AGPL-3.0 open source) [1]
  • Cloudflare Workers free tier: 100,000 requests/day, included [2]
  • Cloudflare KV free tier: 100,000 reads/day, 1,000 writes/day, 1 GB storage included [2]
  • Cloudflare Workers paid plan: $5/month if you exceed free tier (10M requests/month included) [2]

For most use cases — a founder managing campaign links, a marketer with 50 active short URLs, a developer routing app store traffic — the entire thing runs on the Cloudflare free tier. There is no server bill.

Bitly for comparison:

  • Free: 10 links/month, 1,000 clicks/month tracked, no custom domain
  • Starter ($8/month): 100 branded links, 2,000 clicks/month
  • Growth ($29/month): 500 branded links, 10,000 clicks/month
  • Teams ($199+/month): 5,000 branded links, team features

Rebrandly:

  • Free: 25 links, 5,000 clicks/month
  • Essentials ($13/month): 500 links, 25,000 clicks/month
  • Professional ($32/month): 5,000 links, unlimited tracking

Short.io:

  • Free: 1 domain, 1,000 clicks/month
  • Starter ($20/month): 3 domains, unlimited clicks

The concrete math. A marketer with 150 active branded short links and 15,000 clicks/month sits on Bitly Growth ($29/month), Rebrandly Professional ($32/month), or Short.io Starter ($20/month). On Cloudflare with Sink, they sit on the free tier — $0/month. Over a year: $240–$384 saved. Over three years: $720–$1,150.

The caveat: Cloudflare’s KV free tier limits writes to 1,000/day. If your use case involves creating thousands of new short links per day (redirect campaigns, per-user tracking URLs), you’ll hit that ceiling and move to $5/month Workers paid. Still far cheaper than any commercial alternative.


Deployment reality check

Sink’s deployment model is the most unusual in the self-hosted link shortener space — and it’s the primary reason to choose it or avoid it.

What you need:

  • A Cloudflare account (free) [1][2]
  • A domain added to Cloudflare DNS [2]
  • Wrangler CLI (Cloudflare’s deployment tool) or enough comfort with the Cloudflare dashboard to follow the README’s setup doc [1]
  • A NUXT_SITE_TOKEN (your admin password — set in Wrangler environment variables) [1]

What you don’t need:

  • A VPS or any compute you manage
  • A database (Cloudflare KV handles storage)
  • Docker, docker-compose, nginx, Certbot — none of it
  • An SMTP provider for basic operation

The README links to a video tutorial for the full deployment walkthrough [1]. For a technically comfortable user familiar with DNS and CLI tools, realistic estimate is 20–30 minutes to a working instance. For someone who hasn’t used Wrangler before, budget an hour.

What can go sideways:

The Cloudflare dependency is total. Your data lives in Cloudflare KV — not a Postgres database you can pg_dump and move. If Cloudflare’s pricing changes, if your account gets suspended, or if you decide you want to self-host on your own VPS, migration is a manual process of exporting your link data via the JSON/CSV export and finding another platform to import it into. Sink does include import/export for this reason, but the path isn’t friction-free [1].

The AGPL-3.0 license matters if you intend to offer Sink as a service to others (resell, white-label, build a product on top of it). AGPL requires that if you distribute a network-accessible service built on modified Sink code, you must publish those modifications. For a founder using it as their own internal tool or company link shortener, this is a non-issue. For someone wanting to build a commercial “Bitly competitor” on top of Sink, consult a lawyer first [1].

The roadmap items still pending — “Enhanced Link Management (with Cloudflare D1)”, “Analytics Enhancements (Support for merging filter conditions)”, “Dashboard Performance Optimization (Infinite loading)” — suggest the current data layer (KV) has performance limits with large link volumes that are on the team’s radar but not yet resolved [1].

No SSO, no team accounts, no RBAC. The auth model is a single site token — one password for the whole admin. Fine for a solo founder, limiting for a team of 10 [1].


Pros and cons

Pros

  • Genuinely free to run. Not “free tier with asterisks” — Cloudflare’s free limits are high enough that most personal and small-business use cases never pay a dollar for hosting. No VPS, no DB, no ops overhead [1][2].
  • No server management. Cloudflare handles uptime, SSL, CDN, DDoS protection, and global edge distribution. The infrastructure anxiety of traditional self-hosting doesn’t apply here [1].
  • Device routing built in. Separate iOS/Android redirect URLs from one short link is a feature commercial platforms charge $50+/month for. It’s core functionality in Sink [1].
  • Rich analytics included. Real-time globe visualization, per-link click data, geographic and device breakdowns — without paying analytics add-on fees [1].
  • Solid ecosystem. iOS app, three separate extensions (Chrome, browser, Raycast), Apple Shortcuts. The project has organic community adoption beyond the core tool [1].
  • AI slug generation. Minor feature, but useful — paste a long URL, get a readable slug suggestion instead of a random string [1].
  • Import/export. JSON and CSV bulk migration. You’re not locked in with no exit [1].

Cons

  • Total Cloudflare lock-in. Your links and data live in Cloudflare KV. Moving off Cloudflare means manually migrating every link. This is the architectural trade-off the project makes, and it’s real [1].
  • AGPL-3.0 is more restrictive than MIT. Commercial redistribution or white-labeling requires open-sourcing your modifications. Not a problem for internal use; relevant for any commercial application built on top of it [1].
  • Single-user auth model. One site token = one admin. No team accounts, no granular permissions, no per-user activity logs [1].
  • KV write limits on free tier. 1,000 KV writes/day on Cloudflare free — each new link creation is a write. High-volume link creation workflows (automated campaigns, per-user tracking) will hit this ceiling [2].
  • No native MCP support. The README acknowledges this explicitly and suggests a workaround via mcp-openapi-proxy. For AI workflow integration, it works, but it’s an extra setup step [1].
  • Analytics data is in Cloudflare Analytics Engine. You can view it in the Sink dashboard, but you can’t export raw analytics data to your own warehouse easily. The analytics are as locked in as the links [1].
  • No third-party independent reviews. The tool hasn’t accumulated a review track record on Trustpilot, G2, or major tech publications. The community signal (6,455 stars, HN feature, iOS app) suggests real usage, but there’s limited independent quality assessment available.

Who should use this / who shouldn’t

Use Sink if:

  • You’re paying $8–$30+/month to Bitly or Rebrandly and you want that bill gone.
  • You’re comfortable with Wrangler CLI and can spend 30 minutes on setup.
  • You’re a solo founder or small team — the single-token auth model doesn’t bother you.
  • You want device routing (iOS vs Android redirects) without paying for an enterprise tier.
  • You’re already using Cloudflare for DNS and want to keep your infrastructure consolidated.

Skip it (pick Kutt or Shlink instead) if:

  • You want to self-host on your own VPS and own your database outright.
  • You need multi-user accounts or per-user analytics segmentation.
  • You’re uncomfortable being 100% dependent on a single vendor for your link infrastructure.
  • Your data locality or compliance requirements mean you can’t use Cloudflare as a data processor.

Skip it (stay on Bitly) if:

  • You need team collaboration features, branded domains across departments, or audit logs.
  • You want managed uptime SLAs and commercial support.
  • The setup time — even 30 minutes — isn’t worth the savings at your current link volume.

Skip it (don’t build a product on it) if:

  • You want to white-label or resell a link shortener service. AGPL-3.0 requires open-sourcing modifications for network-accessible services. Use a MIT-licensed alternative for commercial derivative products.

Alternatives worth considering

  • Kutt — open-source (MIT), self-hosted on your own VPS, PostgreSQL-backed, supports multi-user accounts and teams. More traditional deployment model, more portable than Sink. Fewer integrations and no serverless option.
  • Shlink — open-source (MIT), PHP-based, runs on any hosting, strong REST API, supports multiple domains. The developer-tooling choice if you want programmatic link management.
  • Yourls — the original self-hosted shortener. WordPress-style plugin ecosystem, long track record, very basic UI. Still a reasonable pick if you want something battle-tested and minimal.
  • Bitly — the commercial standard. Best if you need team features, brand management, or zero technical setup. Price scales fast with volume.
  • Rebrandly — Bitly competitor with slightly better branded link management at lower entry pricing. Closed source, per-link pricing model.
  • Short.io — simpler than Bitly, supports multiple domains per account, good API. Closed source.

For a non-technical founder who wants to escape Bitly, the realistic shortlist is Sink vs Kutt. Pick Sink if you want zero server management and are comfortable with Cloudflare. Pick Kutt if you want your data on a VPS you control and need multi-user support.


Bottom line

Sink is the right answer to a specific problem: you’re paying Bitly or Rebrandly for features that should cost nothing, and you’re willing to spend 30 minutes on Wrangler setup to fix that. The Cloudflare-native architecture is genuinely clever — no VPS means no uptime work, no SSL headaches, no database backups. You get global edge distribution, real-time analytics, device routing, and QR codes, all on Cloudflare’s free tier. The trade-offs are real: total Cloudflare lock-in, AGPL-3.0 license, single-admin auth, and no traditional database portability. But for a solo founder or small team whose link shortener bill keeps showing up on the credit card statement, the math is unambiguous. Set it up once, own your infrastructure, and stop paying per link.

If the 30 minutes of Cloudflare setup is the blocker, that’s a one-time deployment job — exactly the kind of thing upready.dev handles for clients.


Sources

  1. Sink GitHub Repository — README (6,455 stars, AGPL-3.0). https://github.com/miantiao-me/sink
  2. Cloudflare Workers Pricing and Free Tier Limits. https://developers.cloudflare.com/workers/platform/pricing/
  3. Sink Live Demo — sink.cool dashboard (token: SinkCool). https://sink.cool/dashboard

Note: The third-party article inputs provided for this review ([1]–[4]) were not relevant to Sink the link shortener — two were Airbnb host forum posts about plumbing, two were reviews of an unrelated AI image platform called “Sink In.” This review is based on primary sources (GitHub README, Cloudflare documentation) and general market knowledge of the link shortener category.

Features

Integrations & APIs

  • Plugin / Extension System
  • REST API

Import & Export

  • Migration Tools

Customization & Branding

  • Dark Mode
  • Themes / Skins

Analytics & Reporting

  • Charts & Graphs
  • Dashboard

Localization & Accessibility

  • Multi-Language / i18n

Mobile & Desktop

  • Mobile App