CabinetDrafter 1.3.1

Free cabinet design, material planning, nesting, and 3D. Plan frameless or face-frame cabinets in the browser, with optional SketchUp export.

Cabinets

LabelTypeFront constructionBox / carcass materialFaces / fronts materialHinge side
single door
WidthQtyVertical stack / clear openings
bottom → top
Custom drawer-front heights
optional; drawers only
Shelves
count fallback
Drawer / mixed stack syntax: O means the LETTER O ("oh") for Open — not the digit zero (0). For example, D7, O9.5, D7 means drawer, open cubby, drawer. Adjacent open entries stay separate: D4.75, O12, O12, D4.75 makes two 12" clear cubbies with a fixed divider between them. You may write Open 9.5 instead of O9.5 if that is clearer. An all-number list such as 7, 7, 9.5 remains legacy all-drawer mode. Once you use D to mark drawers, any bare number is also interpreted as an open cubby: D9, D9, 15 means two 9-unit drawers with a 15-unit clear cubby above. Materials: cabinet rows can use the project defaults or override the plywood species for that cabinet's box/carcass and faces/fronts. Open-shelf cabinets: use the same field for clear opening heights, bottom to top, for example 9.5, 12, auto. Each boundary between openings gets an adjustable pin-supported shelf; auto is allowed only for the final/top opening and uses the remaining clear height. If the field is blank, the Shelves count still creates evenly spaced adjustable shelves. Values use the selected unit; explicit mm or in suffixes are also accepted.

3D Preview

Built into CabinetDrafter — no SketchUp or internet connection required.
Drag to orbit · mouse wheel to zoom · Shift-drag to pan · double-click to fit.
BirchCherryBlack outlines show individual pieces.

Optional SketchUp export

Show cabinet labels in 3D / SketchUp
Turn this off for a clean presentation model with no cabinet summary text labels.
Show cabinet width labels in 3D / SketchUp
Shows each cabinet's overall width as a short label centered near the front bottom of the cabinet.
Show drawer box height labels in 3D / SketchUp
Shows the entered drawer-box wall height for each drawer, formatted as a woodworking fraction in inch mode or millimeters in mm mode.
Show drawer face height labels in 3D / SketchUp
Shows the visible drawer-front height for each drawer. Labels are placed directly at the center of each face; when both options are on the number order is box / face.
Show open-space height labels in 3D / SketchUp
Shows the clear vertical height centered in each mixed-cabinet cubby and each opening in an open-shelf cabinet, formatted as a woodworking fraction in inch mode or millimeters in mm mode.
Replace prior Generated Cabinet Lineup in SketchUp
Turn this off to keep existing generated cabinets and add the new export as a separate timestamped group.

Units

The project is stored internally in inches for SketchUp compatibility. Switching units converts the displayed values without changing cabinet geometry.

Every edit is still saved immediately in this browser. Click Save Project JSON once to choose a normal JSON file on your Mac. In browsers with direct file access, that connects the chosen file and later edits auto-save to it. Export JSON copy only downloads a snapshot and cannot be auto-updated. Save Project As… chooses a different file. Downloading or copying Ruby also forces a project save first.

Project JSON: checking…

Use in SketchUp Pro

Open Extensions → Developer → Ruby Console and run:

load File.expand_path('~/Downloads/cabinet-drafter_generated_TIMESTAMP.rb')

Each Ruby download gets a unique timestamped filename so SketchUp cannot accidentally reload an older copy. After downloading, the page shows the exact load command. By default the script replaces the prior Generated Cabinet Lineup; turn off that export option to keep existing generated cabinets and add the new run as a separate timestamped group. The script models drawer boxes, mixed open cubbies/divider panels, toe-kick bases and skins, fronts/doors, optional cabinet summary and width labels, independently selectable per-drawer box-height and face-height labels, and saves a native SKP to your Desktop.

Drawer sizing

