pepper.js Examples Help

The examples are here. Before you dive in, please make sure your browser is set up to run them. For the most part, this means "make sure your browser is up to date."

The Emscripten examples will not work in your browser. The Emscripten examples requires typed arrays. IE 9, for example, is not supported.

The PNaCl examples will not work in your browser. PNaCl requires Chrome 31 or newer. You are not running Chrome.

Note: The PNaCl translator is currently downloaded asynchronously from the main Chrome distribution, and in theory translation may fail if the newest version has not yet been downloaded. If the PNaCl examples are not working you may need to wait a bit and restart the browser. You can also go to chrome://components and click "Check for update" to push it along.

If you're having problems, please send a message to native-client-discuss.

JavaScript API Support

pepper.js uses APIs that are currently not supported by every browser. If your browser does not support these APIs, some of the examples may not work.

  • WebGL will not work in your browser.
  • Fullscreen will not work in your browser.
  • Pointer Lock will not work in your browser.
  • Web Audio will not work in your browser.

Developer Mode

Checking the "Developer Mode" checkbox reveals options that are handy for day-to-day development but don't make for a compelling demo. Developer mode adds the NaCl toolchain, Debug and Release builds, and a bunch of tests.

The "NaCl" toolchain is the predecessor or PNaCl. Because the original NaCl toolchain produces architecture-specific binaries, they are restricted to the Chrome Web Store by default. Running NaCl on the web requires it be explicitly enabled in Chrome, either by enabling "Native Client" in chrome://flags or passing --enable-nacl to Chrome on the command line. Check chrome://nacl to see if non-portable NaCl is enabled outside the web store.

Note that "PNaCl Debug" examples are actually plain-old NaCl modules compiled using the PNaCl toolchain - no translation is being done in the browser. Only "PNaCl Release" translates in the browser.

Browser Notes


  • Firefox 25 or later is required for some of the examples. The Web Audio API, etc, are only starting to be supported.
  • Switching to fullscreen will unlock the mouse in Firefox.
  • Scaling 3D to fullscreen appears to be slow. Unscaled 3D seems to be fine.


  • WebGL must be manually enabled on Safari.
  • Mouse lock is not supported in Safari.

Internet Explorer

  • IE10 is partially supported - Graphics_3D, Audio, Fullscreen, and Pointer Lock APIs cannot be implemented.
  • IE9 does not support typed arrays, which means that it cannot run code generated by Emscripten's asm.js backend. It is possible to use Emscripten's non-typed array code generation mode, but this is slow and not recommended.


  • Not throughly tested. There are known issues with the examples, such as requiring "escape" and "enter" key presses.