Open-source project
guillaumechereau/goxel avatar
guillaumechereau/goxel

Goxel: A GPL-3.0 Voxel Editor Built on C99 and GLFW

Goxel: Free and Open Source 3D Voxel Editor

3,199 stars273 forksC++GPL-3.0

At a glance

What is it?
Goxel is a free 3D voxel editor for Linux, BSD, Windows and macOS, with iOS and Android builds distributed through the app stores. It exports to obj, ply, png, Magica Voxel and Qubicle, and its source is GPL-3.0 with a commercial licence available on request.
Who is it for?
Adopt Goxel if you want a small GPL-3.0 voxel editor you can build from source with scons and install into /usr/local, or if you need a desktop tool whose exports open in MagicaVoxel and Qubicle pipelines. Do not adopt it if you need MSVC support, a documented scripting API, or a permissive licence for a closed-source product; the README points commercial users at the author instead.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 67 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

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

Editorial analysis

What Goxel is for, and who it is for

Goxel creates voxel graphics, which the README describes as 3D images formed of cubes. The unit of work is the voxel, not the polygon, so the editing model is closer to a 3D pixel editor than to a mesh modeller. The README states that it runs on Linux, BSD, Windows and macOS, and that iOS and Android builds are distributed through the App Store and Google Play. That combination is unusual: most voxel editors are either desktop-only or mobile-only, and Goxel ships both from one codebase.

The audience is narrow but real. If you are producing voxel art for a game, a render, or a 3D print preview, and you want to keep the source open and the file formats portable, Goxel targets you. The feature list in the README is specific about the editing model: 24-bit RGB colours, unlimited scene size, an unlimited undo buffer, layers, Marching Cube rendering, procedural rendering, and ray tracing. Export targets are obj, ply, png, Magica Voxel and Qubicle.

Two of those entries deserve attention. Unlimited scene size and unlimited undo are claims about memory behaviour rather than about a fixed grid, so the practical limit is the machine, not the format. And the export list is the interoperability story: Magica Voxel and Qubicle are the two formats most voxel pipelines consume, so Goxel positions itself as a tool that feeds other tools rather than as an island.

How the editor is put together: C99, scons and GLFW

The README states that the code is in C99 and uses some GNU extensions, and that because of this it does not compile with MSVC. That single sentence explains most of the build story. The build system is scons, driven through a Makefile with targets for debug, release, profile, analyze and format. On Windows the supported route is msys2 rather than Visual Studio, and the README points at a prebuilt mingw-w64-goxel package for people who would rather not build at all.

The windowing and input layer is GLFW, which is why libglfw3-dev appears in the Debian/Ubuntu dependency list. GTK 3 is also a dependency there, which suggests the desktop build pulls in a GTK-based file or settings surface alongside the GLFW window. The repository layout backs this up: there is an osx/ directory, a snap/ directory with a desktop file and an AppStream metainfo file, a data/ directory for icons, and an ext_src/ directory for bundled third-party sources. There is also a flake.nix at the top level, so a Nix build path exists in the tree even though the README does not document it.

The rendering side is described in the feature list rather than in the README prose. Marching Cube rendering, procedural rendering and ray tracing are listed as capabilities. The README does not explain how they are selected or configured, and there is no scripting or plugin interface mentioned anywhere in it. If you need to drive Goxel from a script, the README gives you nothing to work with.

Building Goxel from source on Linux

The README gives the Debian/Ubuntu dependency list and then a single build command. Install scons, pkg-config, libglfw3-dev and libgtk-3-dev through your package manager, then run the release target. The Makefile defines release as a scons invocation with mode=release and a parallel job count derived from nproc on Linux.

bash
sudo apt install scons pkg-config libglfw3-dev libgtk-3-dev
make release
./goxel

The first command installs the four packages the README names. The second builds the release binary. The third runs it from the repository root, which is what the run target in the Makefile does. If you want a debug build instead, the README says plain scons does that, and the Makefile exposes it as the default all target.

Installing system-wide is a separate step. The Makefile defines install with PREFIX defaulting to /usr/local, and it copies the binary to $(PREFIX)/bin/goxel, icons at seven sizes into the hicolor icon theme, a desktop entry, and an AppStream metainfo file. Running make install with a DESTDIR set is what the AppImage target does internally, so the install path is exercised by CI rather than being an afterthought.

bash
sudo make install

On Windows the README gives a different route: install msys2 mingw and the packages mingw-w64-x86_64-gcc, mingw-w64-x86_64-glfw, mingw-w64-x86_64-libtre-git, scons and make, then run make release. The libtre package is worth noting because it does not appear in the Linux dependency list, so the two platforms do not pull the same set of libraries.

Editing controls and the first thing to try

The README's usage section is short and entirely about mouse and keyboard bindings. Left click applies the selected tool operation. Middle click rotates the view. Right click pans. The left and right arrow keys also rotate, and the mouse wheel zooms. There is no mention of a command palette, a hotkey editor, or a preferences file, so the interaction model is fixed by the build you compiled.

A sensible first session is to start with the default scene, apply the selected tool with left click to place voxels, then rotate with middle click to check the result in three dimensions. Because the README lists layers as a feature, the layer panel is the next thing to look for, and the undo buffer is described as unlimited, so experimenting is cheap. When the model is worth keeping, the export list in the README is the menu to look for: obj, ply, png, Magica Voxel and Qubicle.

