[HN Gopher] Open source CAD in the browser (Solvespace)
       ___________________________________________________________________
        
       Open source CAD in the browser (Solvespace)
        
       Author : phkahler
       Score  : 268 points
       Date   : 2026-03-31 12:50 UTC (10 hours ago)
        
 (HTM) web link (solvespace.com)
 (TXT) w3m dump (solvespace.com)
        
       | masonhensley wrote:
       | I've been using FreeCad more and more, but solvespace has been a
       | great, lightweight tool to design parts for laser cutting by
       | SendCutSend/Oshcut.
       | 
       | Neat that they got it working in the browser.
        
         | bhouston wrote:
         | FreeCAD is amazing these days. It has completely replaced my
         | use of Autodesk Fusion 360 for woodworking projects. It is
         | capable and the UI is understandable. Its feature depth is
         | incredible.
         | 
         | FreeCAD is becoming like Blender and Inkspace - incredibly
         | robust and capable and equivalent in most cases to the
         | commercial alternatives.
         | 
         | I find the rendering side of things under developed though.
        
           | ur-whale wrote:
           | > FreeCAD is amazing these days.
           | 
           | FreeCAD has become much better, no denying it.
           | 
           | "Amazing" is however not the word I would use though, the UI
           | is still very convoluted and very hard to learn.
           | 
           | The worst part in FreeCAD, and which remains true to this day
           | is the load of minutia you need to know to handle/avoid weird
           | corner cases that you inevitable run into when you start
           | building complex models and where FreeCAD stubbornly refuses
           | to let you carry on with your work.
           | 
           | When you paint yourself into one of these corners, the
           | software is hugely unhelpful when it comes to understanding
           | what you did wrong and how to correct it.
           | 
           | In short, the word "Amazing" only works if you compare it to
           | the absolute abomination the UI was a few years back.
           | 
           | But compare FreeCAD today to, for example, how slick Fusion
           | is, there is still a very, very wide gap.
           | 
           | Finally, the geometry engine, is a somewhat old and creaky
           | thing that sometimes downright fails to compute fillets or
           | surface/surface intersections correctly, so yeah, YMMV.
           | 
           | FreeCAD is however, free software, and not controlled by one
           | of the worst corp. in the world of software: Autodesk. So
           | huge thumbs up there.
        
             | jstanley wrote:
             | The word "amazing" fits perfectly if you compare FreeCAD to
             | viable alternatives, of which there are none.
        
             | trey-jones wrote:
             | This is really accurate to my experience learning FreeCAD
             | earlier this year. I am a former professional CAD user (of
             | a lesser software than AutoCAD) and I don't think I would
             | have gotten far without being able to ask ChatGPT for help
             | understanding some of the quirks of FreeCAD.
             | 
             | For free and open it's truly impressive though. Actually I
             | think my time building iOS UIs in Storyboard was at least
             | as useful as previous CAD experience, since constraints are
             | the foundation of (at least one approach to) designing
             | parts.
        
             | blacklion wrote:
             | I nominate Adobe to the worst corp. in the world of
             | software.
             | 
             | Fusion360 at least works on Linux
             | 
             | Photoshop/Lightroom don't.
        
             | ruevs wrote:
             | The last Autodesk software I've used was AutoCAD 2000
             | (released in 1999). And I've not followed them since.
             | 
             | Perhaps they have indeed become "one of the worst corp. in
             | the world of software", but in the early years they were
             | very interesting. The founder of Autodesk, John Walker (he
             | died in 2024) wrote/edited and interesting book on the
             | early years: "The Autodesk File"
             | https://fourmilab.ch/autofile/
        
           | lopsotronic wrote:
           | Yeah anything involving 2d art I confess I just send to
           | Blender, even technical illustration, with the exception of
           | O&D style sheets.
           | 
           | The fact anyone got a CAD kernel working in the browser is
           | insane. Parsing the vagaries, vendor cruft, and gaping holes
           | in STEP files has occupied a non-trivial amount of my career.
           | 
           | You want to talk about poisoned specs . . .
        
           | 3yr-i-frew-up wrote:
           | Yep, love FreeCAD.
           | 
           | I did a major project with it in 2019 and it was great back
           | then.
           | 
           | The issues it has are pretty minor. Admittedly I ended up
           | using a fork for Assembly3(IIRC)
        
           | hrmtst93837 wrote:
           | FreeCAD strains on larger assemblies and tighter parametric
           | constraints, and feature depth doesn't hide slow updates or
           | sketch import glitches.
        
         | olavgg wrote:
         | I just started with FreeCAD this weekend, and in 3 hours I
         | managed to create a simple pci bracket that I could 3dprint. I
         | just followed some YouTube tutorials. When I learned 3D Studio
         | Max 25 years ago, I struggled a lot more.
        
       | MrDOS wrote:
       | SolveSpace is a wonderfully different take on parametric CAD, but
       | development has really slowed, and it seems fundamentally
       | incapable of some pretty rudimentary features (like chamfers[0]).
       | Dune 3D[1] seems like a pretty effective spiritual successor.
       | 
       | 0: https://github.com/solvespace/solvespace/issues/149
       | 
       | 1: https://dune3d.org/
        
         | julbaxter wrote:
         | Dune3D uses SolveSpace behind the scene.
        
           | phkahler wrote:
           | Only for the constraint solver. Dune uses OCCT for the solid
           | model.
        
             | amelius wrote:
             | I'm curious why you didn't go with OCCT for Solvespace.
        
               | phkahler wrote:
               | >> I'm curious why you didn't go with OCCT for
               | Solvespace.
               | 
               | I didn't start Solvespace, but Jonathan was apparently in
               | a DIY mode after developing his take on constraint-based
               | sketching. It's also very easy to go from NURBS curves to
               | NURBS surfaces, the challenge begins at boolean
               | operations which continue to be a source of bugs for us.
               | This is really the only option _other than_ OCCT and the
               | code is small and approachable so I try to make it
               | better.
        
               | amelius wrote:
               | Would it be worthwhile to consider switching to OCCT (or
               | make it optional)? It would make certain things such as
               | fillets/chamfers much easier, I suppose, and it would
               | make those boolean operation bugs go away. And exporting
               | to various formats would be easy.
        
               | phkahler wrote:
               | >> Would it be worthwhile to consider switching to OCCT
               | 
               | It would, and it has been considered. The sketch elements
               | in solvespace are significantly decoupled from the solid
               | model. That means we could substitute (via wrapper maybe)
               | an OCCT object instead of our SShell class. Then you'd
               | have to change a set of solvespace curves to OCCT curves
               | to make extrusions from them and such. But that would be
               | most of the work.
               | 
               | We do tag all triangles in the mesh with a sketch entity
               | handle for flat surfaces so you can constrain points to a
               | face. I'm not sure how that would be handled. We will
               | also be tagging edges of the solid with sketch entity
               | handles in the future so we can do chamfers and fillets -
               | say by selecting a line entity and applying a modifier to
               | it which gets applied to the NURBS shell. I'm not sure
               | how that would go with OCCT.
               | 
               | But yes I've given a bit of thought to it ;-)
        
               | amelius wrote:
               | Perhaps you could create both the shell and the OCCT
               | object. Then when an edge is chamfered, you could look it
               | up in the OCCT object (simply find all segments which are
               | sufficiently close to the chamfered edge). And then call
               | the OCCT chamfer function. Or something along those
               | lines.
        
               | jwesthues wrote:
               | Yeah. To quantify, OCCT is >1M lines of code, and
               | SolveSpace's NURBS kernel is <10k. This general smallness
               | is what subsequently made stuff like the browser target
               | feasible, though it obviously comes with downsides too.
               | 
               | We'd welcome contributions, and it's much easier to
               | contribute to the smaller codebase. I think there's
               | potential for coding agents to accelerate this work since
               | robust point-in-shell and shell-is-watertight tests are
               | mostly sufficient to judge correctness, allowing the
               | agent to iterate; loosely you could define your geometric
               | operation as a function of whether a point should lie
               | within the output region, then ask the agent to convert
               | that to b-rep. I wouldn't currently expect useful
               | progress without deep human effort and understanding
               | though.
        
           | phkahler wrote:
           | Oh, and the Blender CAD Sketcher add-on also uses our
           | constraint solver.
        
         | IshKebab wrote:
         | FreeCAD doesn't have the limitations of SolveSpace, and the UX
         | is actually decent now. I moved to that.
        
           | l-albertovich wrote:
           | I just tested it out of curiosity and found that viewport
           | manipulation behaves in a very similar way to onshape which
           | feels very natural to me.
           | 
           | I've been thinking about trying to implement this in freecad
           | but I'm still exploring the idea.
        
             | Karliss wrote:
             | There are more than dozen different viewport navigation
             | manipulation modes, latest version added two more
             | (Solidworks and Siemens NX). You can pick whichever behaves
             | closest to the program you are most used to.
        
           | jabl wrote:
           | Some years ago I tried to learn CAD by doing some FreeCAD
           | tutorials, and failed. But I hear 1.0 was a big step forward,
           | and the recently released 1.1 is also a big step, and it
           | should be somewhat decent nowadays. Maybe I need to try again
           | one day.
        
             | IshKebab wrote:
             | Yeah it's vastly better in 1.0 than it used to be. I still
             | think you might be a bit lost if you aren't familiar with
             | parametric CAD, but it's no harder than Blender for
             | example.
        
           | jonpurdy wrote:
           | I'm looking for a recommendation to get beyond TinkerCAD (for
           | 3d printing). I learned it in 2019 and came back in 2025 when
           | I got my own printer. It is comfortable and fine for my
           | purposes but lacks basic things like chamfer and fillets.
           | 
           | Anytime I try to jump into Fusion or FreeCAD I immediately
           | hit a wall (like trying pirated Maya when I was a kid).
        
             | IshKebab wrote:
             | I would recommend pirating SOLIDWORKS and learning with
             | that. It has the easiest UX of the parametric CAD
             | modellers, and once you know the general sketch-extrude
             | methodology you will find the others a lot easier.
             | 
             | Actually I think they have a hobbyist subscription which
             | isn't totally extortionate now if you want to stay legal.
             | Maybe get it for a year.
        
         | phkahler wrote:
         | Chamfers and Fillets are my next major undertaking. Don't
         | expect them any time soon, but they've moved to the top of my
         | list. They are extremely difficult to do in the general case -
         | so we will not cover all cases. Several years ago I tried an
         | experiment:
         | 
         | https://github.com/solvespace/solvespace/issues/453#issuecom...
         | 
         | That could only do the top or bottom of a straight extrusion.
         | This time will be a more general than that. Not looking forward
         | to doing corners where 3 fillets meet ;-)
        
           | MrDOS wrote:
           | Oh, sorry, I didn't recognize that this had been posted by a
           | SolveSpace maintainer! Rad. I am glad to hear the project is
           | still moving.
           | 
           | I also appreciate the difficulty of generalizing
           | chamfers/fillets. There's a reason that basically all FOSS
           | CAD packages have struggled with it.
        
             | echelon wrote:
             | > difficulty of generalizing chamfers/fillets. There's a
             | reason that basically all FOSS CAD packages have struggled
             | with it.
             | 
             | Could you decompile CAD, run it through an LLM, and call it
             | a day?
        
               | yonatan8070 wrote:
               | Aren't there licesing issues with porting a proprietary
               | implementation into an open-source one that could open up
               | the project to legal issues with the proprietary vendor?
        
           | mordae wrote:
           | Hi! Thanks for your hard work! I just want you to know it's
           | definitely worth it!
           | 
           | I am using SolveSpace for my 3D prints because I just don't
           | have time to learn anything else. With SolveSpace I've been
           | productive in like 2 hours after launching it the first time.
           | 
           | So far you've saved me like $500 in things I've printed
           | instead of bought. Just last week I've printed nasal manifold
           | for my DIY sleep monitoring setup. Replacement specs legs a
           | month ago.
           | 
           | If you really make fillets and chamfers a reality, please
           | don't forget to open donations.
        
         | faangguyindia wrote:
         | All we need is a genius, with unlimited claude and codex credit
         | and he will replace Fusion 360 atleast in 3d printing and
         | machining space
         | 
         | It's so sad most guys aren't comming together to build some
         | great CAD engine which open source really needs!
         | 
         | Gimp is shame, photoshop is increasingly being lockdown and
         | people who have smarts to fix that are doing nothing.
        
           | ezst wrote:
           | That people on this forum convinced themselves that it's a
           | reasonable take to vibe code a useful geometric kernel is
           | profoundly depressing.
        
             | faangguyindia wrote:
             | Just wait for sometime, there will be one.
             | 
             | There are many geniuses on HN for tacking up challenge
        
               | fainpul wrote:
               | So you think AI can do this - why exactly is a genius
               | needed?
        
             | stackedinserter wrote:
             | Correct me if I'm wrong, kernel is already there, and it's
             | decent enough. What's lacking is a good user interface to
             | it.
        
               | progbits wrote:
               | FreeCAD is perfectly good user interface for opencascade.
               | The problem is that as your geometry gets more
               | complicated you start running into the kernel
               | limitations.
        
             | progbits wrote:
             | Indeed. I would love for it to be true, but aside from
             | opencascade^1 all the professional kernels are proprietary
             | and not in the training set, so LLMs can't just regurgitate
             | them.
             | 
             | ^1: Which I really appreciate, but let's be real, it is far
             | behind eg. parasolid.
        
         | brcmthrowaway wrote:
         | How does Dune3D compare to FreeCAD?
        
           | phkahler wrote:
           | >> How does Dune3D compare to FreeCAD?
           | 
           | Dune3D is more like Solvespace with a few improvements and
           | bug fixes vs being anywhere near FreeCAD in terms of
           | capability. Improvements include using STEP files in
           | assemblies and having some ability to make Fillets or
           | Chamfers. Bugs fixes would be due to using OCCT for NURBS
           | surfaces - solvespace frequently fails with NURBS boolean
           | operations.
           | 
           | As for overall capability, FreeCAD does everything these
           | others do but also supports lofting and other modeling
           | options, BIM for architecture, I think it does pre- and post-
           | processing for FEA, and maybe some other "big tool" things.
        
           | mordae wrote:
           | It takes 10x as long to sketch in it compared to SolveSpace.
           | At least for me.
        
       | TheJoeMan wrote:
       | I scrolled with the mouse wheel and the origin drifts off screen.
       | 
       | Is there an open-source "cleanroom" re-implementation of the
       | Parasolid kernel? I just like the way Solidworks does things vs.
       | Autodesk.
        
         | gcr wrote:
         | The mouse wheel zooms. The bounds of the axis stay fixed on the
         | screen however. It will become more intuitive if you draw a
         | circle to the screen first.
         | 
         | To pan around the space, use the right mouse button. To zoom,
         | use the scroll wheel. To rotate, use Shift+Right mouse button.
         | 
         | Why not play with it a little bit before dismissing it so
         | suddenly? I don't need to mention to a Solidworks/Autodesk user
         | that CAD tools take some patience to understand properly :-)
        
           | phkahler wrote:
           | >> To rotate, use Shift+Right mouse button.
           | 
           | Or middle mouse button / click the scroll wheel.
        
         | phcreery wrote:
         | This is expected behavior. The zoom action is into the cursor
         | center. This is the same behavior of many other 2d/3d editors,
         | such as Autodesk Autocad, Inventor, etc. Even MS Paint does
         | this. If you place your cursor perfectly at the origin, it will
         | not appear to drift.
        
         | ruevs wrote:
         | If you get lost press `f` to "fit" the current drawing to the
         | screen.
         | 
         | By the way working in SolveSpace is extremely fast if you use
         | keyboard shortcuts - almost everything can be dome with a
         | shortcut key. No need to search for them - you can learn them
         | by looking in the menus.
         | 
         | A very short "crash course" on the navigation is in the "Quick
         | start:" section at the bottom of the download page.
         | https://solvespace.com/download.pl The "demo video" on the home
         | page is also a great starting point.
         | 
         | After that the "Tutorials" and "Reference" go in as much detail
         | as one may want :-)
        
       | ponyous wrote:
       | Does this use its own backend/engine? I've been working on LLM to
       | CAD tool[0] and have realised there are so many backends and
       | options to choose from. Since the realisation I'm trying to find
       | the best representation for an LLM. I think OpenSCAD is currently
       | the best and most feature complete choice, but I definitely need
       | to dig a bit deeper. If anyone has any pointers I welcome them!
       | 
       | [0]: https://GrandpaCAD.com
        
         | yangcheng wrote:
         | I have tried OpenSCAD, it seems very slow to compile to display
         | on web. are you using the official wasm or some other ways?
        
           | mikeayles wrote:
           | you may find this useful: https://phaestus.app/blog/blog0031
           | 
           | Edit: Forgot I also got doom running in openscad:
           | https://www.mikeayles.com/blog/openscad-doom/
           | 
           | and doom running in openscad in the browser at
           | https://doom.mikeayles.com/
        
           | ponyous wrote:
           | I export it as .3mf file and display it with threejs on the
           | web. Compilation seemed fast enough - few seconds tops.
        
         | ur-whale wrote:
         | > I think OpenSCAD is currently the best and most feature
         | complete choice
         | 
         | As much as I love OpenSCAD, I would _strongly_ disagree with
         | your conclusion.
         | 
         | All the OpenSCAD language can do is boolean operations and
         | moreover, the engine can only implement those on polygonal
         | (triangle actually) meshes.
         | 
         | That's a very far cry from what a modern commercial CAD engine
         | can do.
         | 
         | For example, the following things are very, very hard to do, or
         | even specify using OpenScad:                  - Smooth
         | surfaces, especially spline-based             - Fillets /
         | Chamfers between two arbitrary surfaces             - Trimming
         | surfaces             - Querying partly built models and using
         | the outcome in the subsequent construction (e.g. find the
         | shortest segment between two smooth surfaces, building a
         | cylinder around it and filleting it with the two surfaces, this
         | is an effing nightmare to do within the confines of OpenSCAD)
         | - Last but not least: there is no native constraint solver in
         | OpenSCAD, neither in the language nor in the engine (unlike -
         | say - SolveSpace)
         | 
         | I might have misunderstood what you're looking to do, but,
         | yeah, digging deeper feels very much like the right thing to
         | do.
        
           | FeepingCreature wrote:
           | (my) fncad doesn't have the querying, but it does have smooth
           | csg! https://fncad.github.io/
        
           | Zekio wrote:
           | using BOSL2 alleviates most issues I've run into with
           | OpenScad for chamfers and the like, but it is an extra set of
           | functions you need to remember sadly
           | 
           | https://github.com/BelfrySCAD/BOSL2
        
             | ur-whale wrote:
             | > BOSL2 ... but it is an extra set of functions you need to
             | remember sadly
             | 
             | It's also _extremely_ slow: it implements chamfers and
             | fillets using morpho, and if you have a large number of
             | fillets, the morpho algorithms (minkowski  / hull) are very
             | much non linear in time on polygonal meshes, which leads to
             | compute time explosion if you want a visually smooth
             | result.
        
               | Zekio wrote:
               | you can get around this somewhat by having less visually
               | smooth previews when editing and higher quality when you
               | want an stl                 $fn = $preview ? 32 : 256;
        
         | IshKebab wrote:
         | Yeah it does. In fact I believe it was written to demonstrate
         | improved sketch constraint solving (there's a 2D version too).
         | 
         | Unfortunately aside from the better sketching the engine is not
         | as capable as OpenCascade.
        
         | markcheno wrote:
         | I just ran into this today: https://github.com/gumyr/build123d
         | - seems like an LLM should have no problem writing python
         | code...
        
       | steveharing1 wrote:
       | Currently I'm comfortable using FreeCAD but i'll try this one for
       | sure.
        
       | JoshTriplett wrote:
       | Impressive work!
       | 
       | Minor nit: why does the rendered in-window text use a really
       | awful pixelated font? It looks like what happens when a font gets
       | rendered onto a pixel grid without any hinting or snapping.
        
         | dfox wrote:
         | It uses exactly the same font in the desktop version, and is
         | probably entirely intentional.
        
           | JoshTriplett wrote:
           | I assumed it likely looked like the desktop version, and that
           | was exactly what was motivating my question.
        
           | ruevs wrote:
           | Intentional indeed. It is GNU Unifont - a 973KiB file that
           | covers practically all of Unicode. In a bitmap font, platform
           | independent, self contained, small. Practically all that
           | SolveSpace strives to be.
           | 
           | https://www.unifoundry.com/unifont/index.html
           | 
           | Perhaps I've been using computers for too long but I actually
           | like the non anti-aliased "sharp" and "pixely" look :-)
        
             | JoshTriplett wrote:
             | Pixelated can sometimes look okay on screens it was
             | designed for. But I think the pixelated look _improves_
             | with hinting that helps snap it to stroke widths, rather
             | than randomly jumping between 1 and 2 pixels depending on
             | how it happened to line up with the pixel grid.
             | 
             | This is what it looks like on my screen:
             | https://imgur.com/a/YeAdiXC
             | 
             | A good pixel font would be a _vast improvement_ over this,
             | though I 'd still prefer something that scales well (and
             | respects the DPI of my screen, and isn't too small compared
             | to the menu font...).
        
               | ruevs wrote:
               | Oh! This is very bad! It should not look like this.
               | 
               | I've tried Firefox, Chrome and Edge on Windows; Firefox
               | and Chrome an Android phone and tablet and it renders
               | correctly - like the desktop version.
               | 
               | What browser are you using? On what OS? Perhaps the web
               | page is zoomed in/out in the browser? Scaling options in
               | the browser? HiDPI screen with scaling?
               | 
               | Would you be willing to open an issue on GitHub with the
               | details? Or just post them here.
        
               | phkahler wrote:
               | Even the desktop version sometimes. If I open on one
               | monitor and move to another with different scale factor.
               | It seems Windows lies about window resolution.
        
         | phkahler wrote:
         | It uses GNU unifont, which is a bitmap font. There could be a
         | bug causing the text to get stretched a little - we had that on
         | Windows prior to this release.
        
       | mandarwagh wrote:
       | Crazy
        
       | mclau153 wrote:
       | onShape does this already
        
         | ruevs wrote:
         | But does it run etirely locally in the browser after
         | downloading a total of 2993991 bytes (less than 3 megabytes) of
         | code? ;-)
        
           | phkahler wrote:
           | Local storage too. We don't want your data.
           | 
           | That 3MB also includes gnu unifont, the builtin vector font,
           | and the 3js viewer for when you export models to html (viewer
           | gets bundled in the file)
        
       | contingencies wrote:
       | Ahh, but can it do a clean self-reversing diamond thread
       | including the reversing portion?
       | 
       | See https://news.ycombinator.com/item?id=47580583
        
         | ruevs wrote:
         | Had to Google this one :-)
         | 
         | Since SolveSpace has a helix tool that can "extrude" any sketch
         | along a helix it should be doable.
        
           | contingencies wrote:
           | Perhaps if the author makes a demo it would be a good
           | showcase for how much better it is than the other open source
           | tools!
        
       | ecto wrote:
       | Here's my take on CAD in the browser! https://vcad.io
       | 
       | I implemented a full kernel in rust and compile it to wasm
       | https://github.com/ecto/vcad
        
         | latand6 wrote:
         | So I can ask an LLM to write rust code to generate CAD
         | designs???
        
         | phkahler wrote:
         | Does that handle NURBS? It says STEP import, but not export?
        
         | marshray wrote:
         | > Could not locate file: "https://huggingface.co/campedersen/ca
         | d0-mini/resolve/main/on..."
        
       | GorbachevyChase wrote:
       | I've wondered how feasible it would be to start building browser-
       | based CAD/design products to replace our expensive and poorly
       | supported paid plugins and niche products. Seems promising!
        
       | henrebotha wrote:
       | So stoked to see the movement on this project. Once lofts are
       | possible, it'll be so over for FreeCAD
        
         | jLaForest wrote:
         | Chambers aren't available so I wouldn't hold you breath waiting
         | for lofts
        
         | 4gotunameagain wrote:
         | Just curious, why are you so excited for the demise of FreeCAD
         | ?
         | 
         | Has worked quite okay for me thus far for semi professional &
         | hobby projects
        
       | Jaco07 wrote:
       | I've been relying on FreeCAD more frequently, though SolveSpace
       | has remained an excellent lightweight option for designing parts
       | for laser cutting through services like SendCutSend and OSHCut.
       | It is impressive to see that they have now made it work directly
       | in the browser.
        
       | somat wrote:
       | I love solvespace, it is hard to describe but despite it's
       | limitations and problems (and there are many) it feels joyous to
       | use if that makes sense. Something about it's simple and
       | straightforward interface just makes it fun. To the point that my
       | biggest gripe is the modal dialogs that pop when a constraint is
       | deleted or it's conditions cannot be met. It is quite awkward
       | compared to the rest of the workflow.
       | 
       | Anyhow, salutes to the author of this web port, very slick.
        
       ___________________________________________________________________
       (page generated 2026-03-31 23:00 UTC)