Open-source project
dprojects/Woodworking avatar
dprojects/Woodworking

Woodworking adds cabinet making to FreeCAD as a parametric workbench

my environment for woodworking

581 stars53 forksPythonMIT

At a glance

What is it?
Woodworking is a FreeCAD workbench for designing simple cabinets, with a set of magicStart, magicMove, magicDriller and magicGlue tools that turn a parametric sketch into panels, joinery and a cut list. It suits a hobbyist making garage storage, and it is not a substitute for a production-grade CAD package.
Who is it for?
Adopt Woodworking if you are a FreeCAD user who wants to design a simple cabinet or shelf parametrically and get a cut list, since the workbench removes the manual step of deriving panel dimensions and drilling positions from a sketch. Do not adopt it if your work needs certified structural joinery or manufacturing drawings, since the tool produces a cut list and a bill of materials rather than a production package.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 17 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the workbench is for, and who it targets

Woodworking workbench was designed primarily for creating simple cabinets for your home or garage, and the documentation adds that it includes many features that will make everyday carpentry and other CAD projects easier and faster. That framing is the right one to evaluate against. This is not a furniture design suite for a workshop with CNC machines and a production pipeline, it is a way to take a set of dimensions and a sketch and get panels, a cut list and a bill of materials out the other end. The primary language of the repository is Python, and the tree shows the standard FreeCAD workbench anatomy: an Init.py and InitGui.py, loadMenu.py, loadToolbar.py, loadTools.py, loadToolsAuto.py, loadToolsSettings.py, a fakemodule.py, a package.xml, a Docs/ directory, an Examples/ directory with Fixture, Parametric and magicStart subfolders, Icons/, Tests/, Tools/ and a translations/ directory. The licence is MIT, the last push to the repository was on 2026-10-06, and the release history shows 4.0 stable on the same day after 3.0 in March 2026 and 2.0 in November 2025.

magicStart: the main structure in a few steps

The tool that carries most of the value is magicStart, and its stated job is a quick start and fast process of creating the main structure of the furniture. The idea behind it is parametric generation, where you set the overall dimensions of a cabinet and the workbench derives the panels, the internal divisions and the positions of the fittings from those numbers. Every other tool in the workbench is a modifier on that output. The Examples/ directory makes this concrete, with a magicStart folder alongside Fixture and Parametric examples, so the intended learning path is to open a worked example rather than to start from an empty document and guess at the tool order. For a user arriving from a parametric CAD background this is a familiar shape of interaction. For someone who has never used FreeCAD, the same shape is a lot to absorb at once, which is where the video material the project links to earns its place.

Editing an existing design with magicMove and magicResizer

The second group of tools is about changing a design rather than making one. magicMove handles quick and simple copy, move and redesign of furniture, and magicResizer is listed alongside it as part of the same capability. In practice these are the tools you use after the first design, when a cabinet turns out to be the wrong width for the garage wall or when you want to make a second version with different shelving. The distinction between the two is not spelled out in the summary, but the naming suggests the split between placing a piece of furniture and resizing a component in place, and both operate on the parametric model rather than on geometry you edit by hand. That distinction is the important part for an evaluation. Because the model stays parametric, a change propagates to the cut list, which is the difference between this and drawing a cabinet in a general purpose CAD package and then doing the panel arithmetic yourself.

Joinery and drilling: magicDowels and magicDriller

The joinery tools are where a woodworking workbench has to prove it is more than a box generator. magicDowels covers the quick process of adding dowels and other mounting elements, screws and minifix, and magicDriller covers drilling holes, countersinks, counterbores and pocket holes. The list of hole types in that sentence is the important detail, because those are exactly the operations a real joinery plan needs, and each one has a different bit and a different depth. Together they connect the two halves of the workflow, since a hole in a panel is only meaningful if the panel knows where the other panel is, and a dowel is only meaningful if something is there to receive it. A note in the joinery examples playlist material points at videos covering joinery connections and mounting points specifically, so the project treats this as a headline feature rather than a footnote. The pragmatic caution is that a parametric hole position is a design intent, not a manufacturing instruction, and the difference between a hole drawn in CAD and a hole drilled in wood is where a hobbyist project and a real workshop diverge.

magicGlue, magicMeasure and the units problem

magicGlue is listed as the quick process of making furniture parametric, and magicMeasure and showMeasurements cover measurement. Alongside them sits getDimensions, which produces the automatic cut-list after the design is done, and which also handles wood weight and cost calculation. That last point is easy to miss in the feature list and it is arguably the one that makes a hobbyist tool useful, because a cut list without knowing what the offcuts and the board sizes cost is only half a plan. The units support is described as covering all tools and the cut list, with millimetres, centimetres, metres, inches, board foot, fractions and system, and the documentation explains the reasoning elsewhere in the project. This is the setting that will bite you if you are careless, because the calibration output is expressed in whatever unit you chose, and a cabinet built in millimetres and measured in inches produces numbers that look plausible and are wrong. Pick a unit at the start of a project and do not change it mid-design.

Preview, colour management and the cut list export

