PricingDocs
Bars

Data Platform

Managed ClickHouse
Production-ready with Tinybird's DX
Streaming ingestion
High-throughput streaming ingest
Schema iteration
Safe migrations with zero downtime
Connectors
Plug and play Kafka, S3, and GCS

Developer Experience

Instant SQL APIs
Turn SQL into an endpoint
BI & Tool Connections
Connect your BI tools and ORMs
Tinybird Code
Ingest and query from your terminal

Enterprise

Tinybird AI
AI resources for LLMs and agents
High availability
Fault-tolerance and auto failovers
Security and compliance
Certified SOC 2 Type II for enterprise
Sign inSign up
Product []

Data Platform

Managed ClickHouse
Production-ready with Tinybird's DX
Streaming ingestion
High-throughput streaming ingest
Schema iteration
Safe migrations with zero downtime
Connectors
Plug and play Kafka, S3, and GCS

Developer Experience

Instant SQL APIs
Turn SQL into an endpoint
BI & Tool Connections
Connect your BI tools and ORMs
Tinybird Code
Ingest and query from your terminal

Enterprise

Tinybird AI
AI resources for LLMs and agents
High availability
Fault-tolerance and auto failovers
Security and compliance
Certified SOC 2 Type II for enterprise
PricingDocs
Resources []

Learn

Blog
Musings on transformations, tables and everything in between
Customer Stories
We help software teams ship features with massive data sets
Videos
Learn how to use Tinybird with our videos
ClickHouse for Developers
Understand ClickHouse with our video series

Build

Templates
Explore our collection of templates
Tinybird Builds
We build stuff live with Tinybird and our partners
Changelog
The latest updates to Tinybird

Community

Slack Community
Join our Slack community to get help and share your ideas
Open Source Program
Get help adding Tinybird to your open source project
Schema > Evolution
Join the most read technical biweekly engineering newsletter

Our Columns:

Skip the infra work. Deploy your first ClickHouse
project now

Get started for freeRead the docs
A geometric decoration with a matrix of rectangles.

Product /

ProductWatch the demoPricingSecurityRequest a demo

Company /

About UsPartnersShopCareers

Features /

Managed ClickHouseStreaming IngestionSchema IterationConnectorsInstant SQL APIsBI & Tool ConnectionsTinybird CodeTinybird AIHigh AvailabilitySecurity & Compliance

Support /

DocsSupportTroubleshootingCommunityChangelog

Resources /

ObservabilityBlogCustomer StoriesTemplatesTinybird BuildsTinybird for StartupsRSS FeedNewsletter

Integrations /

Apache KafkaConfluent CloudRedpandaGoogle BigQuerySnowflakePostgres Table FunctionAmazon DynamoDBAmazon S3

Use Cases /

User-facing dashboardsReal-time Change Data Capture (CDC)Gaming analyticsWeb analyticsReal-time personalizationUser-generated content (UGC) analyticsContent recommendation systemsVector search
All systems operational

Copyright © 2025 Tinybird. All rights reserved

|

Terms & conditionsCookiesTrust CenterCompliance Helpline
Tinybird wordmark
PricingDocs
Bars

Data Platform

Managed ClickHouse
Production-ready with Tinybird's DX
Streaming ingestion
High-throughput streaming ingest
Schema iteration
Safe migrations with zero downtime
Connectors
Plug and play Kafka, S3, and GCS

Developer Experience

Instant SQL APIs
Turn SQL into an endpoint
BI & Tool Connections
Connect your BI tools and ORMs
Tinybird Code
Ingest and query from your terminal

Enterprise

Tinybird AI
AI resources for LLMs and agents
High availability
Fault-tolerance and auto failovers
Security and compliance
Certified SOC 2 Type II for enterprise
Sign inSign up
Product []

Data Platform

Managed ClickHouse
Production-ready with Tinybird's DX
Streaming ingestion
High-throughput streaming ingest
Schema iteration
Safe migrations with zero downtime
Connectors
Plug and play Kafka, S3, and GCS

Developer Experience

Instant SQL APIs
Turn SQL into an endpoint
BI & Tool Connections
Connect your BI tools and ORMs
Tinybird Code
Ingest and query from your terminal

Enterprise