What the README does not cover is anything past that point. There is no description of how Marching Cube rendering is toggled, how procedural rendering is parameterised, or how ray tracing output is produced. Those are listed as features and left there. Plan on reading the source or the INTERNALS.md file in the repository root if you need to understand them, because the README will not get you there.

Where Goxel stops being the right tool

The MSVC limitation is the clearest boundary. The README states plainly that the C99 code with GNU extensions does not compile with MSVC. If your team's build infrastructure is Visual Studio, Goxel is not a drop-in dependency, and the supported Windows route is msys2 mingw instead. That is a real constraint for anyone hoping to embed the editor or its code in a Windows-native project.

The licence is the second boundary. Goxel is released under GPL-3.0, and the README says that if you want to use the code with a commercial project you should contact the author, who is willing to provide a version under a commercial licence. That is a dual-licensing arrangement, not a permissive one. Shipping Goxel inside a closed-source product means either complying with GPL-3.0 or negotiating separately. The contributor agreement reinforces this: contributions require signing a CLA, which the README says is mostly to allow the author to distribute the mobile branch under a non-GPL licence.

The third boundary is automation. Nothing in the README describes a scripting interface, a plugin API, a headless mode, or a command-line conversion tool. If your pipeline needs to convert a directory of models on a build server, Goxel as documented gives you no entry point. It is an interactive editor, and the README treats it as one.

Goxel compared with MagicaVoxel

MagicaVoxel is the obvious reference point, and the two differ in ways that matter more than the feature checklist. MagicaVoxel is distributed as a freeware binary; Goxel is distributed as GPL-3.0 source with a commercial licence available on request. If you need to read, modify or redistribute the editor itself, that difference decides the question before any feature comparison starts.

On platforms, Goxel covers Linux, BSD, Windows and macOS, plus iOS and Android through the app stores. That is a wider spread than a desktop-only binary, and it is the reason the CLA exists in the first place. On formats, Goxel exports to Magica Voxel and Qubicle files, which means it can hand work to those pipelines rather than replace them. The README does not claim to import those formats, only to export to them, so the direction of travel is one way as far as the documentation goes.

Where Goxel's README is thinner than you might expect is in the rendering features. Marching Cube rendering, procedural rendering and ray tracing are all listed, but none of them is explained. A reader deciding between the two tools on rendering quality will not get an answer from this README. The honest summary is that Goxel's documented advantage is its licence and its platform reach, not its feature depth.

Maintenance, releases and what a GPL-3.0 dependency costs you

The most recent release is v0.15.1 from 2024-07-28, following v0.15.0 earlier that month and v0.14.0 in February 2024. The repository is not archived, and the last push was on 2026-07-26. That is recent enough that the codebase is being touched, but the release cadence and the commit cadence are clearly not the same thing: nearly two years separate the newest release from the latest commit. If you depend on tagged releases rather than on master, plan for that gap.

Upgrade cost is dominated by the build rather than by an API. There is no documented plugin interface to break, so the compatibility surface is the file formats and the build. The Makefile's install target writes into $(PREFIX)/bin, the hicolor icon theme, /share/applications and /share/metainfo, and the uninstall target removes the binary and the icons but not the desktop file or the metainfo file. That asymmetry is visible in the Makefile and is worth knowing before you install into a system prefix you care about.

On licence, GPL-3.0 applies to the code. The README's offer of a commercial licence is a statement of the author's willingness, not a published price or terms, and the CLA is the mechanism that makes the dual arrangement possible. Whether your use triggers GPL obligations is a question for your own legal review; the documentation here only tells you what licence the project ships under and that an alternative can be requested.

Editorial conclusion

Adopt Goxel if you want a small GPL-3.0 voxel editor you can build from source with scons and install into /usr/local, or if you need a desktop tool whose exports open in MagicaVoxel and Qubicle pipelines. Do not adopt it if you need MSVC support, a documented scripting API, or a permissive licence for a closed-source product; the README points commercial users at the author instead. Before committing, run make release on your target platform and confirm the export formats you need are present in the build you produced, since the README lists formats but not per-format caveats.

Frequently asked questions

Is Goxel good?

The README lists a specific feature set: 24-bit RGB colours, unlimited scene size, an unlimited undo buffer, layers, Marching Cube rendering, procedural rendering, ray tracing, and export to obj, ply, png, Magica Voxel and Qubicle. It runs on Linux, BSD, Windows and macOS, with iOS and Android builds on the app stores. Whether that is good for you depends on whether you need those export formats and that platform spread, since the README documents no scripting interface.

What does voxel mean?

The Goxel README describes voxel graphics as 3D images formed of cubes, which is the unit the editor works with. The feature list builds on that: 24-bit RGB colours, unlimited scene size, layers, and export to obj, ply, png, Magica Voxel and Qubicle.

What is the best voxel software?

The README does not rank Goxel against other voxel editors, so it gives no basis for a best-of judgement. What it does state is that Goxel is released under GPL-3.0, runs on Linux, BSD, Windows and macOS with iOS and Android builds on the app stores, and exports to obj, ply, png, Magica Voxel and Qubicle.

Is MagicaVoxel free?

The Goxel README says nothing about MagicaVoxel's pricing. It does state that Goxel exports to the Magica Voxel format, alongside obj, ply, png and Qubicle, so the two tools can be used in the same pipeline even though the README does not document importing Magica Voxel files.

Official sources

  1. guillaumechereau/goxel on GitHub
  2. Issues
  3. License: GPL-3.0
  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/guillaumechereau-goxel.svg)](https://hysenlabs.com/projects/guillaumechereau-goxel)