Introduction: Scan Codes Without Printer

About: I'm an applied physicist by training(phd Yale 2006, BA Berkeley 1998, math and physics), and have done physics research in the federal government and product development in the private sector, starting two of …

Our goal here is to create machine readable codes by hand without a printer, using just ink and paper and some sort of computer device. Most of the various 2d barcode schemes that exist for encoding data are too complex for the human mind/body to be able to interact with in any way: it's both impossible to read by hand and impossible to reliably create by hand. This is one of the reasons I think they have not been more widely used. I care about this problem because to make machines that can easily be replicated by many people over time, I need to be able to have documentation linked into all the numerous physical components in such a way that both machines and humans can both read and write it.

Again I must apologize for the fractured nature of this post, it's part of a larger system and I'm using this site to document progress so some things are rough here. I document some of this in other posts on this site and there should be more to come soon.

Tools needed for this project are a marker, paper, scissors and tape, and a computer running the Processing programming language which is available free at There are downloads on there for all standard platforms. This project is not a great first project on processing, so if you don't already know how that works, explore it a bit and come back to this. It does not take long to get started and is very good for beginners and amateurs and amazing for art projects, so it's worth going and learning if you are new.

More documentation, in fairly random order and purely pictorial form are at

Step 1: Encode Message Using Main Write File

Download and run the attached code file on processing. This should make an image appear on your screen with a bunch of black rectangles as shown in the next step. Change the message string in the code to whatever your message is, as long as it's not longer than 25 characters(or change the block size to change that).

My code is bad because I'm not a coder, sorry.

Step 2: Get Clear Tape Sheet Ready, Put Over Your Screen

you need a piece of non sticky plastic to put between your screen and the paper so that the marker does not bleed through onto the screen. This has its own step because it's so important! I just double tape back over on itself to get both sides non sticky. You could also just put tape all over the back of the paper and leave it on after.

Step 3: Hold Up Paper, Trace With Marker

You have to be careful but non overly careful. The code grabs an average over the square it's testing, so if the dots are randomly shifted a bit here and there it's ok.

Step 4: Run the Read Program

Now take a picture with a camera on some device. I use my tablet to take an image, then upload it to pinterest and download from there to the laptop for ease of moving the file. Change the name in the code to whatever your file name is for your image, run the program, move the cursor around and use the one key commands k and j to increase or decrease the size of the cursor.

Immediate applications include:

  • links to youtube videos of how a thing is made directly encoded in thing
  • part numbers physically encoded in pcb's
  • use to implement one time pad for perfectly secure messaging of short messages without relying on the "security" industry
  • create password of random characters using physical tools, store physically, grab using a camera as needed, cut and paste, for very secure password storage, again sidestepping the software industry as much as possible
  • DIY augmented reality