There are many URL shortener. They offer free-tier and after certain usage limit, they beging showing ads and add delay before redirect. You start with one long URL, and suddenly you’re trying to track clicks, manage social profiles, and keep everything organized. I wanted something I could actually own. Something that didn’t have a bunch of hidden rules or costs; and doesn’t add extra cost.
So I built Syano – Opensource URL shortener.
It’s an open-source bitly alternative that I’ve been working on to solve my own problems. It’s a url shortener, sure, but it does more than just make links smaller. It’s about having a place for all your digital stuff without needing five different accounts.
Here’s the thing—hosting your own tools sounds hard, but it’s really not. I built this on Nuxt 3 because it’s fast. Like, really fast. The whole thing runs on PostgreSQL, which is solid. I used Drizzle ORM to keep the database side of things clean. If you want to run it, you can just use Docker or push it to Vercel or Netlify and creating a database in Neon or Supabase is just few clicks away.
One of the parts is the analytics. It’s not just a big number that says, “100 people clicked.” You get a map. You see what cities they’re in. What phone they’re using. What site they came from. It helps you understand what’s actually happening with your traffic.
Then there’s the Link-in-Bio feature. Everyone needs these for social media now. Instead of using a separate service, Syano lets you build a bio page right there. You put your photo, your social links, and your short URLs all on one page. It looks good too. Dark mode is built-in because, honestly, who doesn’t use dark mode? You can configure homepage as per your need.
I added some other features that felt right.
- Password protection: If you have a link that shouldn’t be public, just lock it.
- Expiration dates: Useful if you’re running a temporary sale or something.
- Device targeting: Send iPhone people to the App Store and Android people to Google Play.
- Bulk Import: If you have a massive list of links already, you can just dump them in via JSON.
The setup is pretty direct. Clone the repo from GitHub. Install the dependencies with pnpm. Set up your environment variables—basically just your database link and a secret token. Then run the schema.
I’m keeping the code under the AGPL-3.0 license. That means it’s open. It stays open. That’s why I put it on GitHub in the first place.
It works. It’s fast. And it’s finally done.
Check out the code here: https://github.com/pritush/syano
Give it a spin. Let me know if it breaks.
Tech Stack
- Nuxt 3 – Vue.js framework
- Nuxt UI – UI components
- Tailwind CSS – Styling
- PostgreSQL – Database
- Drizzle ORM – Type-safe ORM



