The Problem: URL Shorteners Hate Developers
I needed to add link shortening to a side project. Simple, right?
Bit.ly: $348/year for API access. Limited calls. Still shows their branding.
Rebrandly: $69/month for decent API limits. Custom domains cost extra.
TinyURL: Free, but no API. Copy-paste like it's 2005.
All I wanted was:
- A clean REST API I can call from anywhere
- My own domain (not
bit.ly/xyz) - No monthly fees eating into my project budget
- Something I can spin up in 5 minutes
So I built it.
Introducing jo4.io
jo4.io is an API-first URL shortener built for developers.
# Create a short link
curl -X POST https://jo4-api.jo4.io/api/v1/protected/url \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/very/long/path"}'
Response:
{
"shortUrl": "abc123",
"originalUrl": "https://example.com/very/long/path"
}
Access the shortened link at:
https://jo4-api.jo4.io/api/v1/public/a/abc123
That's it. No OAuth dance. No webhook configuration wizard. No 47-page API docs for a simple POST request.
Why API-First Matters
Most URL shorteners are built for marketers clicking buttons in a dashboard. The API is an afterthought—rate-limited, poorly documented, expensive.
jo4 flips that. The API is the product. The dashboard is just a nice-to-have.
Real Use Cases I've Built With It
Slack Bot Integration
@app.route("/shorten", methods=["POST"])
def shorten():
url = request.form.get("text")
response = requests.post(
"https://jo4-api.jo4.io/api/v1/protected/url",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"url": url}
)
short_code = response.json()["shortUrl"]
return f"https://jo4-api.jo4.io/api/v1/public/a/{short_code}"
CI/CD Build Artifacts
Share build artifacts with short, memorable links that expire after 7 days.
Zapier/Make Automation
Shorten links automatically when new content is published.
Embedded in My SaaS
Users create shareable links without ever leaving my app.
White-Label: Your Brand, Not Mine
Here's what annoyed me about every URL shortener: even when you pay for custom domains, their branding is everywhere.
jo4 is different. With the white-label option:
| Feature | What You Get |
|---|---|
| Custom domain | links.yourcompany.com |
| Dashboard | Your logo, your colors |
| Short URLs | yourcompany.com/promo |
| QR codes | Your logo in the center |
| Emails | From your domain |
Nobody sees "jo4" anywhere.
This is perfect for:
- Agencies offering branded links to clients
- SaaS products embedding link shortening as a feature
- Enterprises with strict branding requirements
The Technical Details (For Those Who Care)
Stack
- Backend: Spring Boot 3.5, Java 21
- Database: PostgreSQL with connection pooling
- Cache: Redis for fast redirects
- Auth: JWT with API key scopes
- Infra: AWS with global CDN
Performance
Redirects happen at the edge. Average response time: <50ms globally.
Short codes use base62 encoding (a-z, A-Z, 0-9) for maximum density. Six characters = 56 billion possible URLs.
Collision Handling
Auto-generated slugs check for collisions before saving. Custom slugs return a clear error if taken.
What's Included
Core
- Unlimited short links
- Custom slugs (
/sale,/demo) or auto-generated - Link expiration (optional)
- Password protection (optional)
- 301 or 302 redirects
Analytics
- Click counts
- Referrer tracking
- Geographic breakdown
- Device & browser stats
- CSV/JSON export
Developer Experience
- REST API with OpenAPI docs
- Scoped API keys (read/write/admin)
- Webhooks for click events
- Rate limiting you control
- SDKs for JS, Python, Go
Pricing That Doesn't Suck
| Plan | Price | What You Get |
|---|---|---|
| Free | $0 | 1K links, 10K clicks/mo, API access |
| Pro | $9/mo | Unlimited everything |
| White-Label | $149/mo | Rebrand + resell rights |
No "contact sales" for basic features. No surprise overages. No enterprise tax.
vs. The Competition
| Feature | Bit.ly | Rebrandly | jo4 |
|---|---|---|---|
| API access | Paid tier | Paid tier | Free tier |
| Custom domains | 1 (paid) | 5 (paid) | 5 (paid) |
| White-label | No | Extra $$ | Available |
| Free tier | No | No | Yes |
Try It Now
- Sign up at jo4.io
- Copy your API key
-
curlaway
That's it. You're shortening links in under 2 minutes.
What's Next
Currently building:
- Browser extension for one-click shortening
- Team workspaces with shared analytics
- More OAuth providers for the dashboard
- Cloudflare Workers deployment option
Questions?
Drop them in the comments. Happy to dive into:
- API design decisions
- How the redirect caching works
- White-label implementation details
- Anything else
If you've been burned by URL shortener pricing, I feel you. That's why this exists.
Check it out: jo4.io
Your links. Your brand. Your API.
Top comments (0)