Tinybird AI
AI resources for LLMs and agents
High availability
Fault-tolerance and auto failovers
Security and compliance
Certified SOC 2 Type II for enterprise
PricingDocs
Resources []

Learn

Blog
Musings on transformations, tables and everything in between
Customer Stories
We help software teams ship features with massive data sets
Videos
Learn how to use Tinybird with our videos
ClickHouse for Developers
Understand ClickHouse with our video series

Build

Templates
Explore our collection of templates
Tinybird Builds
We build stuff live with Tinybird and our partners
Changelog
The latest updates to Tinybird

Community

Slack Community
Join our Slack community to get help and share your ideas
Open Source Program
Get help adding Tinybird to your open source project
Schema > Evolution
Join the most read technical biweekly engineering newsletter

Skip the infra work. Deploy your first ClickHouse
project now

Get started for freeRead the docs
A geometric decoration with a matrix of rectangles.

Product /

ProductWatch the demoPricingSecurityRequest a demo

Company /

About UsPartnersShopCareers

Features /

Managed ClickHouseStreaming IngestionSchema IterationConnectorsInstant SQL APIsBI & Tool ConnectionsTinybird CodeTinybird AIHigh AvailabilitySecurity & Compliance

Support /

DocsSupportTroubleshootingCommunityChangelog

Resources /

ObservabilityBlogCustomer StoriesTemplatesTinybird BuildsTinybird for StartupsRSS FeedNewsletter

Integrations /

Apache KafkaConfluent CloudRedpandaGoogle BigQuerySnowflakePostgres Table FunctionAmazon DynamoDBAmazon S3

Use Cases /

User-facing dashboardsReal-time Change Data Capture (CDC)Gaming analyticsWeb analyticsReal-time personalizationUser-generated content (UGC) analyticsContent recommendation systemsVector search
All systems operational

Copyright © 2025 Tinybird. All rights reserved

|

Terms & conditionsCookiesTrust CenterCompliance Helpline
Tinybird wordmark
PricingDocs
Bars

Data Platform

Managed ClickHouse
Production-ready with Tinybird's DX
Streaming ingestion
High-throughput streaming ingest
Schema iteration
Safe migrations with zero downtime
Connectors
Plug and play Kafka, S3, and GCS

Developer Experience

Instant SQL APIs
Turn SQL into an endpoint
BI & Tool Connections
Connect your BI tools and ORMs
Tinybird Code
Ingest and query from your terminal

Enterprise

Tinybird AI
AI resources for LLMs and agents
High availability
Fault-tolerance and auto failovers
Security and compliance
Certified SOC 2 Type II for enterprise
Sign inSign up
Product []

Data Platform

Managed ClickHouse
Production-ready with Tinybird's DX
Streaming ingestion
High-throughput streaming ingest
Schema iteration
Safe migrations with zero downtime
Connectors
Plug and play Kafka, S3, and GCS

Developer Experience

Instant SQL APIs
Turn SQL into an endpoint
BI & Tool Connections
Connect your BI tools and ORMs
Tinybird Code
Ingest and query from your terminal

Enterprise

Tinybird AI
AI resources for LLMs and agents
High availability
Fault-tolerance and auto failovers
Security and compliance
Certified SOC 2 Type II for enterprise
PricingDocs
Resources []

Learn

Blog
Musings on transformations, tables and everything in between
Customer Stories
We help software teams ship features with massive data sets
Videos
Learn how to use Tinybird with our videos
ClickHouse for Developers
Understand ClickHouse with our video series

Build

Templates
Explore our collection of templates
Tinybird Builds
We build stuff live with Tinybird and our partners
Changelog
The latest updates to Tinybird

Community

Slack Community
Join our Slack community to get help and share your ideas
Open Source Program
Get help adding Tinybird to your open source project
Schema > Evolution
Join the most read technical biweekly engineering newsletter
Back to Blog
Share this article:
Back

Upgrading short link analytics by 100x with Steven Tey

We sat down with Steven Tey, Senior Developer Advocate at Vercel and creator of Dub.co, to talk about why switched Dub's analytics from Redis Sorted Sets to Tinybird.
I Built This!
Tinybird
TinybirdTeam

Tinybird: Hey Steven! Welcome to Tinybird Dev Q&As. Why don’t you introduce yourself?

