mrkeyoor.com_
Sat 17 Oct 13:33 UTC
Self-Hostedevaluationupdated 26 Aug 2026

dub review

Dub is a link attribution platform for branded short links, click analytics, conversion tracking, and affiliate programs. The repository contains the web application, redirect path, APIs, analytics definitions, shared packages, and a Stripe app behind Dub's hosted product.

+27stars / 7d
Verdict

Our Dub install consumed 2,585 MB, the web build was killed after 296 seconds, and the Stripe app test task failed after 9 seconds, so self-hosting this repository is a platform project rather than a quick deployment. Use Dub Cloud when its conversion and partner attribution match your business, or self-host only if you accept its current Vercel, Tinybird, Upstash, MySQL, and object-storage design. Pick Shlink or YOURLS for a much smaller branded-link job.

We ran it

Lab card: what happened when we ran dubScreenshot of dub (dub.co)
Install✓ · 66s2633 packages · 2585 MB
Build✗ · 296s
Tests✗ · 9sran, no count parsed
Repo4424 files~492,884 lines of source · 17.6 MB · 5 CI workflows

Answers from our run

Does dub build from source?

Dependencies installed in 66 seconds (2633 packages), and the build failed. We cloned commit e06a128 into a clean Debian container with 3 CPUs and no project-specific setup.

Do dub's tests pass?

No. The project's own test command exited unsuccessfully after 9 seconds, and its output did not expose an individual test count.

Who should not use dub?

Anyone who only needs private short links: the self-hosting guide requires several databases, caches, storage services, authentication setup, and a deployment platform.

What are the alternatives to dub?

Shlink, YOURLS, Kutt. Our Dub install consumed 2,585 MB, the web build was killed after 296 seconds, and the Stripe app test task failed after 9 seconds, so self-hosting this repository is a platform project rather than a quick deployment.

Setup1/52,585 MB install; build and Stripe app tests failed
Docs4/5Detailed guides honestly list hosted-service requirements
Community5/5Current pushes and active, specific issue reports
Maturity4/5Large working product, with self-hosting still cloud-dependent

Who it’s for

Marketing engineering teams that need links, conversions, and partner attribution in one system.
Product companies willing to use Dub Cloud or reproduce its Vercel-centered service stack.
Developers integrating link and analytics workflows through Dub's API and shared packages.
Organizations prepared to review AGPL obligations and license enterprise-only code separately.

Who it’s NOT for

Anyone who only needs private short links: the self-hosting guide requires several databases, caches, storage services, authentication setup, and a deployment platform.
Teams requiring a supported Docker or Kubernetes installation: Dub's guide says Docker is currently unsupported and documents Vercel as a required dependency.
Fully on-premises operators who cannot use Tinybird, Upstash, PlanetScale-compatible MySQL, Vercel, and Cloudflare R2 or S3-compatible storage.
Organizations expecting every repository feature under one permissive license: the core is AGPLv3, while /ee requires a commercial license.
Resource-constrained contributors: our install used 2,585 MB, the web build was killed, and the Stripe app test task failed.

Setup reality

Our pnpm install succeeded in 66 seconds, adding 2,633 packages and using 2,585 MB on disk. The build failed after 296 seconds with exit 137: 5 of 6 tasks succeeded, then the Next.js web build printed Killed. Tests failed after 9 seconds when packages/stripe-app exited 1; 3 of 4 tasks succeeded.

Local development needs Node, pnpm, Tinybird, Upstash, PlanetScale-compatible MySQL, Mailhog, and a NextAuth secret; some flows add ngrok and Stripe values. The self-host guide adds GitHub OAuth, object storage, custom domains, Vercel tokens, and optional Resend or Unsplash credentials.

Self-hosting currently follows Dub's preferred hosted stack rather than a supported container image. Redirects depend on Redis caching, analytics on Tinybird, application data on MySQL, and deployment behavior on Vercel. The 17.6 MB monorepo had 4,424 files, 5 CI workflows, no Dockerfile, no top-level tests directory, and multiple workspaces.

Dub combines short links with conversion and partner attribution

Dub goes beyond turning a long URL into a short one. Its web application manages branded links, click analytics, conversion events, and affiliate programs. The monorepo also contains a command-line client, email templates, embeddable partner interfaces, Prisma models, a Stripe app, Tinybird definitions, shared UI, and utility packages. That scope makes sense for a marketing platform, but it is far larger than the needs of a team that only wants redirects.

Our checkout at commit e06a128 had 4,424 files, about 492,884 source lines, and occupied 17.6 MB before installation. The repository uses Next.js, TypeScript, Tailwind, Prisma, NextAuth, Turborepo, and hosted data services. Dub's README recommends Node 23.11.0 and pnpm 9.15.9. Matching those versions matters because its troubleshooting advice starts by checking them, then removing generated and dependency directories before another install and build.

The redirect path depends on several data systems

