No watermark, no expiry, no upload. Everything is generated on this page, so nothing you type leaves your device.
The shape of each square in the code. Purely cosmetic to a scanner, which reads the centre of each one either way.
Rounded looks softer and is what most modern codes use. It does shrink each square's ink very slightly, so if you are printing at 2 cm and a scan is marginal, square is the safer of the two.
Square also makes a much smaller SVG, because neighbouring squares merge into one shape instead of each needing its own.
A QR code stores spare copies of its own data, so it still scans when part of it is scratched, smudged, curved or covered. The level sets how much of it is spare.
Spare data takes room, so a higher level packs more squares into the same space. Printed small, those squares get harder to read, which is the trade.
H is the default because printed codes take real damage, and a centre logo eats into the same budget.
Locked to H while a logo is in place. A logo covers data, and only H carries enough redundancy to survive it in print.
Most tools blur the line on purpose. Here is the honest version.
It works forever, needs no server and never expires. But it cannot be changed: once the code is printed, the destination is printed too.
Right for a WiFi password, a contact card, or a link that will never move.
The code points at a short redirect you control, so you can change where it goes after printing. Fix a broken link on 5,000 menus without reprinting one.
It runs on your own domain, so if you ever leave, repoint the DNS and every printed code keeps working.