OpenSCAD app icon

3D and CAD

OpenSCAD

Free script-based 3D CAD modeller for Windows: describe parametric parts as code, preview instantly and export STL or 3MF for printing and machining.

WindowsmacOSLinuxGPL-2.0

OpenSCAD: solids described in code

What OpenSCAD is

OpenSCAD is a solid modeller controlled by a small programming language rather than by mouse dragging. You write a script that describes a shape, press a key, and the program evaluates the geometry and shows it in a viewer. Booleans such as difference and intersection, transformations such as translate, rotate and mirror, and operations such as linear extrude, rotate extrude, hull and minkowski are the building blocks, and because everything is a number you can name, a part becomes a parametric family rather than a single object. Change one variable at the top of the file and a whole bracket, enclosure or gear assembly resizes to match.

How the workflow runs

Designing begins with primitive solids, usually cubes, cylinders and spheres, that are positioned and combined. Subtracting one solid from another cuts holes and pockets; intersecting two keeps only the overlap; hull wraps a skin around a set of shapes, which is the quickest way to make a tapered transition between two profiles. Extrusion turns a flat outline into a solid, and rotate extrude does the same for a revolved profile such as a knob or a pulley. Because the file is text, the same script can generate a set of related parts by looping over a list of sizes, and modules let you define reusable assemblies that take parameters.

The preview is cheap and interactive; a full render evaluates the actual geometry and is what produces accurate output for export. Scripts can be opened with a set of declared parameters exposed as sliders and fields in the Customizer panel, so a non-programmer can adjust a published model without touching the code, which is exactly how OpenSCAD designs circulate on 3D printing sites. Export targets include STL, 3MF, AMF, OFF, DXF and SVG, giving both additive manufacturing and laser or plotter workflows a path out. Two-dimensional output is a first-class feature rather than an afterthought: a profile drawn with 2D primitives and booleans can be exported as a DXF for a laser cutter, then extruded in the same file for the printed version.

Settings, limits and things that annoy people

This is a slow tool by modern standards on complex models, because constructive solid geometry evaluated through a mesh kernel punishes thousands of overlapping features. Rounded edges are awkward: there is no fillet or chamfer feature, so smooth corners come from hull of cylinders, minkowski sums or pre-modelled shapes, and each trick costs render time. There is no assembly tree, no mates, no drawings engine and no native STEP or IGES import or export, so interchange with industrial CAD is limited to meshes and 2D vector formats. The language has no type checking to speak of, and a misplaced semicolon can produce geometry that silently differs from the intent. Large loops generate large files, and the viewer can lag badly if a full render is triggered too early.

Who should choose something else

If you think in sketches, constraints and features, or you need assemblies, drawings and STEP files for a machine shop, a parametric GUI modeller will be far less frustrating. If you need precise interactive constraint solving with instant visual feedback, a small constraint-based modeller is a better fit. OpenSCAD is the right tool when reproducibility, version control and parameter sweeps matter more than interactive editing, and it remains the most efficient way to produce exact, shareable parametric parts with nothing but a text editor.

Best for
Engineers and makers who want reproducible, parametric, version-controllable parts and are comfortable expressing geometry as code.
Good to know
There is no fillet or chamfer command and no STEP export, and complex models render slowly; the Customizer panel exposes parameters to non-coders.

How to get started

  1. Download the Windows installer from the official OpenSCAD downloads page. The package is self-contained.
  2. Create a new file, type a first shape such as cube([20, 20, 5], center=true); and press F5 with the cursor in the editor to preview it.
  3. Combine primitives: difference() cuts holes, union() merges parts, and translate or rotate positions each piece.
  4. Name your dimensions as variables at the top of the file so the part becomes parametric, and wrap reusable shapes in modules.
  5. Add a parameter comment above a variable to expose it in the Customizer panel, so others can adjust the model with sliders.
  6. Press F6 for a full render, then export STL or 3MF for printing, or DXF and SVG when the profile goes to a laser cutter.

Questions & answers

Can I round the edges of a model?

There is no fillet or chamfer operator. Smooth corners come from hulls of cylinders, minkowski sums or imported shapes, and cost render time.

Does it export STEP files?

No. Export covers mesh formats such as STL and 3MF plus 2D output such as DXF and SVG.

Why is rendering slower than previewing?

Preview draws an approximation, while a full render evaluates the constructive solid geometry exactly. That evaluation is what takes the time.

More in 3d and cad

View category