Skip to content

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
Step-by-step guide: how to use KuttInstall, first run, examples, tips and FAQs

How to get it

  1. 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.git

    Install dependencies

    npm install

    Initialize the database

    npm run migrate

    Start the app for production

    npm start
  2. 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. 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

ProjectStarsTypeLevelUpdatedBest for
kutt (this)11.2kAppintermediate18 days agoPeople who want to run their own link shortener instead of using a hosted service
YOURLS12.3kAppintermediate10 days agoPeople 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.