Andreas posted a general overview of pdf.js. I’d like to briefly cover some more-technical parts of the renderer. pdf.js (currently) parses raw arrays of bytes into streams of PDF “bytecode”, compiles the bytecode into JavaScript programs, then executes the programs. (Yes, it’s a sort of PDF JIT . The side effect of those programs is to draw on an HTML5 <canvas>. The commands in the bytecode inclu