24" for your 24" slides.
Default 1" total = 1/2" each side.
Default 1/2". Material is selected below.
Default 1/2"; panel fits completely between the four drawer walls. Material is selected below.
The default is the existing geometry. Rabbet, box-joint, and dovetail choices use full-width front/back blanks and require the selected corner machining.
Floating and captured bottoms extend into 1/4" wall grooves. The panel remains removable only if the front or back is designed for access.
Used by the 1/4" rabbet option; set to your actual router/saw setup.
Machining note only; it does not reduce the blank size.
Default 1/4". Groove depth cannot exceed the wall thickness in the modeled fit.
Default 1/2". This is a design choice, not a slide standard.
Default 1/2" above the cabinet bottom. Drawer boxes are stacked upward from here.
Default 24". Horizontal panels that form the top/bottom of an open cubby.
Width rule: drawer box outside width = cabinet inside width − total slide clearance. Height rule: drawer boxes must fit between the top of the 3/4" cabinet bottom and the underside of the 3/4" top stretchers, so the default 38" carcass has 36.5" of internal vertical drawer-box space. Vertical drawer spacing is not standardized by the slides. Drawer boxes and open cubbies are stacked from the bottom upward. The drawer-box gap applies between adjacent drawer boxes; fixed 3/4" divider panels separate drawers from open cubbies and separate adjacent open cubbies. Open-cubby heights are clear opening heights. A top open cubby is anchored to the underside of the top stretchers so its entered clear height is exact. Verify your slide manufacturer's horizontal clearance before cutting. Joinery note: the app reports rectangular stock blanks and assumes you make the selected rabbets, fingers, dovetails, or grooves during machining. Confirm your actual cutter and fit before cutting a project.

Material choices

Drawer fronts, doors, default visible cabinet parts, single-door backs, and toe-kick skin.
Default pure drawer cabinet boxes and toe-kick structural rails.
Drawer sides, fronts, backs, and bottoms.
Horizontal panels that form the top/bottom of open cubbies.
Open-shelf backs and localized mixed-cubby backs. Single-door backs match the face/front material.
Cabinet-row material selectors override these defaults per cabinet. Default box/carcass material means pure drawer cabinets use the hidden cabinet-box plywood, while mixed, open-shelf, and single-door cabinet boxes use the face/front plywood because those parts are visible.

Face-frame options

Default 1 1/2". Full-height left/right members.
Default 1 1/2". Top and bottom perimeter rails.
Default 3/4". Frame is applied to the front of the carcass.
Face-frame members are treated as linear solid-wood stock, not plywood-sheet parts.
Default 1/2" per edge for face-frame overlay fronts.
Default 1/16" around inset doors/fronts.
Face frames are currently perimeter frames: two full-height stiles plus a top and bottom rail. CabinetDrafter does not yet generate intermediate face-frame rails between individual drawers or cubbies. Overlay and inset front sizing is calculated against the perimeter frame opening.

Drawer / mixed sizing preview

Standard cabinet dimensions

Default 1/4". Applied to open spaces and single-door cabinets on the outside rear face.
Default 1/8" top, bottom, and between drawer fronts.
Default 1/16"; two abutting cabinets then have a 1/8" seam.
Default 1/4". Uses the visible/front material unless you substitute veneer manually.

Front pull cut-outs

Drawer tops and door pull edges
Cut-outs are secondary operations on the rectangular front blanks.
Drawer notch width; door notch height.
How far the notch enters the front.
Set near half the width for a half-circle style.
Drawer notches open from the top edge. Single-door notches are centered vertically on the edge opposite the configured hinge side. The cut-out dimensions are limited automatically when they cannot fit the front.

Plywood sheet planning

Default 48".
Default 96".
Default 1/8".
Default 1/4" trim around each sheet.
Added to the nested layout count.
Applies to all Birch plywood thicknesses.
Applies to all Cherry plywood thicknesses.
Preserve visible grain direction
Recommended for fronts, doors, visible shelves, sides, backs, and toe-kick skin.
Cutting-layout assumption: sheet grain runs along the 96" direction. Grain-sensitive visible parts are oriented so the face grain runs the expected direction and are not rotated when grain preservation is on. Hidden cabinet and drawer-box parts may rotate for better yield.

Build progress & sheet inventory

Progress tracks physical plywood cut parts. Check off whole carcasses or drawers for speed, or open the physical-parts table for piece-by-piece control. Checked work stays in the project design and 3D model, but it is removed from the remaining-work nesting below. Full sheets on hand means uncut, full usable sheets only; scraps and partial sheets are not counted as full-sheet inventory.

Shopping list of sheets still to buy

Completed cut parts

Material / sheet BOM full project

Remaining plywood cutting layouts

These layouts include remaining cut parts only. Parts are grouped into horizontal strips: dashed guides mark full-width crosscuts across the sheet, followed by cuts within each strip. Parts use black-and-white hatch fills by species; the sheet material and thickness are named in the sheet header. Real sheets may have voids, damage or grain defects, and your final saw strategy may move pieces around. The optimizer includes the selected kerf and edge trim.

Construction rules in this version

