Sink is a self-hosted, open-source link shortener that runs entirely on a Cloudflare account, pairing branded short links with built-in visit analytics. It suits individuals and small teams who already live on Cloudflare and want Bitly-style shortening on their own domain without running a server.[1][2]
Quick verdict
Individuals and small teams that already use Cloudflare will get the most from Sink. Its AGPL-licensed app covers custom slugs, per-link passwords and expiry, visit analytics with a near-real-time view, and a REST plus MCP API in one serverless deploy. The price is platform lock-in: links live in Cloudflare D1 and KV on your account, so teams avoiding Cloudflare or wanting zero-ops shortening should choose a different shortener or a managed service instead.[1][2][3]
Key features
Compress long URLs into short links on your own domain, with personalized slugs, UTM parameters, and optional case-sensitive matching.[1]
Monitor every link with built-in visit statistics, event logs, and a near-real-time dashboard view that polls every 10 seconds.[1][2]
Time-box, gate, and caution-flag links with per-link expiration dates, passwords, and unsafe-link warning pages.[1][2]
Deploy from your own fork to Cloudflare Workers, the recommended target, with Cloudflare Pages documented as deprecated.[1]
Store links in Cloudflare D1 as the authoritative database with Workers KV as a write-through redirect cache, adding Analytics Engine, R2, and Workers AI only as needed.[1]
Create and manage links programmatically through a REST API with per-instance OpenAPI, Scalar, and Swagger docs, plus an MCP server endpoint for AI agents.[1]
Move link libraries in and out with JSON import and export, and download access analytics as CSV for outside analysis.[1]
Optionally let Cloudflare Workers AI suggest short codes and generate OpenGraph metadata from page content.[1]
Who will love it
Cloudflare users who want branded short links will love it, because the app deploys into their existing account with no server to operate.[1][2]
Developers who automate publishing will love it, because the REST API, OpenAPI docs, and MCP endpoint make link creation programmable, including from AI agents.[1][2]
Privacy-minded operators will love it, because links and analytics live in D1 and KV on their own Cloudflare account behind their own site token.[1][2]
Who should avoid it
Teams avoiding Cloudflare should avoid it, because D1, KV, Workers, and the dashboard all assume a Cloudflare account under your control.[1][2]
Non-technical users with nobody to configure cloud resources should avoid it, because forking, creating bindings, and setting environment secrets remain operator work, and native SSO does not exist outside Cloudflare Access.[1][2]
Teams needing campaign attribution suites or vendor support should avoid it, because Sink documents per-link analytics rather than a marketing platform, and no support plan is published.[1]
Alternatives and compatibility
Sink replaces a hosted shortener subscription wherever a team can self-host on Cloudflare: the AGPL licence removes per-seat fees and custom slugs preserve branding, at the price of owning the Cloudflare setup.[1][2]
Dub is the closest comparable self-hosted option for teams not on Cloudflare, since it is also an open-source branded-link platform with analytics and an API, but campaign-attribution oriented where Sink is minimal and Cloudflare-native.[1]
Slite, Sink's sibling project from the same author, covers the same link-management workflows as a local Node.js and Docker process for operators who would rather run a container than use Cloudflare.[1]
Questions worth asking
How much does Sink cost per month?
The software itself costs nothing: it is AGPL-3.0-only with no paid edition, and the only documented sponsorship path is voluntary GitHub Sponsors. What you pay is your own Cloudflare usage on D1, KV, Workers, and any optional analytics, R2, or Workers AI resources, plus your domain. Prices checked October 12, 2026.[1][2]
Can you self-host Sink?
Is Sink really no-code?
Does Sink support SSO?
Not natively. Dashboard sign-in uses a shared site token by default, and SSO-style login with Google, email one-time passcodes, or corporate identity arrives only through the optional Cloudflare Access integration in front of the dashboard, while short links stay public either way.[1]
Sources and editorial review
Source research. Reviewed on October 12, 2026. Written by Sanjib Sah. AI assisted; reviewed by a human editor.
We have not run or tested this product.
- miantiao-me/Sink README (official repository)
official · Observed October 12, 2026
Official README: serverless link shortener with analytics running entirely on Cloudflare; bitly-alternative topics; AGPL-3.0-only licence; custom slugs with UTM and case options; optional Workers AI slugs and OpenGraph metadata; expirations, passwords, unsafe-link warnings; 10-second-polling near-real-time analytics; JSON import/export and CSV analytics export; REST API plus MCP server; Chrome extension; Nuxt 4 with D1 store, KV cache, Analytics Engine, R2 snapshots; individuals and small teams focus; Slite sibling Node.js/Docker version.
- Sink documentation home
official · Observed October 12, 2026
Docs home: self-hosted short-link app with visit analytics on Cloudflare, no VPS required. Workers or Pages deployment; D1 plus KV required with optional analytics, R2, and AI. Link controls cover expiration, passwords, warnings, tags, and device or country routing.
- Getting started - Sink docs
official · Observed October 12, 2026
Install path: fork miantiao-me/Sink, deploy via Workers (recommended; Pages deprecated) with Git builds. Required D1 and KV bindings; Analytics Engine recommended; R2 and Workers AI optional. NUXT_SITE_TOKEN is the operator-set dashboard password and API token.
- REST API - Sink docs
official · Observed October 12, 2026
Per-instance OpenAPI JSON plus Scalar and Swagger UIs. Bearer site-token auth matching NUXT_SITE_TOKEN, Access login accepted where enabled, same token for /api/mcp. Link, import/export, AI, analytics, and utility endpoint groups; optional CORS build flag.
- Cloudflare Access - Sink docs
official · Observed October 12, 2026
Optional Cloudflare Access integration: dashboard sign-in through company identity (Google, email OTP, SSO) instead of only the shared token; short links stay public. Sink verifies the Access JWT. No native built-in SSO.
Compared with these products
No explicit proprietary baseline is recorded.