Clew

HomeToolsMarketingUTM QR code generator

UTM QR code generator for offline events

Enter the page, the event and the placements — booth, flyer, badge, slide, poster. The tool builds a UTM-tagged link for each placement with one naming convention, draws a QR code for it, and exports a ZIP of PNG and SVG files plus a table of links. After the event, GA4 shows which placement brought visitors.

● Free, no sign-upUpdated:

Where every code leads. Prefer a short URL of a page you will keep after the event.
For example “SaaS Summit 2026” → saas_summit_2026.
One per line: booth, flyer, badge, slide, poster in hall A, handout, merch, business card.

Tagging convention

Put the placement in
utm_content — one source for the whole event, placements differ by content. utm_source — every placement counts as its own source.
Shared by all placements: the event or venue name.
One for all offline campaigns: offline, print or qr. Values are lowercased, spaces become the separator, non-Latin letters are transliterated.
Separator for spaces

Print

Error correction
H if a logo goes on top of the code.
How far away people scan: a booth 1–2 m, a flyer 0.3 m.

—

 

    Scan every code with a phone before the print run and open the link — check that the page loads and the tags are still in the address.

    Everything is calculated in your browser — nothing you enter is sent anywhere.

    How to use it

    1. Enter the page and the eventThe URL is where the codes lead; the event becomes utm_campaign. Capitals and spaces turn into lowercase and underscores.
    2. List the placementsOne per line. Each placement gets its own link and QR code, so after the event you can see what worked.
    3. Check the conventionBy default utm_source is the event, utm_medium is offline and utm_content is the placement. You can move the placement to utm_source or pick another medium.
    4. Download and testThe ZIP holds a PNG and an SVG of each code plus the table of links. Scan a test print of every code before the full run.

    How to tag offline placements

    A QR code on a flyer or a booth brings people to your site with no referrer: without tags, analytics records the visit as direct and mixes it with everyone who typed the address. UTM parameters in the link inside the code say where the visitor came from. The default convention:

    utm_campaign = the event saas_summit_2026 utm_medium = offline one medium for every offline campaign utm_source = event or venue saas_summit utm_content = the placement booth, flyer, badge, talk_slide, poster_hall_a
    • Placement in utm_content when you compare events with each other and placements within an event. Reports keep one source, and an event does not break into a dozen sources.
    • Placement in utm_source when the same formats (flyers, badges, posters) repeat across many events and you compare the formats themselves.
    • Normalisation. Values are lowercased, non-Latin letters transliterated and spaces replaced with underscores: GA4 is case-sensitive, so “Booth” and “booth” would become two rows. These are the same rules — and the same code — as in the UTM builder.
    • Keep the medium. Pick one utm_medium value — offline, print or qr — and use it for every offline campaign.

    Reading the results in GA4 and Yandex Metrica

    Google Analytics 4. Go to Reports → Acquisition → Traffic acquisition. Switch the primary dimension to “Session source / medium” and find the rows with medium offline; add the secondary dimension “Session campaign” or “Session manual ad content” (that is where utm_content goes). In the default channel grouping these sessions land in Unassigned: GA4’s rules do not know an offline medium. If you want a separate row, create a custom channel group with the condition “medium exactly matches offline”.

    Yandex Metrica. Reports → Standard reports → Sources → UTM tags. Expand utm_medium = offline, then utm_campaign (the event) and utm_content (the placements). Add your goals to the report to see conversions, not just visits, for each placement.

    • Look at the period from the start of the event to 1–2 weeks after: people scan flyers at home too.
    • Visits without conversions are a signal as well: many visits from the booth but no sign-ups point at the page, not the code.
    • If your site drops query parameters on a redirect (http to https, or to a mobile version), the tags are lost — check by scanning the code.

    Printing tips: size, logo, testing

    The popular rule says the side of a QR code should be at least a tenth of the scanning distance. We checked where it comes from: a phone camera with a field of view of about 70° sees a strip about 1.4 × d wide at distance d, and a decoder needs 3–4 camera pixels per module. That gives a module of at least d/250:

    code side ≥ modules × distance / 250 (and at least 2 cm) 25 modules, 1 m → 100 mm (the d/10 rule) 41 modules, 1 m → 164 mm (a link with four tags, ~100 characters, level M)
    • A tagged link is longer, so its code is denser than a bare URL’s. The d/10 rule fits a short link; the tool computes the minimum for each of your codes.
    • A logo on top only with error correction H (30 %), centred and covering no more than a fifth of the code.
    • Margin — 4 modules of light background; do not put the code against the edge of the sheet or a dark panel.
    • Dark code on a light background, matte paper without glare; for posters and print shops use SVG — it stays sharp at any size.
    • Test a proof of every code from the real distance with two or three phones before the print run.

    Sources

    1. Google Analytics Help: Default channel group — channel rules and Unassigned — support.google.com/analytics.
    2. Yandex Metrica Help: UTM tags report — yandex.com/support/metrica.
    3. ISO/IEC 18004:2015 — QR Code bar code symbology specification (error correction levels, 4-module quiet zone).
    4. PKWARE. APPNOTE.TXT — .ZIP File Format Specification 6.3 (the archive format built in your browser).

    FAQ

    How do I add UTM parameters to a QR code?

    Build the tagged link and encode all of it: a QR code stores the link as text. This tool does it for every placement at once — one link and one code each.

    What utm_medium should QR codes on flyers and booths use?

    One value for all offline campaigns: offline, print or qr. We default to offline. What matters is never changing it between events, or reports split one channel into several.

    Where do I see QR code visits in GA4?

    In Reports → Acquisition → Traffic acquisition with the “Session source / medium” dimension: look for medium offline, then add “Session campaign” and “Session manual ad content” to see events and placements.

    Why do QR code visits show up as Unassigned in GA4?

    GA4’s default channel rules do not recognise the offline medium, so those sessions fall into Unassigned. Read them by source / medium, or create a custom channel group for offline.

    How big should a printed QR code be?

    For a short link, at least a tenth of the scanning distance. A tagged link makes the code denser, so more precisely: modules × distance / 250, and never below 2 cm. The tool computes it for each code.

    Can I put a logo in the middle of the code?

    Yes, with error correction H and a logo covering no more than a fifth of the code. Always test the code with a phone before printing.

    Are my links sent to your server?

    No. The links, QR codes and ZIP are built in your browser; nothing is sent to a server or written to the page URL.

    More in Marketing

    Open the collection →

    Tours, tooltips and checklists whose impact shows up in the numbers.

    Try Clew for freeHow it worksFree plan forever · no credit card

    Product tours, popups and onboarding in the age of AI

    7 patterns with step counts, copy rules and what to measure, what AI changes, and a checklist before you publish. PDF, 2 pages. What is inside →