One code per placement · UTM-tagged URLs · Print-ready PNGs
Marketing QR Code Generator | Bulk QR for Campaigns
Create multiple QR codes for your marketing materials. Perfect for flyers, posters, product packaging, and promotional campaigns.
Why one code per placement
A single QR code tells you a scan happened. Many codes tell you where.
If the same code sits on every flyer, poster and box insert, your analytics can only report "someone scanned". Give each channel, location or design its own tracked URL and the same report starts answering which placement earned the visit.
Attribution by placement
Twelve poster locations become twelve rows in your traffic report instead of one. You can stop paying for the spots that never bring anyone to the page.
The URL does the tracking
MultipleQR does not count scans. The UTM parameters inside each URL are what your analytics reads, so the data lives in your own account, not in a QR vendor dashboard.
Compare two designs fairly
Print design A and design B with the same offer and a different utm_content value. Split them evenly across the same locations and compare visits and conversions.
Packaging that stays in homes
Codes on boxes and inserts get scanned months later. Static codes never expire, but the page must stay live, so point them at a URL on your own domain that you can redirect if the campaign ends.
Straight from your spreadsheet
Build the URLs with a formula and paste the column. If you upload a CSV instead, note that every non-empty cell becomes a code, so export only the URL column, without a header row.
Clean handoff to design
The ZIP keeps your row order (qr-1.png, qr-2.png…), which makes it easy to match codes to artwork. The Share button copies a link that reopens the same list for a colleague.
UTM builder in bulk
Build one tracked URL per channel, then paste them all
UTM parameters are plain text added after a "?" in your URL. Analytics tools read them when someone lands on the page. Pick a naming convention before you print anything and stick to it: lowercase, hyphens instead of spaces, and the same spelling in every row.
utm_campaign
Same for every code in the campaign
e.g. spring-2026
utm_medium
Same for the whole format
e.g. print, ooh, packaging
utm_source
Changes per channel or location
e.g. flyer, poster-station, mailer
utm_content
Changes per design or placement
e.g. design-a, store-014, back-cover
Sample input: paste into the generator, one URL per line
https://example.com/spring?utm_source=flyer&utm_medium=print&utm_campaign=spring-2026&utm_content=design-a
https://example.com/spring?utm_source=flyer&utm_medium=print&utm_campaign=spring-2026&utm_content=design-b
https://example.com/spring?utm_source=poster-station&utm_medium=ooh&utm_campaign=spring-2026&utm_content=north-exit
https://example.com/spring?utm_source=poster-station&utm_medium=ooh&utm_campaign=spring-2026&utm_content=south-exit
https://example.com/spring?utm_source=mailer&utm_medium=print&utm_campaign=spring-2026&utm_content=zone-3
https://example.com/spring?utm_source=box-insert&utm_medium=packaging&utm_campaign=spring-2026&utm_content=sku-1180 Generate the URLs with a formula
With source in column A, medium in column B and content in column C, a formula like this in Google Sheets or Excel builds the full URL for every row. Fill it down, copy the column and paste it above.
="https://example.com/spring?utm_source="&A2&"&utm_medium="&B2&"&utm_campaign=spring-2026&utm_content="&C2 Keep the codes easy to scan
Every extra character adds modules to the code. Short values such as "ooh" or "store-014" keep the pattern open enough to scan from a distance. If your URLs are very long, use a short path on your own domain that redirects to the tagged URL, and keep the parameters on the redirect target. See our QR code size guide for print sizes by scanning distance.
Measuring results
Reading campaign QR traffic in Google Analytics 4
Because the tracking lives in the URL, you measure QR campaigns the same way you measure email or paid social: through sessions that arrive with your UTM values. No extra script is needed beyond the analytics tag already on your site.
Compare channels
Open Reports → Acquisition → Traffic acquisition and switch the primary dimension to "Session source / medium". Your rows appear as flyer / print, poster-station / ooh and so on.
Compare placements
Filter by "Session campaign" to isolate the campaign, then add "Session manual ad content" as a secondary dimension (or in an Exploration) to see utm_content: design-a versus design-b, north exit versus south exit.
Know the limits
Analytics counts sessions that load the page, not raw scans. Someone who scans twice may count once, and a visitor who blocks analytics will not appear. Treat the numbers as a comparison between placements, not an exact scan total.
Want per-scan counts or the ability to edit destinations inside a QR platform? That requires dynamic QR codes, which MultipleQR does not offer. Read static vs dynamic QR codes and what to track in QR code analytics to decide which approach fits your campaign.
Before you send it to print
Campaign QR checklist
01
Decide what you will compare
Write down the question first: which neighborhood, which poster location or which design wins? That decides whether utm_source or utm_content carries the difference.
02
Build the URL list in a spreadsheet
One row per placement, one column for the finished URL. Keep a second column with the human label (for example "Poster, north exit") so the print shop knows where each code goes.
03
Open every URL before generating
Click a few of the finished URLs in a browser. Typos in the domain or a missing "?" break attribution, and nobody notices until the campaign is over.
04
Generate and download the ZIP
Paste the URL column into MultipleQR. The ZIP contains qr-1.png, qr-2.png and so on in the same order as your rows, so the seventh URL is qr-7.png. Blank lines are skipped, so remove empty rows first.
05
Scan a printed proof
Print one sheet at the real size, scan it with an iPhone and an Android phone, and confirm the visit shows up in your analytics real-time view with the right source.
06
Add a short call to action and a fallback
Tell people what they get ("Scan for 15% off") and print a short readable URL next to the code for anyone who prefers to type it.
Keep planning
Guides and tools for campaign QR codes
QR marketing strategies
Ideas for where QR codes fit in a campaign and what to offer people who scan.
QR codes for coupons
How to run printed offers and discount codes through a QR scan.
QR codes on packaging
Placement and content tips for boxes, labels and inserts.
CSV & Excel import
Turn a column of campaign URLs from your sheet into codes.
Batch ZIP download
Get every placement code as numbered PNGs in one file.
Branding around your QR
Frames, calls to action and branded URLs around a plain code.
Common questions
Marketing QR code generator — FAQ
Can MultipleQR tell me how many times each campaign QR code was scanned?
No. MultipleQR creates static QR codes and never sees who scans them. Measurement happens on your side: encode a different UTM-tagged URL in each code and your analytics tool (Google Analytics 4, Matomo, Plausible and similar) reports the visits that arrive through each one.
Which UTM parameters should I change per placement?
Keep utm_campaign the same for the whole campaign and utm_medium the same for the format (for example "print" or "ooh"). Change utm_source for the channel or location (flyer, poster-station, mailer) and utm_content for the variant (design-a, design-b, store-014). That way you can compare channels and creatives inside a single campaign report.
Can I change where a QR code points after the flyers are printed?
Not the code itself: a static QR code always contains the exact URL you encoded. What you can do is encode a URL on a domain you control, such as yourbrand.com/spring, and later configure a redirect on your own website. If you do, make sure the redirect keeps the UTM parameters or your reports will lose the attribution.
Do long UTM URLs make the QR code harder to scan?
Longer URLs produce denser codes with smaller modules, which need more print size to scan reliably. Keep parameter values short and lowercase, drop parameters you will never report on, and print a test copy at the final size before approving a large run.
Is a 300 px PNG big enough for posters and billboards?
Each code is exported as a 300 × 300 px PNG that already includes the standard four-module white quiet zone. QR modules are plain squares, so the image can be enlarged in your design tool without losing its shape; switch off image smoothing or resampling if your tool offers it. For very large formats, print a proof and scan it from the real viewing distance.
Should every flyer in a stack get its own QR code?
Usually not. Give each distribution point or design variant its own code, not each sheet of paper. Twenty codes for twenty neighborhoods tells you which area responds; thousands of one-off codes make your reports noisy and are harder to manage at the print shop.
Does my campaign list get uploaded anywhere?
The codes are drawn in your browser and there is no account or server-side storage. The only time your list leaves your device is if you press Share: that copies a link with your values encoded in the URL, so only send it to people who should see the campaign URLs.