kutt
Free Modern URL Shortener.
Kutt is a self-hosted URL shortener you run on your own server, get private click stats, custom aliases, password-protected links, expiry times, and your own custom domain for short links.
Kutt is a self-hosted URL shortener that gives you full control over your shortened links. You run it on your own server, so the links belong to you and the statistics stay private. A hosted version is also available at kutt.to for anyone who does not want to run their own instance.
The core feature is shortening long URLs into compact links. Beyond that, Kutt lets you set a custom alias for each link instead of the auto-generated random characters, add a password so only people with the password can reach the destination, write a description, and set an expiry time after which the link stops working. Each link tracks click statistics that only you can see.
Kutt also supports custom domains. You can point your own domain name at the app and have shortened links use your domain rather than the default. An admin interface lets you manage all users and links on the server.
Setting up Kutt requires Node.js version 20 or higher. The default database is SQLite, which needs no extra installation. For larger deployments you can switch to Postgres or MySQL. Redis can optionally be added for caching. Docker Compose configurations are provided for each combination, so you can start the whole stack with one command. The app is configured through environment variables or a .env file, and the only required setting in production is a secret key for signing authentication tokens.
The project also includes a REST API with separate documentation, browser extensions for quickly shortening the page you are on, and theme customization options. Registration and anonymous link creation can both be disabled via configuration, which is useful for running a private instance for a team or organization.
Where it fits
- Shorten URLs with custom aliases and track click stats privately without sending data to a third party.
- Create password-protected links that automatically stop working after a set expiry time.
- Run a private URL shortener for a team using your own custom domain instead of a shared service.
- Deploy Kutt with Docker Compose using SQLite for a low-setup single-user personal instance.