Open Source TinyURL Alternatives
A curated collection of the 4 best open source alternatives to TinyURL.
The best open source alternative to TinyURL is Sink. If that doesn't suit you, we've compiled a ranked list of other open source TinyURL alternatives to help you find a suitable replacement. Other interesting open source alternatives to TinyURL are: Kutt, Shlink and WR.DO.
TinyURL alternatives are mainly Marketing & Customer Engagement but may also be Networking & Connectivity. Browse these if you want a narrower list of alternatives or looking for a specific functionality of TinyURL.
A link shortener with analytics running entirely on Cloudflare, for individuals and small teams who want to host their own.

Sink shortens links and reports what happened to them, without a server you have to keep alive. Everything runs on Cloudflare's platform, which is both the reason it costs almost nothing to operate and the boundary on where it can be deployed.
The application is built with Nuxt 4, Tailwind CSS and shadcn-vue components. Cloudflare D1 is the authoritative store for links with Workers KV as a write-through read cache, Drizzle ORM sits over the database, Workers Analytics Engine records events, and R2 holds optional JSON snapshots.
The link handling goes well past shortening.
- Link control: expirations, passwords and a warning page for destinations flagged unsafe.
- Smart routing: the same short link redirects visitors differently by device or country.
- Custom slugs: personalized slugs, UTM parameters and optional case-sensitive matching.
- AI assistance: Cloudflare Workers AI can generate a slug and OpenGraph metadata from the target page.
- Analytics: a live 3D globe and event log driven by ten-second polling and client-side replay, exportable as CSV.
Deployment targets Cloudflare Workers, with Pages now deprecated. Browser extensions, Raycast and Apple Shortcuts integrations and an iOS app already exist, and JSON import and export make links portable. The maintainer is clear about scope: businesses wanting multi-user access, a managed service and an SLA are pointed at the commercial product instead.
A self-hosted URL shortener with custom domains, private link statistics, and an admin page for managing users and links.

Kutt is a URL shortener written to be run by the person using it. Links are created, edited, and deleted from the app, statistics stay private to the owner of a link, and custom domains work without a paid tier in the way.
Setup was clearly the design constraint. Node.js 20 or above is the only prerequisite, there is no build step, and the default database is SQLite, with Postgres, MySQL, and MariaDB supported when something larger is needed and Redis available for caching. The first launch prompts for an admin account.
The rest of the feature set covers what a shared instance needs.
- Link controls: custom URLs, passwords, descriptions, and expiration times.
- Access rules: registration and anonymous links can each be disabled, and OpenID Connect handles login.
- Admin page: users and links are managed from inside the application.
- Theming: a custom folder holds CSS, images, and templates that override or replace the defaults.
- REST API: links can be created and managed programmatically.
Compose files are provided for SQLite, SQLite with Redis, Postgres with Redis, and MariaDB with Redis, and an official Docker image is published. Configuration is environment variables, all optional except the JWT secret in production, and any variable can be read from a file instead by appending _FILE to its name. Note that the original kutt.it domain is no longer owned by the project.
PHP self-hosted URL shortener that serves short links from your own domain, driven by a REST API and a command line tool.

Shlink is a self-hosted URL shortener written in PHP, built so the short links you hand out carry your own domain rather than somebody else's. Nothing about the links depends on a third party service staying in business.
There are two ways to drive it and they overlap almost entirely. The command line exposes every operation through a single entry point that is easy to symlink into your path, while a documented REST API covers the same ground for anything programmatic. API key management is the one job reserved for the terminal.
Getting a working install involves a few decisions.
- Distribution: prebundled dist files are published for every supported PHP version, or you build from source with Composer.
- Runtime: PHP 8.4 or 8.5 with the json, curl, pdo, intl, gd and gmp or bcmath extensions.
- Database: MySQL, MariaDB, PostgreSQL, Microsoft SQL Server or SQLite, each with its matching pdo driver.
- Guided setup: an installer script walks through configuration on the server itself, then generates your first API key.
- Web client: a separate front end can be self-hosted or used from the project's own hosted instance.
An official Docker image takes the same configuration through environment variables, which is the shortest path for most people. The apcu extension is recommended unless you plan to run under RoadRunner, and sockets plus bcmath are needed to integrate with RabbitMQ. Geolocation of visits uses MaxMind GeoLite2 data.
Domain services platform for people running their own domains, combining short links, mailboxes, subdomains, file storage and an open API.

WR.DO gathers the small services a domain owner ends up wanting into one self-hosted application. Instead of a link shortener here, a mailbox provider there and an object storage console somewhere else, a single instance covers short links, email, DNS records, files and an API across all of them.
It is a Next.js and React application written in TypeScript and styled with Tailwind CSS, using Prisma for the database layer, Next-Intl for translations and Resend for outbound mail. Cloudflare does the heavy lifting for DNS records and for inbound email through an Email Worker. Deployment targets Vercel or Docker Compose, and the license is MIT.
Five services sit behind one panel.
- Short links: custom slugs, QR codes, password protection, expiry dates and visit analytics.
- Mailboxes: unlimited addresses on your own domains, with catch-all, Telegram push and API access.
- Subdomains: manage records across several Cloudflare accounts, with an approval workflow for user requests.
- File storage: connect S3 compatible buckets such as R2 or AWS S3, with drag and drop and batch upload.
- Open API: fetch page metadata, take screenshots, generate QR codes and convert pages to Markdown or text.
An admin module sits above all of it, with charts of instance activity, per user quotas and permissions, control over which login methods are enabled, and switches to turn individual services off. Note that the primary README is written in Chinese with an English translation alongside it, and that the default administrator account ships with a published password worth changing at first login.