Cabinets may be frameless, face-frame overlay, or face-frame inset on a per-cabinet basis. Structural carcass joints use pocket screws in the supplied project defaults. Pure drawer cabinets use the hidden cabinet-box material and remain open-backed unless the cabinet row overrides the box/carcass species. Single-door cabinet boxes, shelves, and mixed/open visible cabinet parts default to the face/front material, and each cabinet row can override box/carcass and face/front species independently. Single-door applied backs match the door/front material. Face frames are modeled as solid-wood perimeter frames and are reported separately as linear stock. Drawer boxes use the drawer-box material with bottoms fitted completely between the four walls. Open spaces receive applied backs at the rear. Adjustable shelves are pin-supported; fixed mixed-cubby dividers are pocket-screwed. Countertops attach through top stretchers. No edge banding is included.

Toe-kick/base: each cabinet gets a separate 2"-high ladder frame using the hidden cabinet-box material, intended to use offcuts. A separate visible skin uses the cabinet's face/front material. The BOM treats adjacent cabinets with the same face/front species as one installed run and makes the skin in the longest pieces that fit the configured sheet length; SketchUp shows one skin segment per cabinet because the presentation model spaces cabinets apart.

CabinetDrafter Help

Cabinet planner · version 1.3.1

Quick start: choose inches or millimeters, edit the cabinet list, inspect the built-in 3D preview, check the sizing/BOM warnings, and save your project JSON. SketchUp export is optional.

1. What CabinetDrafter does

CabinetDrafter is a single-file local browser tool for designing cabinet runs using frameless or face-frame construction. It calculates drawer boxes, doors, open cubbies, shelf openings, plywood parts and sheet nesting, and renders the cabinet lineup directly in the page. SketchUp export is optional. It does not need a web server or an online account.

  • Build and reorder a lineup of drawer/mixed cabinets, single-door cabinets, and open-shelf cabinets.
  • Enter drawer box heights and open-space heights from bottom to top.
  • Use inches or millimeters without changing the underlying geometry.
  • Generate a plywood BOM, detailed cut-list CSV, remaining-work sheet-planning diagrams, and a shopping list that accounts for full sheets already on hand.
  • Orbit and inspect the cabinet model directly in the browser and save the current view as PNG.
  • Optionally generate a Ruby script that builds and saves the model in SketchUp Pro.
  • Save the project to JSON and keep a browser-local recovery copy automatically.

2. First-time workflow

  1. Choose units. Inches and millimeters are only display/entry choices; CabinetDrafter keeps canonical geometry in inches internally for SketchUp compatibility.
  2. Edit the Cabinets table. Set a label, type, width, quantity, vertical stack/opening heights, and shelf count where appropriate. Use the arrow buttons in the last column to reorder the run.
  3. Review the sizing preview. Fix anything shown as a warning before relying on the cut list.
  4. Review the BOM and sheet layouts. Grain-sensitive visible parts are kept oriented when Preserve visible grain direction is enabled.
  5. Click Save Project JSON. Pick a normal file such as my_kitchen.json. Supported browsers will then auto-save that same file as you edit.
  6. Click Download Ruby script. CabinetDrafter shows the exact load ... command to paste into SketchUp.
  7. In SketchUp Pro: open Extensions → Developer → Ruby Console, paste the command, and press Enter. By default, regenerating replaces the prior Generated Cabinet Lineup group; turn off that export option to keep prior generated cabinets.

3. Cabinet types

TypeUse it forDefault construction
Drawer / mixedDrawers, or drawers combined with fixed open cubbies.Pure drawer cabinet: hidden cabinet-box material, open-backed, four stretchers. If any open cubby is present, the box/carcass defaults to visible/front material with localized backs and only the two flat top stretchers. Each cabinet row can override the box/carcass and face/front species.
Single doorOne full-overlay door with optional adjustable shelves.Box/carcass defaults to visible/front material; door and full applied back use the face/front material; two flat top stretchers. Cabinet rows can override box/carcass and face/front species independently.
Open shelfVisible shelving with an applied full-width back.Box/carcass defaults to visible/front material, applied back follows the open-space back material setting, two flat top stretchers, adjustable shelf-pin shelves.

4. Drawer / mixed stack syntax

The stack is always entered bottom → top.

Important: O is the letter O ("oh"), short for Open. It is not the number zero (0). If O8 could be mistaken for 08, type Open 8 instead; both forms mean the same thing.
ExampleMeaning
7, 7, 9.5Legacy all-drawer mode: three drawer boxes because the entire list is bare numbers.
D7, D7, D9.5The same three drawer boxes, written explicitly.
D9, D9, 15Two 9-unit drawers followed by a 15-unit clear open cubby. Once D is used, bare numbers are open cubbies.
D7, O9.5, D77-unit drawer, 9.5-unit clear open cubby, 7-unit drawer. The O is the letter O for Open, not zero.
Open 8, D10Bottom 8-unit open cubby uses the cabinet bottom and gets one top divider. Open 8 and O8 are equivalent.
D10, O8Top 8-unit open cubby gets one bottom divider and no added full top. Here O is the letter O.

