Free tool

QR Code Generator & campaign tracker

Codes that cannot expire, at the exact size you will print them. Pick what the code should do, pick the surface it goes on, and the tool tells you whether it will actually scan there - before the flyers are printed. Then it hands every promotion channel its own tagged link so you can see which one sold the tickets.

9 content types · print size checked in millimetres · batch sheets · UTM tracker · nothing leaves your browser

What should the code do

How it looks

Pattern

Corner ring

Corner centre

The three big corners are what a camera uses to find the code, so whatever shape you pick they keep their 7 / 5 / 3 module proportions. Anything the tool thinks a picky scanner could trip over is flagged on the code itself, with a one-click fix.

Colours

Keep both ends dark. A fade that runs into a pale colour is the fastest way to make a code that scans on your screen and fails on paper - the contrast read-out above always judges the palest end.

Corner colours optional

Dark code on a light background, never the other way round, and never over a photo. Scanners read contrast, not colour.

Logo in the middle

A logo works because a QR code carries spare copies of its own data - the tool measures exactly how much of that spare the logo spends, keeps a tenth of it in reserve for real-world dirt and creases, and decodes the finished code to prove it still reads.

Frame around it

A frame grows outwards, so the code stays exactly the width you picked. The four print pieces below carry their own headline, so they are printed without it.

Where it gets printed

The millimetres are the code itself, not the artboard. The quiet zone around it is added on top and is listed in the placement spec below.

How much damage it survives

More recovery means a denser pattern, so the same link needs a bigger print. The tool re-checks the module size every time you change this.

This code

Before you send it to print

    Placement spec for your designer

    
    								
    							

    Print something usable, not just the code

    Four pieces that go straight to the office printer on plain A4, laid out in real millimetres so the code comes out at the size it was checked at.

    In the print dialog, set scale to 100% and turn off "fit to page" - that is what keeps the millimetres honest.

    Many codes at once, each one labelled

    One line per code. Write Label | content to name them yourself, or paste bare links and the label is taken from the link. Tabs and label,content CSV work too. Lines starting with # are ignored.

    Nothing on the list yet.

    The ZIP holds an SVG and a 300 dpi PNG of every code, a list with the file names next to the content, and a README with the printing rules. It is built in your browser, which is why nothing is uploaded.

    The list, checked one by one

    One link per channel, so the report can tell them apart

    Put your ticket page in once. Every channel you add gets the same page with utm_ tags on the end, which is what makes Google Analytics, Meta and your own reports show them as separate lines instead of one lump of "direct".

    Your channels

    Channel utm_source utm_medium utm_content Tagged link Code Remove

    Digital channels only need the tagged link - nobody scans a code off their own phone screen. Printed surfaces get a code as well, at a size checked against that surface.

    Built for print, not for screenshots

    Six things most generators skip

    A code is easy to make. A code that still scans off a lanyard in a dark room, six months after the campaign, is the actual job.

    It cannot expire

    Your code cannot expire, because there is nothing to expire. No redirect. No account to cancel. Print it and it still works in five years. Free generators that route through their own domain can start charging, add an interstitial or simply disappear - and every flyer you printed dies with them.

    The size is checked, not guessed

    Every code is measured in modules, the little squares. Under about 0.4 mm per module, printers smudge them and phones give up. The tool works out your module size from the link length and the millimetres you picked, and says plainly when a link needs a bigger print.

    Scan distance you can plan around

    Roughly ten times the code width, and never further than the camera can resolve one module. That second limit is why a long tagged link shrinks the distance: same paper, denser pattern, guests have to walk closer.

    It reads its own codes back

    After a code is drawn, a separate piece of code reads the pattern back out of the picture - unmasks it, checks the error-correction blocks, decodes the characters - and compares it to what you typed. That is what the "decoded after rendering" line means.

    Whole sheets, not one file at a time

    Table numbers, cloakroom tags, lane signs, guest badges: paste the list and print one labelled sheet with cut guides, or take a ZIP of every SVG and PNG. The label is printed under each code so nobody has to guess which is which after cutting.

    Tracking that survives the door

    The campaign tracker gives the Instagram bio, the flyer, the partner newsletter and the door sign each their own tagged link, warns you when two rows would merge into one line in your report, and prints the physical ones at a size that works on that surface.

    How big does it need to be

    Start from the distance a guest scans from, not from what looks nice in the layout. The rule of thumb is a code about a tenth of the scan distance, and these are the surfaces the tool has presets for:

    Surface Code width Reads from about
    Lanyard or badge20 mm20 cm
    Flyer, A530 mm30 cm
    Table tent40 mm40 cm
    A4 poster80 mm80 cm
    Entrance door or A3150 mm1.5 m
    Stage backdrop500 mm5 m

    Those distances assume a short link. Add a long tagged link and the pattern gets denser, so the same piece of paper is readable from closer up - the tool recalculates it as you type instead of leaving you with a poster nobody can scan from the pavement.

    What the words mean

    Module
    One little square. Everything about printability comes back to how many millimetres one module gets.
    Quiet zone
    The empty margin around the code, four modules wide. Without it a scanner cannot find where the code starts.
    Version
    The grid size, 1 to 40. Version 1 is 21 x 21 modules, version 40 is 177 x 177. Longer content means a higher version.
    Recovery
    How much of the code can be damaged and still read: 7, 15, 25 or 30 percent. Higher recovery packs more data in, so it needs a bigger print.
    Static code
    The link is inside the pattern itself. Nothing sits in the middle, so nothing can be switched off or start charging.
    utm_source
    Where the click came from: instagram, partner, flyer. The tags are read by analytics tools, and guests never see a difference.

    One thing a static code cannot do

    It cannot be re-pointed after printing. That is the trade for never expiring. If the destination might move, print a link you control - your own short URL on your own domain - and change where that goes, rather than trusting somebody else's redirect.

    Codes on the tickets, too

    Let the ticket carry its own code

    Venuera issues every ticket with a unique QR code and the Check-in add-on scans them across as many phones as you like, with or without signal, showing live entry stats per door. The codes on this page get guests to the ticket page - those ones get them through it.

    See the Check-in add-on