Why I Built a Self‑Hosted UTM & QR Code Builder

Much to my chagrin, it appears I work in “marketing.” (This is a joke for my wife). As such, I’ve needed to generate UTM‑tagged URLs and QR codes for web links, community organizations, and personal volunteer work. The tools I found usually fell into one of four categories:

  • Required accounts
  • Stored your data
  • Injected branding or analytics
  • Or simply cost money for something fundamentally simple

This seemed ludicrous to me, so I endeavored to build my own.

The Problem with Existing Tools

Most UTM and QR generators share a few issues:

  • Data visibility – campaign names, sources, and destinations are logged somewhere outside your control
  • Over‑engineering – dashboards, workspaces, accounts, billing tiers
  • Under‑engineering – no versioning, no reuse, no easy sharing of configs

I don’t like sharing unnecessary data with people and organizations when I don’t need to. Yes, many sites that claim they don’t capture your data and may not, but I’m about privacy as much as possible.

I wanted something that:

  • Runs locally or on my own infrastructure
  • Never stores campaign data on a server
  • Produces URLs and QR codes instantly
  • Can be shared without creating “accounts”

Design Goals (Non‑Negotiables)

From the start, I constrained the solution intentionally:

✅ No database
✅ No authentication
✅ No third‑party SaaS dependencies
✅ Portable deployment
✅ Easy enough that non‑developers can use it

Those constraints shaped every technical choice that followed.

Why UTMs + QR Codes Together?

UTMs and QR codes are commonly used together, but tools often treat them separately.

This app:

  • Builds correct UTM URLs
  • Detects and extracts existing UTMs
  • Generates QR codes from the final URL
  • Allows reuse via browser storage or shareable links

That creates a single, reproducible campaign artifact, not two disconnected steps.

What This Post Isn’t

This isn’t:

  • A startup pitch
  • A SaaS announcement
  • A lead funnel

It’s simply an explanation of why this exists.

In the next post, I’ll break down how it’s built—and the decisions behind the stack.

👉 The project is fully open source on GitHub: https://github.com/kmsigma/utm_qrcodes

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.