The world doesn't need another URL shortener. Or does it?
When we looked at the existing options (Bitly, TinyURL, Short.io, Dub), we saw a pattern: either you get a free tool with zero control, or you pay enterprise prices for features most teams don't need. There's a gap in the middle for developers and small teams who want real analytics, custom domains, and an API without the enterprise sales call.
That's why we built Qorlivo.
What makes Qorlivo different
Developer-first, not marketer-first
Most URL shorteners are built for marketing teams. Qorlivo is built for developers. We ship a full REST API with Bearer token auth, support custom domains out of the box, and give you programmatic access to everything: link creation, analytics, and bulk operations.
curl -X POST https://qorlivo.com/api/v1/links \
-H "Authorization: Bearer qk_live_..." \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "slug": "my-link"}'
Privacy by design
We don't store IP addresses. Period. Our analytics use daily-rotating SHA-256 hashes to count unique visitors without retaining any personally identifiable information. You get the metrics you need (clicks, devices, browsers, countries) without the compliance headaches.
Real-time everything
Qorlivo runs on Convex, a reactive backend that pushes updates to your dashboard the instant they happen. Create a link, share it, and watch the clicks roll in. No refresh needed.
Simple, transparent pricing
Start free with 50 links a month and the same click analytics every plan gets. Paid plans start at $5 a month and add custom domains, more links and video storage, and higher API limits. No per-click charges, no surprise overages. See pricing for every plan.
The tech stack
We chose our stack deliberately:
- Convex for the database, auth, and real-time subscriptions
- Upstash Redis for edge caching and sub-millisecond redirects
- Next.js on Vercel for the frontend and API routes
- Stripe for billing with webhook-driven subscription sync
Every redirect hits Redis first. If the link is cached, the 302 response fires in under a millisecond. If not, Convex serves as the source of truth and populates the cache for next time.
What's next
Since this post, several roadmap items have shipped:
- Expiring links and videos: set a link or video to stop working after a date
- Team workspaces: share links and analytics across your team
- QR codes: a QR code for every short link
- Webhooks: get notified when links and videos change
We're building Qorlivo in public. Follow along on our blog for engineering deep dives, product updates, and the occasional hot take on link infrastructure.
Qorlivo is free to get started. Shorten your first link, no account required.