How to build a QR code scavenger hunt with clues that hold up
Anyone can tape a QR code under a park bench. The more interesting question is what happens when the wrong person finds it first.
Most QR scavenger hunts run on plain codes. You generate one, point it at a clue or a form or a photo, print it, and hide it. That works, and for a birthday party or a classroom it works fine. But a plain code has a flaw that shows up the moment your hunt gets competitive or the clues are supposed to stay secret: anyone who scans it sees everything. A kid on the other team. A stranger in the coffee shop. A sibling who found the fridge clue a week early. The code does not care who is holding the phone.
This is a guide to building a hunt that holds up anyway. First the unglamorous mechanics that decide whether it works at all, then the part where you make a code that only opens for the player it was meant for.
Where the codes go
Placement is most of the work, and it is the part people rush. A good spot is scannable without being obvious. A code needs a few inches of flat, well-lit surface and a phone that can hold still, so the underside of a shelf beats a curved bottle, and a card taped to a wall beats one flapping in the wind. Test every code with your own phone before the hunt starts, in the actual light it will be scanned in. A code that reads cleanly on your desk can choke under a dim porch light or behind slightly glossy laminate.
Spread them out enough that players have to move, but not so far that one wrong turn burns ten minutes. Indoors, think one code per room. Outdoors, tie each code to a landmark you can name in the previous clue, so nobody is combing an entire park inch by inch.
Chaining the clues
The spine of a scavenger hunt is simple: each clue points at the next. Code one gives you a riddle whose answer is where code two is hidden. Code two sends you to code three. That chain is what makes it a hunt instead of a checklist.
Two things keep a chain fun instead of maddening. Keep the difficulty uneven, an easy one, then a hard one, then a breather, so the group never fully stalls and never just coasts. And always write the clue for the next spot, not the one you are standing on. Scanning a code should move you forward. A riddle that only confirms where you already are is a dead end that feels like a bug.
If you want help writing clues that are satisfying to crack rather than annoying, there is a whole post on sending a coded message someone has to work to open that walks through the cover, the clue, and the reveal.
The problem plain codes cannot solve
Here is the wall you hit with ordinary QR codes. In a real hunt, some clues are meant to be earned. The final location. The prize. One team's private route. But a plain code hands its contents to the first phone that scans it, which means a rival team can leapfrog your whole chain by stumbling on one code out of order, and a bystander can spoil the ending by accident. There is no idea of "this clue is for you and not for them."
That is the gap GhostCode fills. You can make a QR code that carries a message only the right player can open, using a key you handed that player ahead of time. To anyone else who scans it, there is nothing to read. You can even put an ordinary-looking link on top, a song, a normal webpage, a deliberate red herring, while the real clue waits underneath for the person with the key. A curious stranger scans it, gets the decoy, shrugs, and walks off. Your player scans the same code, enters the key, and gets the actual next step. The guide to putting a hidden message in a QR code covers that decoy-on-top idea in more detail.
For a hunt this does two useful things. It gates the clues that should be gated, so the finish cannot be blown by a lucky scan. And it raises the difficulty cleanly: a code means nothing until a player has earned the key for it, which turns the hunt into something you unlock in order rather than a pile of codes lying around for anyone with a camera.
Escape rooms and the harder builds
The same trick scales up to an escape room or an ARG. In a room, a gated code can sit in plain sight the whole time, printed on a poster on the wall, and stay inert until the players solve the puzzle that hands them the key. The prop is visible from minute one. It just does nothing until it is earned, which is a better feeling than a locked box, because the players can see the thing they cannot open yet and it needles them.
Chain a few of those and the key from one stage becomes the reward for clearing the last. Solve the cipher, get the key, open the code, read the combination, which unlocks the next key. The hunt gates itself, and you are not standing over anyone's shoulder policing the order.
The honest limits
Two things to plan for, because a hunt that breaks halfway is worse than no hunt at all. Your players need the GhostCode app installed to open any gated code, so build that into the start: a "grab this to play" step up front, or hand out phones you have already set up. Easy for a party or a classroom you control, awkward for a hunt full of total strangers.
And a hidden-message code keeps a clue private on the way to the right person. It does not control what happens after. Once a player opens a clue on their screen, they can screenshot it and pass it to a teammate, which is usually fine for a game and worth knowing regardless. GhostCode keeps the wrong people from reading a code. It does not stop the right person from sharing what they found. For a scavenger hunt, that is the tradeoff you actually want.
Start small
You do not need a twenty-code epic on the first try. Build a five-code chain for a birthday or a classroom, gate only the last one so the finish stays a surprise, and test every code twice in the light it will live in. The hunt will teach you the rest.
Make a clue only the right player can open
GhostCode hides your message inside a photo or a QR code, so only the person you choose can read it, and you share the key with them separately. See how it works.