Static and dynamic QR codes are not the same thing
A static code stores the destination inside the image itself. Nothing is looked up when someone scans it, which is why it works offline, costs nothing to keep alive and cannot be disabled by a company going out of business. The trade-off is that the destination is fixed: changing it means printing a new code.
A dynamic code stores a short redirect address instead, and the provider maps that to your real destination. You can repoint it later and count scans, but the code only keeps working while that provider does — and most charge a subscription for the privilege. For a poster, a menu or packaging that will be reprinted anyway, static is usually the honest choice.
How URL length changes the code
QR codes come in 40 sizes, called versions, from 21×21 modules up to 177×177. The generator picks the smallest version your data fits into, so a 30-character link produces a visibly simpler grid than a 200-character one with campaign parameters attached.
Density matters because a scanner has to resolve individual modules. A dense code printed small, or shown on a low-resolution screen, is the usual reason a code that worked on your monitor fails on a poster. If your link is long and the print area is fixed, shorten the URL first — that is a formatting decision, not a marketing one.
Printing: the 10:1 rule and the quiet zone
Size the code for the distance it will be scanned from at roughly ten to one: readable at 25 cm means about 2.5 cm across, at 3 m means about 30 cm. Below about 2 cm, phone cameras start to struggle regardless of how simple the code is.
Leave the margin alone. The specification calls for a quiet zone of four modules of blank space on every side, and cropping it tight against artwork or a coloured background is one of the most common reasons a printed code will not scan.
Counting scans without paying for a dynamic code
Add UTM parameters to the link before generating — for example ?utm_source=poster&utm_medium=qr — and your existing analytics will attribute the visits without any QR service in the loop. A separate parameter per placement tells you which poster worked.
The cost is a longer URL and therefore a denser code, which is the trade-off described above. If the link is already long, point the code at a short page on your own domain that redirects; you keep both the tracking and control of the destination.