Free UTM Campaign Link Builder
Build trackable campaign URLs with UTM parameters for Google Analytics and other tools. Live preview, presets, and one-click copy.
Quick presets
Where the traffic comes from (referrer).
The marketing channel/medium.
The specific campaign or promotion.
Paid keywords (optional, for paid search).
Distinguishes similar links/ads (optional, for A/B tests).
π‘ UTM parameters let Google Analytics, Plausible, and other tools attribute traffic to specific campaigns. Keep naming consistent (e.g. always 'email', never sometimes 'Email') β analytics treats them as case-sensitive and will split your data otherwise.
Common uses
- UTM Links for Email CampaignsTrack which newsletter or email drove traffic and conversions in your analytics.
- UTM Links for Social MediaMeasure traffic from each social platform and post accurately.
- UTM Links for Paid Ad CampaignsAttribute conversions to specific ads, keywords, and creatives.
- UTM Links for Print & QR CodesTrack offline campaigns β flyers, posters, business cards β via QR codes.
- UTM Links for Influencer PartnershipsGive each influencer a unique tracked link to measure who drives results.
How It Works
The UTM builder assembles tracking URLs entirely in the browser using the standard URL and URLSearchParams APIs β no server, no upload. As you type, a live useMemo hook parses your base URL, validates the hostname, and appends only the UTM parameters you have filled in.
- 1URL parsing and validationYour base URL is fed into the browser's built-in URL constructor. The tool auto-prepends https:// if no scheme is present, then checks that the hostname contains at least one dot (or is localhost) β rejecting freeform prose before it can corrupt the output.
- 2UTM parameters appended via URLSearchParamsEach filled-in field (source, medium, campaign, term, content) is written to the URL's search-params object with URLSearchParams.set(). If the lowercase toggle is on, values are lowercased at this point, which prevents mismatched attribution caused by capitalisation inconsistencies.
- 3QR code rendered by the qrcode libraryWhenever the final URL changes, the qrcode library renders a 256-px data-URL for the inline preview and simultaneously draws a 1024-px version onto an off-screen canvas. The canvas is then serialised to a PNG Blob via canvas.toBlob() so the download button can save it synchronously β required on iOS, where async Blob creation inside a click handler is blocked.
- 4Shareable template via the page hashThe form state (base URL plus any UTM values) is continuously encoded into the page's URL fragment using window.history.replaceState. Anyone who opens that hash-bearing URL gets the form pre-filled, so you can save or share a campaign template without any server-side storage.
Related Tools
UPI Payment QR Code Generator
Create a free UPI payment QR code for India in seconds. Enter your UPI ID (VPA), payee name, and an optional fixed amount and note, then download a print-ready PNG or copy the upi:// link. Works with Google Pay, PhonePe, Paytm, and BHIM. 100% private and client-side.
Browser Fingerprint Auditor
See exactly what tracking scripts learn about your browser β canvas, WebGL, audio, fonts, screen, timezone and more β plus a SHA-256 composite hash. Run twice to confirm your privacy mitigations work. Nothing is uploaded.
Twibbon / Frame Maker
Add a campaign or event frame (transparent PNG) to your profile photo β drag and zoom behind the frame, export a square image. No account, no upload, no watermark.