What you are seeing
The code scans, but the page that opens is not the page you intended: an old page, a different product, a staging site, or a stranger's content. A wrong destination is one of the most damaging QR failures, because visitors blame you for sending them somewhere unexpected, and a printed run can carry the wrong link for months. The cause is almost always upstream of the code: a typo in the payload, an old file reused, a redirect that points elsewhere, or a dynamic code whose destination was changed. The fix is to verify the payload and the redirect chain before you reprint.
Likely causes
1.
Typo in the encoded URL — One wrong character in the payload sends visitors to a different address or a dead page. Test: decode the payload and read the URL character by character against the intended address.
2.
Old artwork reused for a new campaign — A code file from an earlier job gets reused with its old destination still inside. Test: check the file history and the date the artwork was created.
3.
Redirect chain points elsewhere — The encoded URL may be correct while a redirect rule, a shortener, or a campaign tool sends visitors to the wrong page. Test: follow the redirect chain hop by hop and note where it diverges.
4.
Dynamic code destination was changed — A dynamic code points at a redirect that someone updated, intentionally or by mistake. Test: check the redirect settings and change history for the code.
5.
Lookalike domain or typosquat — A domain that looks almost right, with a swapped letter or a different ending, can send visitors to someone else's site. Test: compare the decoded domain with your real domain letter by letter.
Step-by-step fix
1. Decode the payload and write down the exact URL it contains.
2. Compare that URL with the intended destination, character by character.
3. Follow the redirect chain from the encoded URL to the final page and note every hop.
4. Fix the fault at its source: the payload, the redirect rule, or the destination page.
5. Regenerate the code from the corrected URL and test the full journey on two phones.
6. If printed copies already exist, replace them and add a check that stops old artwork being reused.
Putting this into practice
In practice, wrong-URL failures are process failures: an old file reused, a redirect edited without a note, or a proof that nobody followed to the final page. Keep one record per code that names its intended destination, and check every proof against that record before printing. That single habit prevents most wrong-destination reprints. Keep a short note of what you tested, what failed, and what you changed, so the next person starts from evidence rather than guesswork. A fix that is written down survives staff changes and reprints; a fix that lives only in memory gets repeated.
Common mistakes to avoid
- Fixing the printed code without checking the redirect chain, so the new code lands on the same wrong page.
- Reprinting the full run before a single proof passes, which turns one failure into many.
- Testing on one phone in ideal conditions instead of two phones in the real conditions where a code that opens the wrong URL will be used.
- Changing the artwork and the placement at the same time, so you cannot tell which change fixed a code that opens the wrong URL.- Skipping the proof test because the change looked small, when small changes cause most repeat failures.
Quick checklist
- The decoded payload matches the intended destination exactly
- Every redirect hop lands on the intended page
- The final page is the intended one on two phones
- The corrected proof passes on two phones in the real conditions
- The fix is recorded in the job file so the next reprint starts from a proven setup
- Every printed copy is checked against the approved proof
- The proof is retested after any later change to the link, design, or placement
Related tools and guides
- [QR redirect chain viewer](/qr-redirect-chain-viewer)
- [QR expiry checker](/qr-expiry-checker)
- [QR batch validator](/qr-batch-validator)
- [QR typosquat checker](/qr-typosquat-checker)
- [QR safety checker](/qr-safety-checker)
- [UTM builder](/utm-builder)
- [blog](/blog)