D = Drawer. O = Open and is the letter O (oh), never the digit 0 (zero). Open 8, Cubby 8, and O8 are accepted synonyms. For convenience, once a stack contains an explicit D, an unprefixed number also means an open cubby. A completely bare list remains all drawers for compatibility with older projects. Fixed cubby divider panels are pocket-screwed into the cabinet sides.

5. Open-shelf heights

For an Open shelf cabinet, use the same vertical-stack field to enter clear opening heights, bottom to top.

9.5, 12, auto

This creates three clear openings. The first two are fixed to the entered heights and the final/top opening uses the remaining height. Use auto only for the final opening. If the field is blank, the Shelves count is used and the shelves are spaced evenly.

These shelves are still adjustable shelf-pin shelves; the entered heights describe the modeled layout, not fixed pocket-screw locations.

6. Construction model

CabinetDrafter currently models the following construction system:

Face frames: select the front construction per cabinet. Global face-frame settings control stile width, rail width, frame thickness/material, overlay, and inset reveal. Frames are perimeter-only; intermediate rails between individual drawers/cubbies are a future enhancement.
  • Per-cabinet front construction: frameless, face-frame overlay, or face-frame inset.
  • Pocket-screw structural joinery.
  • Standard carcass: 3/4 plywood.
  • Drawer boxes: configurable 1/2 plywood sides, front, back, and bottom.
  • Drawer bottom fits completely between the four drawer walls; no dado or rabbet.
  • Drawer slide clearance: 1/2 per side / 1 total by default.
  • Cabinet rows can override box/carcass plywood and face/front plywood species independently.
  • Drawer fronts and doors: 3/4 face/front plywood by default; sizing follows the selected frameless/face-frame front style.
  • Current 1/16 side reveal produces 11/16 geometric overlap on a 3/4 carcass edge and a 1/8 seam between adjacent cabinet fronts.
  • Single doors use two concealed Euro-style hinges. Hinge drilling dimensions are not generated until a hinge model is chosen.
  • Adjustable shelves use shelf pins. Fixed mixed-cubby dividers use pocket screws.
  • Countertops attach with screws through the flat top stretchers.
  • No edge banding or solid-wood edge treatment is currently included.

Stretchers and applied backs

FRONT / TOP CONCEPT

  cabinet side                         cabinet side
       |                                    |
       |== front top stretcher (flat) =====|
       |                                    |
       |                                    |
       |== rear top stretcher  (flat) =====|
       |                                    |
       +========== cabinet bottom ==========+

REAR CONCEPT

       +====== rear top stretcher ======+
       |---- upper rear stretcher -------|  vertical, 4 high
       |                                 |
       |                                 |
       |---- lower rear stretcher -------|  vertical, rests on bottom
       +========== bottom ===============+

Pure drawer cabinets default to the hidden cabinet-box material and keep the four-stretcher open-back structure shown above. Mixed drawer/open-cubby cabinets default to the face/front material for exposed box/carcass parts with localized applied backs behind open cubbies; because the open sections have backs, mixed cabinets omit the two vertical rear stretchers and keep only the flat top stretchers. Single-door and open-shelf cabinet boxes default to the face/front material, but each cabinet row can override the box/carcass species. Single-door full backs follow the face/front material so they still match the door.

Drawer box

TOP VIEW

 +----------------------------------+
 |                                  |
 |  1/2 bottom fits INSIDE all      |
 |  four 1/2 drawer walls           |
 |                                  |
 +----------------------------------+

The entered drawer height is the full wall/box height.
The bottom thickness does not increase the outside height.

Toe-kick / base

TOP VIEW - separate 2-high base

 FRONT
 +==================================+  hidden-material front rail
 | |                              | |
 | |         open center          | |  hidden-material side rails
 | |                              | |
 +==================================+  hidden-material rear rail
 REAR

Visible front gets the cabinet's face/front material or veneer skin.

The structural base is intended to use offcuts from the hidden cabinet-box material. CabinetDrafter nests those pieces with other matching-material parts when possible.

7. Built-in 3D preview

The 3D Preview is completely local and does not require SketchUp. It is generated from the same cabinet dimensions used by the BOM and cut list.

  • Drag to orbit around the cabinets.
  • Use the mouse wheel to zoom.
  • Shift-drag to pan.
  • Use Front, Left, Right, Top, or Isometric for preset views.
  • Turn fronts/doors, drawer boxes, or backs on and off to inspect construction.
  • Use Hidden-line print style for black-and-white shop printouts.
  • Click Save PNG to save the current view as an image.

