An open-source link shortener SaaS with built-in analytics + free custom domains.
Introduction · Deploy Your Own · Tech Stack · Implementation · Contributing
Dub is an open-source link shortener with built-in analytics + free custom domains. Built with Vercel Edge Functions and Upstash Redis.
Here are some of the features that Dub provides out-of-the-box:
Dub provides a powerful analytics dashboard for your links, including geolocation, device, and browser information.
You can easily configure custom domains on Dub – just add an A/CNAME record to your DNS provider and you're good to go. This is built on the Vercel Domains API.
Add a custom OG image in front of your target URL. Bots like Twitter/Facebook will be served this image, while users will be redirected to your target URL.
You can deploy your own hosted version of Dub for greater privacy & control. Just click the link below to deploy a ready-to-go version of Dub to Vercel.
- Next.js – framework
- Typescript – language
- Tailwind – CSS
- Upstash – database
- NextAuth.js – auth
- Vercel – hosting
- Stripe – payments
Dub is built as a standard Next.js application with Middleware to handle multi-tenancy, inspired by the Vercel Platforms Starter Kit.
Redis is used as the database for storing links and analytics data, which works well for key-value data types. Redis also has the Sorted Set data type, which is perfect for storing & retrieving time-series analytics data. Here's the full schema:
{hostname}:links
– hashmap of all links for a given hostname (e.g.dub.sh:links
){hostname}:links:timestamps
– sorted set of all link timestamps for a given hostname (e.g.dub.sh:links:timestamps
){hostname}:clicks:{linkId}
– sorted set of all clicks for a given link (e.g.dub.sh:clicks:github
){hostname}:root:clicks
– sorted set of all root link clicks for a given hostname (e.g.dub.sh:root:clicks
)
- Open an issue if you believe you've encountered a bug.
- Make a pull request to add new features/make quality-of-life improvements/fix bugs.
- Steven Tey (@steventey)
Inspired by Plausible, Dub is open-source under the GNU Affero General Public License Version 3 (AGPLv3) or any later version. You can find it here.