A QR's version is its size in modules (the little squares). Version 1 is 21×21. Each version up adds 4 modules per side: v2 is 25, v3 is 29, on up to v40 at 177×177. Higher versions hold more data, but the trade-off is that each module shrinks at the same printed size.
Encoding modes
QR packs bits differently depending on what you're encoding. Numeric mode uses 10 bits per 3 digits, which is genuinely efficient. Alphanumeric (digits, uppercase, a handful of symbols) uses 11 bits per 2 characters. Byte mode handles anything but spends 8 bits per character. If your content is all digits or all uppercase, you'll fit a lot more in the same version.
Error correction levels
QR codes use Reed-Solomon error correction so they keep scanning when damaged. There are four levels:
- L: about 7% recovery.
- M: about 15%. The usual default.
- Q: about 25%. Good for codes that will get scuffed.
- H: about 30%. What you need if you want a logo dropped in the middle.
Higher recovery costs you data capacity. Going from L to H roughly halves what you can fit.