The browser preview can use flat birch/cherry colors or a white/light-gray hidden-line style with black visible edges. It is intended as a construction/design view, not a photorealistic renderer.

8. 3D / SketchUp labels

Each label type can be switched on or off independently:

  • Cabinet summary labels.
  • Cabinet width labels.
  • Drawer box heights.
  • Drawer face heights.
  • Open-space heights for mixed cubbies and open-shelf openings.

Cabinet width labels are short overall-width notes centered near the front bottom of each cabinet. Drawer/opening height numbers are placed directly in the visual center of the corresponding face/opening. Inch labels use practical fractions rounded to the nearest 1/16; metric labels use millimeters.

9. Saving projects

CabinetDrafter uses two layers of local saving:

  • Browser recovery copy: every edit is stored in browser local storage.
  • Project JSON: click Save Project JSON once and choose a file. When the browser permits direct file access, CabinetDrafter auto-saves that file after edits and before Ruby export/copy.

Use Save Project As… to branch a design. Use Export JSON copy for a portable snapshot. Use Load / Import JSON to open somebody else's project.

10. Build progress and inventory

Use the Build progress section while cutting and assembling. Assembly checkboxes let you mark a whole carcass, toe-kick/base, drawer, door, or shelf set complete while still saving progress as individual physical plywood part IDs. Each cabinet and assembly row lists the generated material species so you can see what to build from without opening every cut part. Checking work complete keeps the cabinet in the design and 3D model, but removes those physical parts from the remaining-work nesting and remaining cut-list CSV.

Full sheets on hand are tracked by material. They mean full, uncut usable sheets only; scraps and partial sheets are not counted as full sheets in this version. Remaining layout sheets can be selected individually before printing, and part rectangles use black-and-white species hatch fills instead of color coding.

11. Sharing CabinetDrafter

To give the tool to somebody else, send the CabinetDrafter ZIP. They can unzip it and open index.html directly in a modern browser. To share a specific design, send the project JSON too.

12. BOM, face-frame stock, and sheet layouts

The sheet optimizer is a guillotine-friendly planning aid for breaking down sheets into rectangular strips. Dashed guides show full-width crosscuts between strips. It accounts for the configured sheet size, edge trim, saw kerf, and visible grain direction. Inspect real sheets for damage, voids, and grain before cutting, and choose a cut order that keeps each panel supported.

Current run assumption: CabinetDrafter treats the complete cabinet list as one installed straight run when it creates the continuous visible-material toe-kick skin. If cabinet face/front species changes within the list, it splits the skin into adjacent same-species runs. If a project contains cabinets on multiple walls or separate runs, split them into separate project files or manually split the toe-kick skin until multi-run support is added.

13. Before you cut

  • Confirm actual plywood thickness; nominal 3/4 and 1/2 sheet goods may measure less.
  • Confirm drawer-slide side clearance before cutting drawer boxes. The default is 1/2 per side.
  • Choose the actual concealed hinge before boring door cups or mounting-plate holes.
  • Confirm countertop overhangs and wall conditions separately; CabinetDrafter currently models cabinets, not room walls/counters.
  • Review every warning in the sizing/BOM section.
  • Treat the generated cut list as a verified plan only after checking a representative cabinet against your real hardware/materials.

14. Current limitations

  • One global cabinet height and depth for the whole project.
  • Only single-door cabinets; no paired/double-door cabinet type yet.
  • No fillers, scribes, applied finished end panels, corner cabinets, or room/wall layout.
  • No hardware BOM yet for slides, hinges, shelf pins, pocket screws, or installation fasteners.
  • No automatic hinge cup-bore or shelf-pin drilling templates.
  • No explicit multiple cabinet runs/walls; continuous toe-kick skin assumes one run.
  • No edge treatment or pull drilling because those choices are still intentionally TBD.

15. Troubleshooting

The SketchUp model did not change: use the exact timestamped Ruby filename and load command CabinetDrafter shows after downloading. With the replace option enabled, each generated script removes the old Generated Cabinet Lineup group before rebuilding it. With the option disabled, the script adds a new timestamped group instead.

Project JSON is not auto-saving: browsers may require write permission again after reopening a local HTML file. Click Save Project JSON to reconnect the remembered file. Use Save Project As… only when you want to choose a different destination. Browser recovery storage continues to work independently.

An open-shelf height list does not fit: use auto for the top opening, or adjust the entered clear heights so the total plus shelf thicknesses fits the available vertical space.