Steven: Hey Tinybird! My name is Steven Tey. Many of you probably know me as a developer advocate for Vercel, but I also love building things on my own like Dub and One Word Domains. You can check out most of my projects at steventey.com/projects. I live in San Francisco and am very active on Twitter @steventey.

‍

Tinybird: Okay so tell us a little bit about Dub. What is it and why did you build it?

Steven: Sure thing! Dub is an open-source link management tool for modern marketing teams to create, share, and track short links. I started building it in September of 2021 and have been progressively scaling it up and adding features in the last year or so. I “officially” launched it in September of last year.

Dub is an open-source link management tool for modern marketing teams to create, share, and track short links.
A screenshot of Dub's homepage
Dub is an open-source link shortener for modern marketing teams.

I built Dub for a couple of reasons. The first is that being a developer advocate at Vercel, I’m always experimenting and showing off how you can use Vercel to do amazing things. For example, with Edge functions, you can run server-side logic like redirects at very close proximity to users. Link shorteners are really a great use case to demo that feature.

I also built Dub because modern marketing teams want to be able to analyze short-link performance. So from the start, I was focused on adding great link analytics so that marketers could easily track how many times those links were clicked and where those clicks originated.

And of course, I ended up using Tinybird to power those analytics.

‍

Tinybird: Why Tinybird? What problem were you trying to solve that led you here?

Steven: The main issue before I switched Dub’s analytics to Tinybird was scale. Dub was starting to gain traction, and some Dub customers were creating links that were getting hundreds of thousands of clicks.

When I built the Dub MVP, I was using Redis Sorted Sets to store the data for all these clicks, but it wasn’t working for a couple of reasons:

  1. It wasn’t very flexible, so I couldn’t easily sort & filter by the various columns like location, referrer, etc.
  2. It was too slow! Queries were starting to take over 5 seconds, which just created a really bad UX.
I was using Redis Sorted Sets to store click data for Dub, but it was too inflexible and way too slow to query.

‍

Tinybird: How did you hear about Tinybird?

Steven: Well Vercel is a Tinybird customer, and we’ve built quite a few features using Tinybird. I had been hearing great things internally about it, especially from Guillermo Rauch.

I also collaborate a lot with chronark, another avid Tinybird user, and so between what I heard from him and what I was hearing at Vercel, Tinybird felt like a no-brainer.

‍

Tinybird: Tell us how you’re using Tinybird to power Dub’s analytics.

Steven: For every short link you create in Dub, you can view analytics on how many clicks, when the clicks happened, and where the clicks happened (in terms of location, device, browser, OS, and referrer).

Every time somebody clicks a link hosted by Dub, it triggers an event that I send to Tinybird using the Events API. Then Tinybird stores those click events in a Data Source that is indexed by domain and short-link key. So, for example, the short link dub.co/github is indexed by domain (dub.co) and key (github).

Everytime somebody clicks a Dub shortlink, an event us sent to Tinybird using the Events API.

I then created Tinybird Pipes to create GROUP BY queries for different columns: timestamps, country, city, device, browser, OS, referrer, etc. Those are just simple SQL queries.

A screenshot showing short link analytics in Dub
Tinybird uses Dub for all of its short links. It's a beautiful recursion!

Then Tinybird makes it super simple to instantly publish those queries as REST API endpoints (and add dynamic query parameters like filtered time ranges) that I can easily query from my Next.js API Route.

For reference, here is the helper function I use to call my Tinybird endpoints. (The entire project is open source here.)

Tinybird makes it super simple to query clickstream data with SQL and publish those queries as low-latency, dynamic APIs that I can call from my Next.js API Route.

‍

Tinybird: Why has Tinybird worked so well for Dub?

Steven: For one, it solved my scale problem. Since I switched from Redis to Tinybird, Dub’s analytics are about 100x faster and consume about 100x less bandwidth than with Redis.

And the pricing is great! I was on the free tier for quite a while, and even then the paid plans are very scalable and cost-effective.

To sum it up, Tinybird basically is the perfect way to quickly and inexpensively build a time-series analytics backend that I’m confident will scale.

Since I switched from Redis to Tinybird, Dub's analytics are 100x faster and consume about 100x less bandwidth.

‍

Tinybird: What’s next for Dub?

