Kutt.it logo

Kutt.it

Self-hosted URL shortener with custom domains and API

Kutt provides a modern, self-hosted URL shortening service supporting custom domains, password-protected links, private analytics, and a RESTful API, with zero-config setup and multiple database options.

Kutt.it banner

Overview

Overview

Kutt is a modern URL shortening service designed for self‑hosting. It lets you create short links, assign custom aliases, set passwords, expiration dates, and view private click statistics. An admin interface provides full control over users and links, while a RESTful API enables programmatic access.

Deployment

The application runs on Node.js 20+ and works with SQLite out of the box, or with PostgreSQL, MySQL/MariaDB, and optional Redis caching. Installation requires only npm install and a database migration, and Docker Compose files are supplied for quick containerized deployment. Configuration is handled via environment variables, including JWT secret, domain settings, and feature toggles such as registration control and rate limiting.

Extensibility

Kutt supports custom domains and theming, allowing organizations to brand their short URLs. While HTTPS for custom domains must be provisioned externally, the platform offers flexibility for scaling, database choice, and integration into existing workflows.

Highlights

Zero‑configuration installation with optional Docker support
Custom domain handling and themable UI
Full link management: edit, delete, password, expiration
RESTful API and admin panel for user and link control

Pros

  • Easy to deploy on Node.js or via Docker
  • Flexible database back‑ends (SQLite, Postgres, MySQL)
  • Rich link customization options
  • Private analytics and comprehensive admin interface

Considerations

  • Requires Node.js 20+, limiting older environments
  • HTTPS for custom domains must be set up manually
  • Rate limiting optional; without Redis may affect performance
  • No built‑in SSL certificate management for custom domains

Managed products teams compare with

When teams consider Kutt.it, these hosted platforms usually appear on the same shortlist.

Bitly logo

Bitly

URL shortening and link management service for creating concise, trackable links with analytics

Cutt.ly logo

Cutt.ly

URL shortener with branded links, QR codes, and analytics

Rebrandly logo

Rebrandly

Branded URL shortener and link management

Looking for a hosted option? These are the services engineering teams benchmark against before choosing open source.

Fit guide

Great for

  • Teams needing an in‑house short URL service with branding
  • Developers who want API‑driven link creation
  • Organizations requiring private click statistics
  • Self‑hosters preferring configurable database choices

Not ideal when

  • Users looking for a fully managed SaaS shortener
  • Environments without Docker or Node.js 20+
  • Projects needing automatic SSL for custom domains
  • Small personal use where a simple hosted service suffices

How teams use it

Company branding short links

Create branded URLs on a custom domain, track clicks internally, and enforce password protection for sensitive campaigns.

API‑driven link generation for apps

Integrate the RESTful API to programmatically shorten URLs from internal tools or mobile apps, with custom aliases and expiration.

Internal documentation shortcuts

Provide employees with short, private links to internal resources, with analytics to monitor usage.

Self‑hosted analytics for marketing

Collect click data without sharing with third‑party services, keeping user privacy and compliance.

Tech snapshot

JavaScript46%
Handlebars24%
HTML16%
CSS14%
Dockerfile1%

Tags

shortenershorten-urlslink-shortenerurlshortenerurl-shortener

Frequently asked questions

What databases does Kutt support?

SQLite (default), PostgreSQL, and MySQL/MariaDB via the DB_CLIENT environment variable.

Do I need to build the project before running?

No build step is required; after installing dependencies you can start the app directly with npm run dev or npm start.

How do I enable HTTPS for custom domains?

Kutt does not provision certificates; you must configure TLS on your domain (e.g., via a reverse proxy) and set CUSTOM_DOMAIN_USE_HTTPS to true.

Can I limit link creation to registered users?

Yes, set DISALLOW_REGISTRATION or DISALLOW_ANONYMOUS_LINKS environment variables to control registration and anonymous link creation.

Is there a rate‑limiting feature?

Enable rate limiting with ENABLE_RATE_LIMIT; it uses Redis if enabled, otherwise falls back to in‑memory storage.

Project at a glance

Active
Stars
10,500
Watchers
10,500
Forks
1,407
LicenseMIT
Repo age7 years old
Last commit2 months ago
Self-hostingSupported
Primary languageJavaScript

Last synced 12 hours ago