Bindery.js 1.0 was developed in Spring 2014 for for/with/in, a publication from participants in the graphic design course HTML Output at RISD. It was based on the much-maligned, now abandoned CSS Regions spec, using a polyfill. Catherine Leigh Schmidt and Lukas WinklerPrins produced a Jekyll theme called Baby Bindery for the Design Office based on this initial version.

Bindery.js 2.0 has been developed since February 2017 by Evan Brooks. It has been rewritten from scratch to be smaller, faster, more flexible, and more robust. With thanks to John Caserta and Teddy Bradford for contributions and feedback.

Report bugs, make suggestions, or lend a hand on Github.

What bindery is not

  1. InDesign— Bindery is for people who are interested in creating layouts programmatically. It’s not a graphical user interface (though you could build one around it).
  2. A PDF generator— Bindery assumes you’re printing straight from the browser. If you want to adjust a PDF setting, your browser must support it—for example, you must use a page size provided by your browser’s print dialog.
  3. LaTeX— LaTeX is a markup language and typesetting system popular in the scientific community. Bindery is intended for everyone who knows web standards (or is learning). It takes advantage of all the existing tools and documentation—browsers, text editors, web inspectors, etc.
  4. CSS Regions— CSS Regions was an ill-fated Adobe-led effort to support magazine-like layouts on the web. A polyfill is available here. Bindery’s pagination code is much more limited— it doesn’t interpret your CSS rules, assumes there’s only one flow per page, and assumes you’re going to print it.


Text is set in Tiempos Headline by Kris Sowersby, and code samples are set in Input Mono by David Jonathan Ross.

This page was rendered at [Time and Date] with [Browser].

This site was last updated at 9:44 PM on Thursday, February 22, 2018. It is built with Jekyll and hosted on Github Pages. Its source code is available here.