Dub uses MySQL for users and link metadata, Redis to cache link records for redirects, and Tinybird's ClickHouse service for click-event analytics. User-created images live in S3-compatible object storage. GitHub OAuth or email links handle sign-in, while QStash supports workflows such as imports, exports, webhooks, payouts, and scheduled jobs. This division supports a serious hosted product, though each boundary adds configuration, credentials, failure modes, and billing.

The scale of that assembly appeared in our install: 2,633 packages and 2,585 MB on disk after 66 seconds. That is a heavy contributor environment and an expensive clean CI cache. The repository itself has no Dockerfile and the self-host guide says Docker is unsupported. Local development can run MySQL plus a PlanetScale simulator and Mailhog through Compose, but Tinybird and Upstash setup remain separate documented steps.

What happened when we ran it

Our pnpm installation succeeded in 66 seconds in an unprivileged Node 22 container with 3 CPUs, 8 GB of RAM, and no secrets. The build ran for 296 seconds, completed 5 of 6 tasks, then failed in apps/web. The log printed a Next.js warning about an exported revalidate field, a stale browser-mapping-data warning, and finally Killed with exit code 137.

The log does not say why the web process was killed, so we will not label it an out-of-memory failure or blame the warnings before it. Exit 137 and the word Killed are the concrete findings. The build had run for 4 minutes 40.268 seconds according to its own task summary, but our allowed measurement records the stage as 296 seconds. Either way, a clean build did not finish within this 8 GB sandbox.

Tests failed separately after 9 seconds. Three of 4 tasks succeeded, while packages/stripe-app exited 1. The visible tail shows utility declaration files being produced and the workspace task summary, but it does not include a failed assertion. We can say the Stripe app test task failed in our run; we cannot infer whether it needed Stripe credentials, hit a code defect, or failed for some other reason.

Self-hosting currently recreates Dub's cloud architecture

The self-host guide calls for accounts with Tinybird, Upstash, PlanetScale, Vercel, GitHub, and either Cloudflare or AWS. Operators also need an application domain and usually a separate short domain. Setup includes deploying Tinybird data sources, creating Redis and QStash credentials, adapting the Prisma schema for the chosen domain, configuring OAuth, creating object-storage access, and placing the Next.js application on Vercel. Resend and Unsplash are optional for specific features.

Our 2,585 MB installation is smaller than the operational dependency list suggests. The guide's caveats say Tinybird, Upstash, PlanetScale, and Vercel are currently required, and describe native database replacements as a future goal rather than current behavior. This is control over source and data placement, but it is not an offline package that can be moved unchanged into a private Kubernetes cluster. An open issue asks about exactly that gap and feature parity outside Vercel.

Cache behavior and redirect safety deserve local tests

An August 2026 issue reports that deleted or re-keyed links can continue redirecting for about 5 seconds because the in-process LRU cache is not cleared with the Redis and Vercel caches. Another open report says a redir_url query parameter can replace a stored destination, creating an arbitrary-redirect path. Both reports cite specific code and reproduction behavior, which makes them suitable targets for regression tests in any exposed deployment.

The repository's 5 workflow files did not give our generic commands a clean result: the build stopped at 296 seconds and the Stripe package failed at 9 seconds. Self-hosters should test redirect invalidation, destination authority, custom domains, authentication, analytics ingestion, and webhook delivery against the exact commit they deploy. A valid dashboard login does not prove that the public redirect edge behaves correctly under mutation or hostile input.

Open-core licensing changes the build-versus-buy choice

Dub describes its core as AGPLv3 and keeps enterprise code under /ee behind a commercial license. Teams that distribute modifications or operate a network service should review their AGPL source obligations. They should also identify whether required SSO or enterprise behavior sits in the commercially licensed area before investing in a fork. The repository's API response showed no latest GitHub Release, so operators need their own commit and upgrade policy rather than assuming release tags define deployment points.

The repository was pushed on August 26, 2026, and GitHub listed 150 open issues and pull requests together. Current activity is a better health signal than the missing Release entry. Dub is compelling for companies that need attribution and affiliate workflows together and are comfortable with its hosted architecture. For an ordinary short domain, Shlink or YOURLS asks for far less infrastructure and source-build patience.

Alternatives

ProjectWhat it isPick it when
ShlinkA self-hosted URL shortener with an API, visit tracking, and container deployment options.pick this instead when you want a focused short-link service with a smaller self-hosting surface than Dub's attribution platform.
YOURLSA long-running PHP application for operating a personal or team URL shortener.pick this instead when simple branded links and familiar PHP hosting matter more than conversion and partner attribution.
KuttAn open-source link shortener with custom domains and basic analytics.pick this instead when you need a conventional shortener and do not need Dub's affiliate or conversion system.

What people are saying

  1. [github-trending] dubinc/dub

Sources

  1. Dub README
  2. Dub self-hosting guide
  3. Dub local development guide
  4. Dub redirect URL issue 4388
  5. Dub stale redirect cache issue 4267
  6. Dub Docker and Kubernetes self-hosting issue 2870

More self-hosted reviews

playport · edge-smart-doh · Comma · ProsperoEden · zulu · node_exporter · the whole board →