Sink is a free, open source marketing & customer engagement project written in Vue and released under AGPL-3.0. It has 7,139 GitHub stars, 5,246 forks and 21 open issues, and was last pushed 3 days ago. On this registry it ranks #18 of 50 tracked projects in Marketing & Customer Engagement, with 5 head-to-head comparisons available. It gained 25 stars over the last 6 tracked days.

What is Sink?

Sink is a self-hostable URL shortener with built-in analytics that runs entirely on Cloudflare, built for individuals and small teams who want a simple, speedy, and secure way to manage their own links.

What it is

Sink is an open-source link shortener written in Vue and built on Nuxt 4, distributed under the AGPL-3.0 licence and deployed to Cloudflare Workers. It compresses long URLs into short ones and pairs that with a dashboard for monitoring link analytics, gathering statistics, and managing every link in one place. The stack is deliberately Cloudflare-native: Cloudflare D1 acts as the authoritative link store, Workers KV serves as a write-through read cache, Cloudflare Workers Analytics Engine collects analytics events, and Cloudflare R2 holds optional logical JSON snapshots. Drizzle ORM handles data access, while the interface is assembled from shadcn-vue components and Tailwind CSS. The dashboard and the redirect pages both carry full internationalisation support.

The concrete problem it solves is dependence on a hosted shortener for something that is really just a database of links and a redirect endpoint. The project carries the "bitly-alternative" topic precisely because the alternative it displaces is a third-party hosted service. Running Sink instead means the link table, the click events, and the analytics all live in the operator's own Cloudflare account rather than in someone else's product, and there is no traditional server to provision, patch, or pay for on a monthly schedule.

Key capabilities

  • URL shortening with customizable slugs, UTM parameters, and optional case-sensitive slug matching controlled through configuration.
  • Analytics dashboards backed by Cloudflare Workers Analytics Engine, including a live 3D globe and event logs driven by 10-second polling and client-side replay rather than SSE or WebSocket.
  • Link control covering expirations, passwords, and unsafe-link warning pages.
  • Smart routing that redirects visitors by device or by country.
  • Social preview customization with titles, descriptions, and images, plus QR code generation for short links.
  • Optional Cloudflare Workers AI assistance to generate slugs and OpenGraph metadata from page content.
  • Import and export of links as JSON, export of access analytics as CSV, and multi-language support across the dashboard and redirect pages.

Who uses it and how

  • Individuals and small teams who want a self-hosted shortener on Cloudflare, which the README names as the project's focus.
  • Operators who need link records and click analytics to stay inside their own Cloudflare account instead of a managed SaaS product.
  • People who shorten links away from the dashboard, using the Sink Tool browser extension, the Sink Quick Shorten Chrome extension, the Raycast extension, Apple Shortcuts, or the iOS app.
  • Teams serving audiences in more than one language, relying on the i18n support in both the dashboard and the redirect pages.
  • Anyone evaluating the project before committing, via the public demo at sink.cool/dashboard, reached with the site token SinkCool.

Getting started

Deployment is to Cloudflare Workers, which is the recommended path; Cloudflare Pages remains supported but is marked deprecated. Configuration and API details live in the documentation at docs.sink.cool, and a live Scalar API reference is published for the public demo instance.

How it compares

Among the tools named in the facts, Sink sits beside Bitly, the hosted shortener it is tagged as an alternative to, and S.EE, the managed offering the README points professional and business users toward. Sink occupies the self-hosted, single-operator slot between them: no managed service, no multi-user accounts, and no SLA, but also no third-party custody of link data and no recurring subscription for the shortening itself.

When to use it — and when not to

A self-hoster takes on a Cloudflare account and the services behind it: D1 as the authoritative store, Workers KV as the read cache, the Workers Analytics Engine for events, and optionally R2 for snapshots and Workers AI for metadata generation. Anyone who needs a managed service, multi-user accounts, or an SLA should not pick Sink, and the README explicitly directs those needs to S.EE. The Cloudflare lock-in is real, and the Cloudflare Pages deployment path is already deprecated in favour of Workers.

