Open source · Python
A lightweight, self-hosted URL shortener built entirely on Python's standard libraries — no heavy frameworks, no bloat.
Try it live
Origin
I wanted a URL shortener I could actually own — no third-party services, no rate limits, no branding I didn't choose. So I built one from scratch.
The goal was deliberately constrained: use nothing outside Python's standard library for the core logic. No Requests, no SQLAlchemy, no Redis. Just sqlite3, and a bit of patience.
It started as a weekend project to learn how URL routing and persistence worked at a lower level, and ended up as something genuinely useful I could self-host on a cheap VPS.
Architecture
Takeaways
Working without an ORM taught me a lot about how SQLite actually behaves under concurrent reads — and why connection pooling matters even for tiny projects. I ended up implementing a basic write lock to prevent race conditions on slug generation.
Deploying on AWS with a custom subdomain also pushed me to properly understand DNS TTLs, reverse proxying with Nginx, and writing a systemd service file that survives reboots reliably.
The project is intentionally minimal, but the constraints made it one of the most instructive things I've built.