
Kutt
A free, self-hostable URL shortener with custom domain support.
- Stars
- 11.2k
- Forks
- 1.5k
- Licence
- MIT
- Language
- JavaScript
- Last update
- 18 days ago
- Type
- App
What it is
Kutt turns long web addresses into short links and lets you manage them. You can create, edit, and delete links, see statistics for them, and manage users from an admin page. It can run on your own server and use your own domain.
- Shorten long links and set a custom URL, password, description, or expiration time
- View private statistics for your shortened links
- Run a self-hosted shortener on your own domain
- Manage users and links from an admin page
- Control access by disabling registration or anonymous links
Great for
- People who want to run their own link shortener instead of using a hosted service
- Teams that need short links on a custom domain
- Developers who want a URL shortener with a RESTful API
- Self-hosters who want to choose between SQLite, Postgres, or MySQL/MariaDB
Not ideal for
- People who only want a quick link shortener and don't want to host anything, since the README is aimed at running your own instance
- Users who need custom HTTPS certificates handled automatically, because the README says you must generate SSL certificates for custom domains yourself
How to get it
- 1
Clone and build from source
You'll need: Node.js 20 or above · Docker (optional, for Docker setup)
Clone the repository
git clone https://github.com/thedevs-network/kutt.gitInstall dependencies
npm installInitialize the database
npm run migrateStart the app for production
npm start - 2
Run it
- Start the app with npm start, or with npm run dev for development
- Open the app in your browser
- Create an admin account when prompted on first start
- Set your configuration with environment variables or a .env file if needed
- 3
Get the most out of it
- Use Docker Compose with the file that matches your database, such as docker-compose.postgres.yml
- Set a long random JWT_SECRET, which the README requires in production
- Enable Redis caching and rate limiting with REDIS_ENABLED and ENABLE_RATE_LIMIT
- Configure OIDC login with OIDC_ENABLED, or disable the email login form with DISALLOW_LOGIN_FORM
- Read the API documentation at docs.kutt.to to automate link creation
Downloads
Strengths
- The README lists zero-configuration startup and no build step for self-hosting
- Supports several databases (SQLite, Postgres, MySQL/MariaDB) and optional Redis caching
- Includes a RESTful API, Docker setup, and OpenID Connect login
Trade-offs
- Custom-domain HTTPS certificates must be generated manually, according to the README
- Some features such as email signup and password reset depend on mail settings being configured
- The README warns that the kutt.it domain is not owned by the project and may be a phishing site
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| kutt (this) | 11.2k | App | intermediate | 18 days ago | People who want to run their own link shortener instead of using a hosted service |
| YOURLS | 12.3k | App | intermediate | 10 days ago | People who want short links on a domain they control |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.