errorLevel trades capacity for damage tolerance: L recovers about 7% of the code, M about 15%, Q about 25% and H about 30%. A higher level means more modules in the same box, each one smaller. The default, M, suits a code read off a clean screen.
- icon is an image URL, drawn in the center of the code with the modules under it cleared. Error correction has to rebuild them.
- Raise errorLevel when you add an icon. iconSize defaults to 40, a quarter of the default size of 160, which is more than M recovers well. Use Q or H, or shrink the icon.
- The only warning is for icon with errorLevel="L". A code with a large logo can still fail on many phones without any warning.
- Test the real code on a real phone, from the distance your readers will stand at.