Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A javascript binary tree based algorithm for 2d bin-packing suitable for generating CSS sprites. Now - Node.js compatible!
branch: master

This branch is 7 commits ahead, 1 commit behind jakesgordon:master

Binary Tree Algorithm for 2D Bin Packing

This project is a javascript experiment to write a binary tree based bin packing algorithm that is suitable for generating CSS sprites.

NPM install

npm install binpacking

NodeJS usage

var binpacking = require('binpacking');
var Packer = binpacking.Packer;
var GrowingPacker = binpacking.GrowingPacker;
var blocks = [{w:100, h:100}, {w:100, h:100}, {w:100, h:200}];
var packer = new GrowingPacker;;

NodeJS demo

Clone this repository:

git clone

See usage example:

Run the demo:

node node-test.js


Clone this repository

git clone

View the index.html file in your favorite browser for examples of algorithm in use with lots of configurable options.


If you want to use this in your own javascript projects, you need something like this:

<script src='packer.growing.js'></script>
  var packer = new Packer(1000, 1000);   // or:  new GrowingPacker();
  var blocks = [
    { w: 100, h: 100 },
    { w: 100, h: 100 },
    { w:  80, h:  80 },
    { w:  80, h:  80 },

  blocks.sort(function(a,b) { return (b.h < a.h); }); // sort inputs for best results;

  for(var n = 0 ; n < blocks.length ; n++) {
    var block = blocks[n];
    if ( {
      DrawRectangle(,, block.w, block.h);

See source code comments for more details.


See LICENSE file.


If you have any ideas, feedback, requests or bug reports, you can reach me at, or via my website: Code inComplete

Something went wrong with that request. Please try again.