● Live demo  ·  Spring Boot + Redis + Kafka + Postgres

Short links,
measured in real time.

Paste a long URL, get a short link instantly, and watch every click flow through a Kafka-powered analytics pipeline. Free, no sign-up.

20 links / minute per IP · abuse-protected
–links shortened
<50mscached redirect path
Kafkaclick event pipeline

Built like production, not a toy

Every feature below is a real system-design pattern running live behind this page.

⚡

Instant redirects

Cache-aside lookups in Redis keep the hot redirect path under 50ms; Postgres is the fallback, never the bottleneck.

📊

Real-time click analytics

Each visit fires a click event to Kafka; a consumer batch-aggregates counts back into Postgres. Stats stay fresh without slowing redirects.

🛡️

Abuse protection

Token-bucket rate limiting (20 creations/minute per IP) and strict URL validation keep the service clean for everyone.

✏️

Custom aliases

Want snip/launch-day? Pick your own memorable code — validated and uniqueness-checked.

🧩

Developer API

A documented REST API with Swagger UI. Create, list, inspect and delete links programmatically.

🗄️

Durable by design

PostgreSQL with Flyway migrations for the source of truth; Base62-encoded IDs give collision-free codes by construction.

How it works

Three steps for you. A lot more happening underneath.

1

Paste

Drop in any long URL above — optionally with a custom alias.

2

Share

Your short link redirects in milliseconds, anywhere you post it.

3

Measure

Every click is counted through the Kafka pipeline. Check stats anytime.

You
→
Spring Boot
→
Redis
hot cache
→
Postgres
source of truth
Kafka: url-clicks → aggregator → click counts

Use it from your own apps

One POST and you have a short link. Full interactive docs included.

curl -X POST https://url-shortener-fjdk.onrender.com/api/v1/urls \
  -H 'Content-Type: application/json' \
  -d '{"url": "https://example.com/very/long/page"}'

# → 201 Created
# {"code":"0003d7",
#  "shortUrl":"https://url-shortener-fjdk.onrender.com/0003d7",
#  "originalUrl":"https://example.com/very/long/page"}

Explore every endpoint — create, list, stats, delete — in the interactive docs.

Open Swagger UI