Chhoto URL logo

Chhoto URL

Blazingly fast, lightweight self‑hosted URL shortener with built‑in analytics

A minimal Rust‑based URL shortener that runs in a <6 MB Docker image, uses under 15 MB RAM, offers custom links, expiry, hit counting, QR codes, and simple authentication.

Chhoto URL banner

Overview

Overview

Chhoto URL is a tiny, Rust‑written service that shortens any long URL to a random or user‑specified slug. It focuses on speed and minimalism, delivering redirects instantly without intermediate pages. Features include automatic link expiry, hit counting that respects privacy, QR‑code generation, and a mobile‑friendly UI with dark‑mode support.

Deployment & Operations

The application ships as a Docker container under 6 MB (compressed) and stays below 15 MB RAM during normal use. Links are stored in a local SQLite database, making setup as simple as pulling the image and running the provided compose file. Authentication is handled via a basic password or API key; for HTTPS you should place the container behind a reverse proxy such as Caddy. Public mode lets anyone create links while admin actions remain protected. The design avoids bloat—no user management, tracking, or cookies—making it ideal for private or low‑traffic public instances.

Highlights

Under 6 MB Docker image and <15 MB RAM usage
Customizable short URLs with automatic expiry
Privacy‑respecting hit counting
QR code generation and mobile‑friendly UI

Pros

  • Extremely low resource footprint
  • Fast redirects without intermediate pages
  • Simple configuration via Docker compose
  • Built‑in API key authentication

Considerations

  • No built‑in TLS; requires external reverse proxy for HTTPS
  • Limited to SQLite; not ideal for massive scale without tuning
  • No user management or multi‑tenant features
  • Basic password stored in plain text

Managed products teams compare with

When teams consider Chhoto URL, 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

  • Developers needing a tiny self‑hosted shortener for personal projects
  • Teams that want privacy‑first link sharing without third‑party services
  • Environments where Docker resources are constrained
  • Use cases where simple analytics (hit count) suffice

Not ideal when

  • Enterprises requiring role‑based access control
  • High‑traffic public services needing distributed storage
  • Scenarios demanding built‑in HTTPS termination
  • Organizations that need detailed user analytics

How teams use it

Internal documentation links

Generate short, memorable URLs for internal wiki pages, reducing copy‑paste errors and keeping links tidy.

Event QR code sharing

Create QR codes for event registration links, allowing attendees to scan and access pages instantly.

Temporary promotional URLs

Produce short links that expire after a campaign, ensuring outdated URLs become inaccessible automatically.

CLI‑driven link creation

Integrate the API into scripts to programmatically shorten URLs during CI/CD pipelines.

Tech snapshot

Rust61%
JavaScript24%
HTML8%
CSS5%
Makefile1%
Dockerfile1%

Tags

self-hostedshortenerwebapppodmanlink-shortenercontainercomposerustactix-weburl-shortenerquadletsdocker

Frequently asked questions

How is data stored?

Links are persisted in a local SQLite database bundled with the container.

Do I need to run a separate database?

No, the application manages its own SQLite file; external databases are not required.

Is traffic encrypted?

The service does not provide TLS itself; you should place it behind a reverse proxy (e.g., Caddy) to enable HTTPS.

Can I limit who can create links?

Yes, public mode allows anyone to add links, while admin mode restricts creation, listing, and deletion to authenticated users via password or API key.

What happens when the Docker image restarts?

The SQLite file is stored on a mounted volume, so links survive container restarts as long as the volume persists.

Project at a glance

Active
Stars
693
Watchers
693
Forks
69
LicenseMIT
Repo age3 years old
Last commit3 days ago
Self-hostingSupported
Primary languageRust

Last synced 2 days ago