LearnSwitching tools
OpenSCAD vs FreeCAD vs text-to-CAD: parametric parts with or without code
The same 20-tooth gear built three ways: an OpenSCAD script, a FreeCAD spreadsheet, and one sentence. Kernel, STEP export, learning curve, price.
· 8 min read

Pick OpenSCAD if you want to type your parts and only ever print them. Pick FreeCAD if you want to draw them and you also need STEP files for a machine shop or another CAD package. If you already think in parameters but would rather not write or click at all, a text-to-CAD tool takes a sentence and hands back the sliders, plus STL and STEP.
Below is the same part built all three ways, so you can see what each one costs you.
The part: a 20-tooth spur gear with a keyed bore
Module 2, 20 teeth, 10 mm thick. An 8 mm bore with a 3 mm wide keyway. A pitch diameter of 40 mm, which is module times teeth. A small, real part that turns up in every printer, drill and food mixer repair.
Way one: OpenSCAD
OpenSCAD is a script language for solids. You write code, press F5, and the viewer shows the result. The program calls itself "The Programmers Solid 3D CAD Modeller" on its own site, and that is accurate. There is no drawing. Every dimension is a variable.
A gear in raw OpenSCAD means computing an involute curve point by point, which runs past 40 lines. Most people pull in the BOSL2 library instead, which is what the popular Gear Generator on MakerWorld does under the hood. With BOSL2 the whole part fits on a screen:
include <BOSL2/std.scad>
include <BOSL2/gears.scad>
teeth = 20; // [8:120]
mod = 2; // [0.5:0.25:5]
bore = 8; // [2:0.5:20]
key_w = 3; // keyway width
key_d = 1.4; // keyway depth past the bore wall
thick = 10;
difference() {
spur_gear(mod=mod, teeth=teeth, thickness=thick, shaft_diam=bore);
translate([-key_w/2, 0, -thick/2 - 1])
cube([key_w, bore/2 + key_d, thick + 2]);
}
I wrote this against the BOSL2 docs but did not run it, so treat it as a sketch. It needs BOSL2 in your library folder. The comments in square brackets do work. OpenSCAD's Customizer, in every release since 2019.05, turns any plain variable at the top of a file into a form field, and the [8:120] comment becomes a slider. OpenSCAD users have had sliders since 2019. That is why they take to them elsewhere without a tutorial.
Two things to know before you commit to OpenSCAD:
- The last release is 2021.01. It came out in February 2021, so the big download button hands you a build older than most of the printers it feeds. Everything since lives in the development snapshots, which the project ships as nightly builds for macOS, Windows and Linux. The snapshots got the Manifold geometry backend, which stopped being experimental in September 2024 and became the default in August 2025. The project describes the result as significantly faster rendering than the old CGAL backend. If you install OpenSCAD from a distro package or the stable download, you are on the 2021 build and the slow renderer. Install the snapshot.
- It outputs meshes. The export list is STL, OFF, AMF and 3MF for solids, plus DXF, SVG, PNG and PDF for 2D. There is no STEP, because OpenSCAD never had a B-rep solid to write. It builds meshes with constructive solid geometry and hands you the triangles. A slicer is happy with that. A machine shop is not, and neither is any CAD program that expects a solid it can edit. If you need to know why that matters, read what a STEP file is.
If you want to try it without installing anything, openscad.cloud runs a WebAssembly port of OpenSCAD in the browser, and MakerWorld's Customize button runs scripts like the gear generator above on their servers.
Way two: FreeCAD
FreeCAD is a conventional parametric modeler in the SolidWorks and Fusion mould. You sketch a 2D profile with constraints, pad or pocket it into a solid, and stack features in a tree. Current stable is 1.1.3, following the 1.1 release in March 2026, which brought transparent Part Design previews, draggers on fillet and chamfer, and more work on the topological naming problem that used to break models when you edited an early feature.
Three routes to the gear:
- PartDesign by hand. Create a Body, sketch one tooth profile, pad it, then use a polar pattern to get 20. Sketch the bore and keyway on the face, pocket through. This is the honest route and it teaches you FreeCAD. The involute itself is the painful part. You either approximate it with arcs or build it from a B-spline through calculated points.
- Spreadsheet on top. Open the Spreadsheet workbench, put
teeth,module,boreandkey_win cells and give each cell an alias. Then type=<<Params>>.borein the pocket's length field. Change a cell and the model recomputes. This is FreeCAD's answer to the OpenSCAD variable block, and it works, but you wire every dimension by hand. - The Gear workbench. Install FCGear from the Addon Manager. It makes involute, cycloid, bevel, worm, timing, lantern and crown gears as parametric objects with
num_teeth, module, height and helix angle in the property panel. Then switch to PartDesign, sketch the bore and keyway on the gear face, and pocket. Ten minutes once you know where the buttons are.
The payoff is the kernel. FreeCAD sits on Open CASCADE, an exact boundary-representation (B-rep) kernel, so the gear is a true solid with faces and edges rather than a soup of triangles. It writes STEP, IGES, STL, 3MF, OBJ and DXF among others. Send the STEP to a machinist. Open it in Fusion or Onshape and keep editing.
The cost is the learning curve. FreeCAD is free and has no licence tier, which is why it heads every Fusion 360 alternative list. But the first month is spent learning which workbench does what, and why your sketch went green but the pad failed.
Way three: one sentence
The third route skips both the code and the sketch. You type:
A 20-tooth module 2 spur gear, 10 mm thick, 8 mm bore with a 3 mm keyway.
On Type Parts that sentence goes to a Claude model that writes a build123d script. build123d is a Python CAD library on the same Open CASCADE kernel as FreeCAD. The script has a parameter block at the top and a set of checks at the bottom, in the style of the OpenSCAD file above but in Python. A sandbox runs it. If the geometry fails a check, the error goes back to the model and it tries again, up to four rounds. The script itself never leaves the server. What you get is the rendered part plus sliders for teeth, module, bore and keyway width. Moving a slider re-runs the script, which is free and does not touch the model.
Export is STL for the slicer or STEP for the shop, because build123d writes both from the same B-rep solid. The first part costs nothing and needs no account. After that you get 4 credits at signup, then Hobby at $15 a month for 25 credits with STL export, or Maker at $49 a month for 80 credits with STL and STEP. Prices in USD before tax.
Where this beats a script: you spend no time on the involute, and none on library paths or argument order. Where a script still wins: you can read every line of an OpenSCAD file and diff it in git. You can also post it on MakerWorld and let a thousand strangers customize it. If you want the gear now, the gear generator page has the prompt prefilled. <!-- link /make/gear when it ships -->
Side by side
| OpenSCAD | FreeCAD | Text-to-CAD (Type Parts) | |
|---|---|---|---|
| Kernel | CSG to mesh (CGAL, or Manifold in the nightly) | Open CASCADE B-rep | Open CASCADE B-rep via build123d |
| Parametric how | Variables in the script, Customizer form | Sketch constraints, Spreadsheet aliases, expressions | Parameter block in a generated script, exposed as sliders |
| STEP export | No. STL, OFF, AMF, 3MF only | Yes, plus IGES, STL, 3MF, OBJ, DXF | Yes on Maker. STL on Hobby |
| Learning curve | Programming basics, then the language | Workbenches, sketcher, feature tree. Weeks | A sentence. Minutes |
| Price | Free, open source | Free, open source | One free part. $15 or $49 a month |
| Offline | Yes | Yes | No, runs on the server |
| Current version | 2021.01 stable, nightly snapshots | 1.1.3 | Rolling |
Who should pick which
OpenSCAD if you write software already, print everything you design, and want a file you can read and version. The Customizer and MakerWorld's parametric models make it the best format for publishing adjustable parts. Skip the stable release and run a nightly. Accept that you will never get a STEP out of it.
FreeCAD if you need STEP, work with assemblies, draw the odd engineering drawing, or expect to hand files to someone with SolidWorks. Budget real learning time. Once you have it, you have a full CAD package for nothing, and the CAD for 3D printing comparison explains where it sits next to the paid options.
Text-to-CAD if you are an OpenSCAD person who wants the sliders without the typing, or a FreeCAD person who wants the STEP without the tree. The part comes back tested and parametric. It costs money past the first one and it needs a connection. For a one-off bracket or a replacement gear, that trade is usually worth it. For a 40-part assembly, it is not, and FreeCAD is the tool.
For parametric 3D printing, OpenSCAD is the faster tool to learn if you can already program, and FreeCAD is the better tool if you ever need a STEP file. OpenSCAD describes a part as code: variables at the top, constructive solid geometry below, and a Customizer panel that turns those variables into sliders. It outputs meshes only, STL and 3MF among them, which is fine for a slicer and useless for a CNC shop. Its last stable release is 2021.01, so run the nightly build to get the fast Manifold renderer. FreeCAD is a conventional sketch-and-feature modeler on the Open CASCADE kernel. It writes STEP and IGES, handles assemblies, and takes weeks to learn. A third option, text-to-CAD, generates a parametric script from a sentence and returns sliders plus STL and STEP, at the cost of a subscription and an internet connection. Choose by what you export and how much you want to type.