Steven: Well, I’ve amassed quite a list of issues in the repo, and so I’m sort of just focused on churning through those. I also want to migrate Dub to Next.js App Router. Finally, I need to start marketing it more! I’ve mostly been focused on development, and it’s getting good traction so I want to get the word out!

‍

Tinybird: How does Tinybird factor into those plans?

Steven: It’s all about scale. Tinybird is basically the entire backend for Dub. And so as I scale Dub, I’ll just keep leaning on Tinybird to scale with me. I have no concerns about that.

‍

Tinybird: Anything you would share with would-be Tinybird users? Things to try? Things to avoid?

Steven: If you’re building any kind of SaaS or product that has an analytics feature then you should try Tinybird. I highly recommend their Screencasts to get started. Lots of great information there in some very consumable videos.

Also, check out their Starter Kits. The Web Analytics kit is a great place to start if you need to incorporate any kind of web clickstream events into your app.

Tinybird is powerful, the developer experience is amazing, and it’s super affordable.

Other than that, I just highly recommend it. Tinybird is powerful, the developer experience is amazing, and it’s super affordable. Go try it!

Do you like this post? Spread it!

Skip the infra work. Deploy your first ClickHouse
project now

Get started for freeRead the docs
A geometric decoration with a matrix of rectangles.

Product /

ProductWatch the demoPricingSecurityRequest a demo

Company /

About UsPartnersShopCareers

Features /

Managed ClickHouseStreaming IngestionSchema IterationConnectorsInstant SQL APIsBI & Tool ConnectionsTinybird CodeTinybird AIHigh AvailabilitySecurity & Compliance

Support /

DocsSupportTroubleshootingCommunityChangelog

Resources /

ObservabilityBlogCustomer StoriesTemplatesTinybird BuildsTinybird for StartupsRSS FeedNewsletter

Integrations /

Apache KafkaConfluent CloudRedpandaGoogle BigQuerySnowflakePostgres Table FunctionAmazon DynamoDBAmazon S3

Use Cases /

User-facing dashboardsReal-time Change Data Capture (CDC)Gaming analyticsWeb analyticsReal-time personalizationUser-generated content (UGC) analyticsContent recommendation systemsVector search
All systems operational

Copyright © 2025 Tinybird. All rights reserved

|

Terms & conditionsCookiesTrust CenterCompliance Helpline
Tinybird wordmark

Related posts

I Built This!
May 11, 2023
Building privacy-first native app telemetry with Guilherme Oenning
Tinybird
TinybirdTeam
1Building privacy-first native app telemetry with Guilherme Oenning
I Built This!
Mar 30, 2023
Developer Q&A: Monitoring global API latency with chronark
Tinybird
TinybirdTeam
1Developer Q&A: Monitoring global API latency with chronark
I Built This!
May 05, 2023
Low-code analytics with James Devonport of UserLoop
Tinybird
TinybirdTeam
1Low-code analytics with James Devonport of UserLoop
I Built This!
May 09, 2023
How to build a real-time fraud detection system
Joe Karlsson
Joe KarlssonDeveloper Advocate
1How to build a real-time fraud detection system
I Built This!
May 01, 2023
Automating customer usage alerts with Tinybird and Make
David Margulies
David MarguliesSales Engineer
1Automating customer usage alerts with Tinybird and Make
I Built This!
Aug 15, 2023
A practical guide to real-time CDC with MongoDB
Joe Karlsson
Joe KarlssonDeveloper Advocate
1A practical guide to real-time CDC with MongoDB
I Built This!
Jul 07, 2023
Data-driven CI pipeline monitoring with pytest
Juan Madurga
Juan MadurgaSenior Backend Engineer
1Data-driven CI pipeline monitoring with pytest
I Built This!
Jun 20, 2023
Designing and implementing a weather data API
Jim Moffitt
Jim MoffittDeveloper Advocate
1Designing and implementing a weather data API
I Built This!
Oct 17, 2025
Building real-time, generative UIs for analytics with Tinybird and Thesys
Zahle K.
Zahle K.Founding Engineer at Thesys
1Building real-time, generative UIs for analytics with Tinybird and Thesys
I Built This!
Jul 28, 2025
Multi-agent Mastery: Building integrated analytics features with Claude Code and Tinybird Code
Cameron Archer
Cameron ArcherTech Writer
1Multi-agent Mastery: Building integrated analytics features with Claude Code and Tinybird Code