Free Modern URL Shortener.

★ 11,188⑂ 1,518👁 77▤ 26
JavaScriptCreated 2018-02-13kutt.to
11,188
stars
+0+0+50
1,518
forks
77
watchers
–
prs
–
issues
26
releases
–
discussions

README

Kutt.to

Kutt is a modern URL shortener with support for custom domains. Create and edit links, view statistics, manage users, and more.

https://kutt.to

 [!WARNING]
 kutt.it is NOT OWNED BY US. It could be a phishing site. We had the domain but it has been deactivated by the Italian TLD registrar due to the lack of identification documents, and now it's owned by someone else.


  Please use kutt.to, all the previous and the future links work with this domain as well.







 Table of contents

- Key features
- Donations and sponsors
- Setup
- Docker
- API
- Configuration
- Themes and customizations
- Browser extensions
- Videos
- Integrations
- Contributing

 Key features

- Created with self-host in mind:
  - Zero configuration needed
  - Easy setup with no build step
  - Supporting various databases (SQLite, Postgres, MySQL)
  - Ability to disable registration and anonymous links
  - OpenID Connect (OIDC) login
- Custom domain support
- Set custom URLs, password, description, and expiration time for links
- View, edit, delete and manage your links
- Private statistics for shortened URLs
- Admin page to manage users and links
- Customizability and themes
- RESTful API

 Donations and sponsors

Support the development of Kutt by making a donation or becoming an sponsor.

Donate or sponsor →

 Setup

The only prerequisite is Node.js (version 20 or above). The default database is SQLite. You can optionally install Postgres or MySQL/MariaDB for the database or Redis for the cache. 

When you first start the app, you're prompted to create an admin account.

1. Clone this repository or download the latest zip
2. Install dependencies: npm install
3. Initialize database: npm run migrate
5. Start the app for development npm run dev or production npm start

 Docker

Make sure Docker is installed, then you can start the app from the root directory:

sh
docker compose up


Various docker-compose configurations are available. Use docker compose -f  up to start the one you want:

- docker-compose.yml: Default Kutt setup. Uses SQLite for the database.
- docker-compose.sqlite-redis.yml: Starts Kutt with SQLite and Redis.
  - Required environment variable: REDIS_ENABLED
- docker-compose.postgres.yml: Starts Kutt with Postgres and Redis.
  - Required environment variables: REDIS_ENABLED, DB_PASSWORD, DB_NAME, DB_USER
- docker-compose.mariadb.yml: Starts Kutt with MariaDB and Redis.
  - Required environment variables: REDIS_ENABLED, DB_PASSWORD, DB_NAME, DB_USER, DB_PORT

Official Kutt Docker image is available on Docker Hub.

 API

View API documentation →

 Configuration

The app is configured via environment variables. You can pass environment variables directly or create a .env file. View .example.env file for the list of configurations.

All variables are optional except JWT_SECRET which is required on production. 

You can use files for each of the variables by appending _FILE to the name of the variable. Example: JWT_SECRET_FILE=/path/to/secret_file.

| V

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON