Parametric Ikea Helmer Tray (OpenSCAD)

An improved, parametric version of the Helmer tray.
5
10
0
53
updated November 29, 2025

Description

PDF

A fully parametric version of the Helmer tray. Adjust width, height, depth, even wall thickness to your liking. The code also supports adding multiple compartments.

Note: the preview can look a bit weird depending on settings. Use the final render (press F6) to check what the tray will actually look like.

How to Print

Supports are required for the flanges on either end. I used the “0.30mm DRAFT” profile with variable layer height (0.4mm nozzle). You can also try a 0.6mm nozzle to reduce printing time. 

With a flange width of 245 or less (see below for recommended values), the tray will fit on the bed of a Prusa Mk3, but some slicer settings have to be changed (select “Expert Mode” in PrusaSlicer to see all settings):

  • Skirt & Brim:
    • Skirt turned off (Loops = 0)
  • Support material:
    • Generate support material = on
    • Overhang threshold = 20°
    • First layer expansion = 2mm
    • Style = snug

Helmer Variants

Ikea has sold (at least) 3 versions of the Helmer cabinets over time. These are:

  1. Bought approx. 2002. Welded frame, no label holders, single-layer walls on the drawers. Not suitable for these trays.
  2. Bought in 2015. Flat-pack, narrow folded walls on the drawers, drawers supported at the bottom. Recommended flange_width=245.
  3. Bought approx. 2018. Flat-pack, wide folded walls on the drawers, drawers slide on rails near the top. Recommended flange_width=240.

Parametric Options

flange_widthThe total width of the tray, including the flange at the top. See above for recommended values.
widthOutside width [x dimension] of the tray (without flange). The default value of 231 is a snug fit in Helmer types 2 & 3. The inside width for a single compartment is (width - 2*wall).
depthOutside depth [y dimension] of the tray. The inside depth is (depth - 2*wall).
heightOutside height [z dimension] of the tray. The inside height is (height - floor_h).
wallVertical wall thickness.
floor_hFloor height.
flange_hTop flange height. This determines how far the tray will stick up above the walls of the drawer.
rOutside radius of the four corners.
chamferChamfer at the bottom of the tray. If chamfer is too big compared to r, the floor will become disconnected from the walls. It's a good idea to check the minimum wall thickness near the bottom after slicing.
compartmentsA vector to define the compartment sizes. Set to [] for a single compartment. See examples below

Set r=0 and chamfer=0 to get the rectangular shape of the original tray.

Compartment Examples

The compartments are set using a vector of compartment sizes, except for the last one (which takes up the remaining width). This means that to get a single compartment, the vector should be empty:

compartments = []; // single compartment

3 compartments measuring 50mm, 100mm and the remainder (the 3rd compartment's inside width will be width-50-100-4*wall):

compartments = [50, 100];

To get a number of equal-width compartments, use this example (adjust n=5 to the desired number of compartments):

n=5; compartments = [for(i=[0:n-2]) (width-(n+1)*wall)/n]; // n equal compartments

One compartment of half width and two compartments of quarter width:

compartments = [(width-4*wall)/2,(width-4*wall)/4]; // half + 2x quarter compartments

When generating the preview (press F5), the actual size of the compartments will be shown in the OpenSCAD console window, e.g. for the last example above:

ECHO: “Compartment sizes: [111.5, 55.75, 55.75] x 146 x 33”

 

Tags



Model origin

The author remixed this model.

Differences of the remix compared to the original

Re-created in OpenSCAD, added chamfers & fillets.

License