explaingit

thedevs-network/kutt

10,743JavaScriptAudience · ops devopsComplexity · 3/5Setup · easy

TLDR

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.

Mindmap

mindmap
  root((Kutt))
    What it does
      URL shortening
      Private click stats
      Custom aliases
    Features
      Password protection
      Expiry times
      Custom domains
      Admin interface
    Setup
      Node.js 20+
      SQLite default
      Docker Compose
    Extras
      REST API
      Browser extensions
      Redis for caching
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Shorten URLs with custom aliases and track click stats privately without sending data to a third party.

USE CASE 2

Create password-protected links that automatically stop working after a set expiry time.

USE CASE 3

Run a private URL shortener for a team using your own custom domain instead of a shared service.

USE CASE 4

Deploy Kutt with Docker Compose using SQLite for a low-setup single-user personal instance.

Tech stack

JavaScriptNode.jsSQLitePostgreSQLMySQLRedisDocker

Getting it running

Difficulty · easy Time to first run · 30min

SQLite needs no extra installation, only a secret key environment variable is required to start in production.

In plain English

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.

Copy-paste prompts

Prompt 1
Give me a docker-compose.yml to run Kutt with SQLite and my own custom domain as the short link base.
Prompt 2
How do I create a password-protected link with a 7-day expiry using the Kutt REST API?
Prompt 3
What environment variables does Kutt require in production, and what does the secret key setting control?
Prompt 4
How do I disable public registration on my Kutt instance so only I can create short links?
Open on GitHub → Explain another repo

← thedevs-network on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.