build123d online — run build123d code in your browser

Paste a build123d script, or open a link that carries one, and it builds right in your browser. The size constants in your code become sliders that rebuild as you drag; when it's right, export STEP or STL. No Python or OCP to install, no sign-up, and your code is not uploaded.

Open the build123d editor →Open with sample code →

What you get

Your script, as written

Builder and algebra mode, selectors, Locations, joints — build123d 0.13 code runs as you wrote it, and numpy, bd_warehouse and sympy import as usual.

Exact geometry, STEP and STL export

It builds real solids, not meshes: true planes, cylinders and holes. One click exports STEP (opens in Fusion, SolidWorks, Onshape and FreeCAD) or STL (for your slicer).

Constants become sliders

Knobs declared with #@ — or, without any, every number constant at module level — appear as sliders. Dragging one rewrites that number in your code and rebuilds.

Change it in a sentence

“Make the holes M4”, “loosen the lid”: the AI edits the code, your browser rebuilds it, and an edit that doesn't build is not applied. Two a day without an account; save the part to My models and the AI agent can carry on with it.

Errors on your own line

A failure names the line in your code and marks it in the editor, with one click to have the AI fix it. Code that runs in build123d but fails or builds a different shape here goes to us with “Report a problem”.

Code in the link

“Copy link” puts the current code into the URL, so whoever opens it sees the same part. When ChatGPT or Claude writes build123d for you, ask it for such a link.

No script at hand? Start with one of these

Each opens already built in your browser. Drag the sliders to resize it, then export STEP. No sign-up.

The kind of script an AI writes

Algebra mode, one constant per line, no #@ — open it and OD, HEIGHT and the rest are sliders.

"""M3 standoff with a hex nut pocket underneath. World Z-up, mm; it stands on Z=0."""
from build123d import *
from ocp_vscode import show

OD = 12.0  # outer diameter
HEIGHT = 15.0
BORE = 3.4  # M3 clearance hole
NUT_AF = 5.7  # nut across flats, plus clearance
NUT_DEPTH = 3.0

standoff = Cylinder(OD / 2, HEIGHT, align=(Align.CENTER, Align.CENTER, Align.MIN))
standoff -= Cylinder(BORE / 2, HEIGHT, align=(Align.CENTER, Align.CENTER, Align.MIN))
standoff -= extrude(RegularPolygon(NUT_AF / 2, 6, major_radius=False), amount=NUT_DEPTH)
top_outer = standoff.edges().group_by(Axis.Z)[-1].sort_by(SortBy.RADIUS)[-1]
standoff = chamfer(top_outer, 0.8)

show(standoff)
Open with sample code →

What runs and what doesn't

Here is exactly where the edges are. Code that can't run fails with an error that says why.

Runs

  • The build123d 0.13 API: BuildPart / BuildSketch / BuildLine and algebra mode, selectors and filters, the Locations family, joints, and classes that subclass build123d's.
  • from build123d import * and from ocp_vscode import show work as written. The result is what you pass to show(); without one, what you export; failing that, the last 3D object.
  • numpy, bd_warehouse (threads, fasteners, gears, pipes), sympy and the Python standard library.
  • Forgent3D's own model.py (from cadkit import …) opens as well.

Current limits

  • CadQuery, scipy, matplotlib and shapely are not available, and most direct from OCP import … isn't either; the error says what to do instead.
  • export_step, export_stl and the like write no file — use the page's export buttons.
  • Text() uses a built-in font, so lettering differs from what you get locally; font_path= and Chinese, Japanese or Korean text raise an error.
  • A few scripts build a slightly different shape without an error. Check the dimensions before you make the part.
  • A link carries one file: importing another .py from your project fails — inline it.

Compared with build123d on your machine

build123d locallyThis page
Installpip install build123d (pulls the OCP / OpenCASCADE wheels)Open a web page
Viewerocp_vscode / the VS Code extensionBuilt in
ParametersChange the number, run againSliders that rewrite the number
SharingSend the .pyOne link with the code in it
Exportexport_step() / export_stl() in your codeSTEP and STL buttons
LibrariesAnything pip installsnumpy, bd_warehouse, sympy

Using Claude Code or Codex? Install the Forgent3D skill

One command, and the agent writes parametric build123d models in your repository and builds them on your machine with Forgent3D's CAD engine: it reads back the bounding box and volume, checks a three-view snapshot itself and exports STEP / STL. No Python or OCP install.

npx skills add forgent3d/forgent3d-skills
Skills page →

FAQ

Can I run build123d online without installing Python?

Yes. Open the editor, paste code or open a link that carries it, and it builds the part in your browser; dragging parameters and exporting STEP or STL happen on the page. No install, no sign-up.

Do I need to change my script? What about show() from ocp_vscode?

Usually not. from ocp_vscode import show and show(...) work as written: whatever you show is the part on screen. Without show, the object you pass to export_step and friends is used, and failing that the last 3D object. export_* calls write no file; use the export buttons on the page.

Can I use numpy and bd_warehouse? And CadQuery?

numpy, bd_warehouse, sympy and the Python standard library import as usual. CadQuery, scipy, matplotlib and shapely don't, and most direct from OCP import … doesn't either; the error tells you what to change.

Is my code uploaded to a server?

No. Building and exporting happen in your browser, and code after # in a link is not sent to the server. Code reaches us only when you use AI edit, or Report a problem with “Attach the code” ticked.

How do I quickly see build123d code written by ChatGPT or Claude?

Paste it into the editor, or ask the assistant for a link of the form https://app.forgent3d.com/build123d#code=<code> — it opens with the part already built.

Does the exported STEP open in SolidWorks, Fusion and FreeCAD?

Yes. It contains solids, so holes and round faces come in as cylinders you can select and dimension, not a triangle mesh.

Read more