The preview and presentation tools are what make a design shareable, and they are listed together because they solve the same problem. makeTransparent, frontsOpenClose and magicView improve the furniture preview, so you can see a door open and look at the inside of a cabinet, and magicColors provides real-time colour management. The output side is getDimensions for the automatic cut list and sheet2export for exporting it, in csv, json, html and markdown formats. Four formats for one data set is a deliberate choice, and each has an obvious audience: csv for a spreadsheet and a CNC workflow, json for a script, html for sharing, markdown for a document or a message. The design is also internationalised, with support for all languages using Google AI translation, and the translations/ directory in the repository plus the loadToolsSettings.py loader are how that gets wired into the workbench.

Installing on Linux, and the reason the AppImage locks FreeCAD

The installation instructions are Linux specific and deliberate. For Linux you download and run the installation package, magicCAD_4.0.AppImage, from the Woodworking-package releases. The note explaining why explains the design of the whole distribution model. The package is an installation package with a tested FreeCAD kernel and the Woodworking workbench, created to lock in a compatible and tested version of the FreeCAD kernel and prevent external breaking of the workbench and keep it working forever. The AppImage copies the workbench into the ~/.local/share/FreeCAD/Mod folder, runs FreeCAD, and sets the Woodworking workbench as the default, so you can update later through the debugInfo tool. Manual installation is described in the Installation section of the workbench documentation, and there is a link about add-on manager installation and update problems. The reasoning is sound for a hobbyist, since a workbench that breaks because someone updated FreeCAD is the most common way these tools fail, and freezing the kernel removes a whole class of support questions. The cost is that you are on the FreeCAD version the author tested rather than the current one, and the documentation points at a dedicated YouTube channel and several playlists for how-to use the tools, feature demonstrations and parameterization approaches.

The MIT licence, and the author's terms about it

The licence section is unusual and worth reading carefully if you plan to build on this code. FreeCAD is licensed under LGPL, but the Woodworking workbench is licensed under MIT, only with the copyright preserved, and the author explains the reason, saying in his opinion LGPL does not allow you to earn from your additional work, because anything you change or add to LGPL code needs to be licensed under LGPL as well, so you cannot sell it, whereas the MIT licence supports developers and allows them to earn and sell work based on the MIT project. The reason this is possible, he explains, is that he uses FreeCAD only as a library and only as a kernel. The rules that follow are specific. You can change the workbench code and sell it as long as you add information about what you invented and what you did not, keeping the licence or noting your changes. You can create tutorials and earn from them, including translating the workbench into another language and selling that translation, but you cannot say you invented the workbench or its features. You cannot copy the workbench or its features into the FreeCAD main branch without a note about the real author. The author is also explicit that there are currently no plans to introduce a fee for the additional tools, that he expects to keep the repository under MIT forever, and that a paid version would be a new repository and a new project, with questions welcome as an issue.

Editorial conclusion

Adopt Woodworking if you are a FreeCAD user who wants to design a simple cabinet or shelf parametrically and get a cut list, since the workbench removes the manual step of deriving panel dimensions and drilling positions from a sketch. Do not adopt it if your work needs certified structural joinery or manufacturing drawings, since the tool produces a cut list and a bill of materials rather than a production package. Verify two things before you start a project in it: which FreeCAD version you are running, since the project ships a locked AppImage with a tested kernel to avoid external breakage, and how it handles units, because the tools accept millimetres, centimetres, metres, inches, board feet, fractions and system units and you need to pick one and stay with it. The practical first step is to download the magicCAD AppImage for Linux, let it copy the workbench into the FreeCAD Mod folder, and then work through the magicStart example rather than starting from an empty document.

Frequently asked questions

What is the Woodworking workbench?

It is a FreeCAD workbench primarily designed for creating simple cabinets for the home or garage, which also includes features for everyday carpentry and other CAD projects. The workbench is written in Python and provides parametric tools for structure, joinery, drilling, measurement and cut lists.

How do I install the Woodworking workbench on Linux?

Download and run the magicCAD_4.0.AppImage installation package from the Woodworking-package releases. It copies the workbench into the ~/.local/share/FreeCAD/Mod folder, runs FreeCAD and sets Woodworking as the default workbench, and manual installation is described in the Installation section of the workbench documentation.

What licence is the Woodworking workbench under?

The workbench is MIT licensed with the copyright preserved, while FreeCAD itself is LGPL. The author explains he uses FreeCAD only as a library and kernel, and notes there are currently no plans to charge for the additional tools.

Which units does the Woodworking workbench support?

All tools and the cut list support millimetres, centimetres, metres, inches, board foot, fractions and the system unit. The resulting calibration is expressed in whichever unit you choose, so the unit needs to stay consistent across a project.

How do I export a cut list from the Woodworking workbench?

getDimensions produces the automatic cut-list after the design, and sheet2export exports it in csv, json, html or markdown format. The workbench also calculates wood weight and costs from the same data.

Official sources

  1. dprojects/Woodworking on GitHub
  2. Issues
  3. License: MIT
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/dprojects-woodworking.svg)](https://hysenlabs.com/projects/dprojects-woodworking)

Was this useful?