Open-source QR & link studio

QR codes
with a little bite.

QRocodilla is a friendly, self-hosted URL shortener and QR code studio. Design codes for anything, watch every scan roll in, and redirect on the fly — all from one snappy studio.

  • Scan
  • Track
  • Redirect
11
QR formats
0
external services
1
SQLite file
QRocodilla mascot: a cheerful orange crocodile holding a QR code and an analytics chart
Features

Built to scan, track & redirect

Everything you need to run links and codes yourself — no swamp of third-party services required.

🔗

Dynamic short links

Re-point custom codes any time — no reprinting. Add expiry dates (expired links return 410) and toggle any link on or off.

📈

Scan analytics

Per-link clicks per day, top referrers, devices, and countries — and never a raw IP address stored.

🔑

REST API

A token-authenticated /api/v1 for full CRUD, stats, and QR rendering. Mint and revoke keys at /admin/keys.

🗂️

Unified library

Search, sortable columns, and pagination across every link and code — all in one tidy place.

🛡️

Secure admin

Username + password login (scrypt-hashed) with a first-run /setup wizard and HMAC-signed sessions.

🌐

Multi-domain

Host-aware base URLs serve many short-link domains from a single instance, each with its own canonical links.

…all from one self-hosted instance — no third-party services, no tracking scripts, MIT licensed.

New · Design studio

Make codes that look like you

Style every QR in a two-pane studio and watch it redraw as you type — then download straight from the form as SVG or PNG.

Encoders

Eleven ways to encode the world

One generator, every common QR payload. Point the croc at it and it bites out a code.

Quick start

Get snapping in minutes

Run it with one docker compose up, or manually on Node ≥ 20. The SQLite database creates itself on first boot — then finish the /setup wizard to pick your admin login.

# 1 · Clone & enter the repo
git clone https://github.com/QRocodilla/qrocodilla.git
cd qrocodilla

# 2 · Set a session secret in .env
cp .env.example .env
openssl rand -hex 32   # paste as SESSION_SECRET

# 3 · Launch with Docker 🐳
docker compose up -d

# 4 · Open http://localhost:3000 🐊
#     then finish /setup to create your admin login
Built with Next.js 16 React 19 SQLite Docker qrcode Vitest MIT

Ready to let the croc loose?

Clone it, run it, and start turning links into trackable QR codes in under a minute.