For those that haven't seen, Snapchat now has a special type of image based code that allows you to quickly add friends by pointing the camera at the screen, similar to a QR code, called "Snaptags". Here's an example:

Here's an example.

Does anyone know how one would be able to reverse engineer how this system works so that you'd be able to automatically generate these "Snaptags" given a specific username? I've never had to reverse engineer a system like this before and am not sure how to go about it.


  • 3
    just a pointer: take a binary that's able to scan the image (e.g. Android / iOS app, whichever you feel more comfortable with) and take the algorithm from there. Probably Android will be easier as it uses Java, which is easier to reverse / decompile.
    – rev
    Apr 5, 2015 at 6:11
  • 5
    Here's the SnapTag patent: patentimages.storage.googleapis.com/pdfs/US8094870.pdf Apr 5, 2015 at 16:09
  • Not confirmed but these snapcodes snaptags even if decrypted seem to possibly be in MD5 (not confirmed)
    – SSpoke
    Jan 14, 2016 at 8:34
  • @JasonGeffner That's a different kind of SnapTag. The question is actually asking about Snapchat's Snapcodes, from the screenshot in the post. The patent is a similar product, but looks nothing like a Snapcode, so I believe it's unrelated. Feb 11, 2017 at 0:20

1 Answer 1


Where I would start...

Start by reading about QR codes. I would guess that QR codes aren't that far off from Snapcodes, but Snapcodes probably carry very little information. As in, they only contain a pointer to a Snapchat ID. A Micro QR code can hold 35 characters, which is probably about the capacity of a Snapcode and rather than an anchor point you have a ghost for orientation and a box of known size.

How many dots can a Snapcode have if every dot is 'on'?

Learn about Snapchat IDs. What are the allowable set of characters and minimum and maximum length?

Another thing to try would be to start messing with Snapcodes. Can you mess with the dots and colours? You can learn how robust they are by trying to break them which in turn tells you if they're doing error correction.

Compare a few snapcodes. In fact, generate snapcodes. You might check out this project that demos connecting to the Snapchat API and generate several Snapcodes changing letters, seeing how it behaves as you add or remove characters.

In general, reverse-engineering this is an exercise in learning everything there is to know about this topic. When you acquire enough information you might make a leap into being able to read and generate arbitrary codes.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.