Jeroen's Project Journals

  • Gridfinity Creator

  • Online generator of Gridfinity components such as divider bins of any size with arbitrary internal compartments, light bins and base-plates. Generates STL files.

  • Gallery



The history of the universe can be divided in two eras: The Boring Era and the Glorious Era. The Boring Era covers everything that happened between the Bing Bang and April 13, 2022 and the Glorious Era is everything from that day onward. What happened on April 13, 2022 you ask? That was the day Zack Freedman released his gridfinity video of course, how can you NOT know this!

Hysterics aside, Gridfinity is a really cool modular storage system developed by Zack Freedman, based on an original idea by Alexandre Chappel. The idea is to define a square grid and design a matching pair of baseplate and container profiles such that containers are snugly held in place by the baseplate. The unofficial Gridfinity Spec looks like this:

A technical drawing defining container profiles, height units and several details

This idea has really taken off, and by now there are tons of Gridfinity compatible tool holders and accessories that people designed and published. Zack himself got things going by publishing around 100 storage blocks with his original video.

For obvious reasons these designs include only a limited number of variants of different sizes. For example, the collection of standard divider bins Zack released includes 51 variants of different sizes, heights and number of compartments: A 1x1x2 bin with 1 compartment, a 1x1x2 bin with 2 compartments, all the way up to a 5x1x6 sized bin with 6 compartments. But with 51 variants that obviously does not cover all possible combinations of length, width, height and number of compartments.

I had been interested in programmatically generating 3D models for a while, but never did anything significant with it. This seemed like good use case though, so I developed Gridfinity Creator, an online Gridfinity component generator. It is written in Python and uses the CadQuery CAD library to generate STL’s based on user input. It can generate “classic” divider bins of any size from 1x1x2 to 6x6x12 and with any number of compartments from 1 to 18 in both the length and width directions. Further more, these can be generated with or without a stacking lip, magnet holes, screw holes or scoop ramp, and can have no label tab, a single row of label tabs, or a label tab for each row of compartments. Here is a render of some possible variants you could generate with this:

Render of 5 gridfinity divider bins: 1x1x2 (1 compartment), 2x2x3 (4x1 compartments), 3x4x4 (4x4 compartments), 3x4x12 (5x5 compartments) and 6x6x12 (18x18 compartments)

Now not all combinations of options are allowed, since e.g. a 1x1x2 bin doesn’t fit 18x18 compartments, so the total number of possible bins is less than the theoretical 6 million if no such restrictions were in place, but it is certainly in the hundreds of thousands.

Besides the classic divider bin, GridfinityCreator can also generate a “light” version of the divider bin and a completely solid version. The solid version is intended as a starting point for something custom. The light version maximizes internal volume (and minimizes plastic use) by hollowing out the base squares. The downside is that it is not possible to install magnets or screws in the base:

Render of a 6x6 light bin

The interface of the generator is very simple, and it doesn’t show you a preview of the model (since that would require actually generating the model, which is CPU intensive):

Screenshot of the GF Creator interface, showing a set of tabs (one for each object type) and the options for the classic bin (height, width etc). At the bottom is a button labeled Generate STL

I had a lot of fun creating this as there a lot of “firsts” in it for me: Flask, CadQuery, Bootstrap and WSGI (Waitress implementation) are all libraries I never used before.

Some future work I may (or may not, of course) get around to implementing includes:

  • A baseplate generator with the option to enable/disable every individual square, so you can make any odd shape you need
  • A “holder” generator. Besides the GridFinity size you specify a shape (circle, hexagon, rectangle etc), the shape’s size, and how many you want in both directions. With this you could generate holders for many different things like batteries, bits, pens, markers, containers etc.
  • Text built into the label tabs. This could be done in several ways: using the colorchange command (although that would be visible as a line on the outside of the bin), generating true multi-color models or by debossing the text and printing the text separately.

The code is available as open source under the Creative Commons BY-NC-SA (Attribution-NonCommercial-ShareAlike) 4.0 license.

Everybody is free to run their own instance, but I also run a public instance.