QR Code Says 'Invalid' or Shows an Error When Scanned
This usually traces to one of three causes: the content was malformed when the code was created (a broken URL, corrupted vCard text, or a hand-built WiFi string with a syntax mistake), the printed pattern is damaged enough that the scanner recovered garbage data instead of failing cleanly, or — for links specifically — the code scanned fine and the destination page itself is what's broken or gone. Regenerate from a trusted generator rather than hand-editing a QR string, and test immediately after creating any new code.
The most common cause is content that was malformed at the moment the code was created, not damage after the fact. This happens most often when someone builds the underlying text manually instead of using a generator that validates the format — a WiFi QR code has a specific syntax for network name, password, and security type, and a small typo in that structure produces a code that scans but decodes into nonsense the phone can't interpret. The same applies to vCard contact codes, which follow a specific structured format, and to URLs missing the https:// prefix or containing stray characters.
The second cause is physical damage to the printed pattern that's severe enough to overwhelm the code's error correction, but not severe enough to stop the phone from attempting to read it at all. A code with a torn corner, heavy print smudging, or a sticker partially covering it can sometimes get read as valid-looking but incorrect data, rather than simply failing to scan. This is different from a code that just won't scan at all — here the phone reports an error because it decoded something, just not the right something.
The third cause, specific to link-based codes, is that the code itself worked exactly as intended — it scanned, decoded the URL correctly, and opened it — but the destination page is what's broken. A page that's been moved, deleted, or is temporarily down will show a browser error, like a 404 or a "site can't be reached" message, that has nothing to do with the QR code itself, even though it feels like the same failure to whoever's scanning. This is worth checking independently: open the exact encoded URL in a browser and see if it loads on its own, separate from scanning.
The fix for the first two causes is the same — regenerate the code from a proper generator that validates the input format rather than hand-typing raw QR text, and physically test-scan the fresh code right after creating it, before it's printed or shared anywhere. For the third cause, the fix is on the destination side: confirm the linked page is live and correct, and if it's been moved, either restore it at the same address or generate a new code pointing at the new one.