project readme (upstream, from github) — read inline

⚡ Sink

A Simple / Speedy / Secure Link Shortener with Analytics, 100% run on Cloudflare.

Website · Documentation · API Reference

miantiao-me/Sink | Trendshift Featured on Hacker News Featured|HelloGitHub Uneed Badge

DeepWiki Cloudflare Nuxt Tailwind CSS shadcn/ui

Hero


✨ Features

  • 🔗 URL Shortening: Compress your URLs to their minimal length.
  • 📈 Analytics: Monitor link analytics and gather insightful statistics.
  • ☁️ Serverless: Deploy without the need for traditional servers.
  • 🎨 Customizable Slug: Support personalized slugs, UTM parameters, and optional case-sensitive slug matching through configuration.
  • 🪄 AI Assistance: Optionally use Cloudflare Workers AI to generate slugs and OpenGraph metadata from page content.
  • ⏰ Link Control: Set expirations, passwords, and unsafe-link warning pages.
  • 📱 Smart Routing: Redirect visitors by device or country.
  • 🖼️ Social Preview: Customize social previews with titles, descriptions, and images.
  • 📊 Near-real-time Analytics: Display a live 3D globe and event logs using 10-second analytics polling and client-side replay, not SSE or WebSocket.
  • 🔲 QR Code: Generate QR codes for your short links.
  • 📦 Import/Export: Transfer links via JSON and export access analytics via CSV.
  • 🌍 Multi-language: Full i18n support for dashboard and redirect pages.

[!TIP] Who is Sink for?

Sink focuses on individuals and small teams who want a simple, self-hosted shortener on Cloudflare.

For professional / business needs (managed service, multi-user, SLA, and more), use S.EE.

🪧 Demo

Experience the demo at Sink.Cool. Log in using the Site Token below:

Site Token: SinkCool
Screenshots

🧱 Technologies Used

🚗 Roadmap [WIP]

We welcome your contributions and PRs.

  • Browser Extension - Sink Tool
  • Chrome Extension - Sink Quick Shorten
  • Raycast Extension - Raycast-Sink
  • Apple Shortcuts - Sink Shortcuts
  • iOS App - Sink
  • Enhanced Link Management (with Cloudflare D1)
  • Analytics Enhancements (Multi-link filtering)
  • Dashboard Performance Optimization (Infinite loading)
  • API, migration, backup, and redirect tests

🏗️ Deployment

Video tutorial: Watch here

We currently support deployment to Cloudflare Workers (recommended) and Cloudflare Pages (deprecated).

⚒️ Configuration

Configuration Docs

🔌 API

API Docs · Live Scalar Reference for the public demo instance

🤖 AI Skills

Install Sink AI Skills for enhanced coding assistance:

npx skills add miantiao-me/sink

🧰 MCP

We currently do not support native MCP Server, but we have OpenAPI documentation, and you can use the following method to support MCP.

Replace the domain name in OPENAPI_SPEC_URL and the API_KEY below with your own instance configuration.

The API_KEY is the same as the NUXT_SITE_TOKEN in your instance's environment variables.

{
  "mcpServers": {
    "sink": {
      "command": "uvx",
      "args": [
        "mcp-openapi-proxy"
      ],
      "env": {
        "OPENAPI_SPEC_URL": "https://sink.cool/_docs/openapi.json",
        "API_KEY": "SinkCool",
        "TOOL_WHITELIST": "/api/link"
      }
    }
  }
}

🙋🏻 FAQs

FAQs

💖 Credits

  1. Cloudflare
  2. NuxtHub
  3. Astroship
  4. Tailark

☕ Sponsor

  1. Follow Me on X(Twitter).
  2. Become a sponsor to on GitHub.

Frequently asked questions

Is Sink free to use?

Sink is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Sink do?

Simple, speedy, and secure link shortener with analytics

What is Sink written in?

Sink is primarily written in Vue. Its source is publicly available at https://github.com/ccbikai/sink, and it has 7,139 GitHub stars.