There oughta be a Lego marble run

14 August 2026

My son loves marble runs, but as he became more interested in Lego than the bigger Duplo bricks, I needed a marble run for Lego. So I printed one. This is a rather simple project, but I stumbled onto an interesting physics detail that I wanted to discuss.

Thumbnail of the youtube video: Several colorful marble run tracks on a green Lego baseplate. Some pieces form a bridge across another track and a shiny ball bearing is rolling across it.
Click the image to see the video on youtube.com.

Most of you probably just want to watch the video, but if you want to dive into the physics with a proper mathematical description, the blog article is just right for you.

First, let’s get the housekeeping out of the way. If you want to print the marble run, you can get it from any of the following sites:

Also, since I generate the marble tracks using OpenSCAD, you can just download the scad file. All files are shared under the Creative Commons Attribution licence (CC-BY 4.0).

Use 14mm ball bearings as marbles and print the parts you like. You should not need to print supports, and layer height or material should not matter as long as you don’t go too crazy. That’s it.

And now for the physics…

Photo of a marble run assembled from several 3D printed track pieces. They are build on a green Lego base plate with several flat Lego bricks as support. The 3D printed tracks have many different bright colors and form a complicated path with bridges. In the photo there are currently several marbles on the tracks, which are actually shiny metal ball bearings.
A marble run made up of several 3D printed tracks on an original Lego baseplate. The marbles are actually metal ball bearings.

Energies: potential, kinetic, rotational and translational

So, why am I even talking about the physics of a simple marble run? Well, it is just an oddity I stumbled upon while designing the tracks.

Normally, you would design some kind of ramp, place the marble at the top and let it go. At the beginning, at a height hh, the marble with mass mm has the potential energy Epot=mghE_\text{pot} = m g h (with gravitational acceleration gg) and when you let go, potential energy is converted into kinetic energy Ekin=12mv2E_\text{kin} = \frac{1}{2}\,m v^2. If the marble rolls down the entire slope across the height hh, the entire energy becomes kinetic energy with velocity vv:

Epot=Ekinmgh=12mv2v=2gh\begin{align} E_\text{pot} &= E_\text{kin} \\ \Rightarrow mgh &= \frac{1}{2}\,m v^2\\ \Rightarrow v &= \sqrt{2gh} \end{align}

That’s what you might have learned in school, right? Well, depending on how advanced your physics course was, you might also have learned that this is not correct for a solid object. It is only correct for a point mass, a theoretical construct where all mass of the object sits in a single point. If the object has an actual size (like any real object), kinetic energy does not only come from the speed of the object’s center of mass, but also from its rotation. The famous 12mv2\frac{1}{2}\,m v^2 is actually only the translational kinetic energy EtE_\text{t}, but there is also rotational kinetic energy Er=12Iω2E_\text{r} = \frac{1}{2}\,I \omega^2:

Ekin=Et+Er=12mv2+12Iω2\begin{align} E_\text{kin} &= E_\text{t} + E_\text{r}\\ &= \frac{1}{2}\,m v^2 + \frac{1}{2}\,I \omega^2 \end{align}

These formulas look very similar in form, but rotational energy depends on the rotational counterparts: Velocity becomes angular velocity ω\omega (in radians per second) and mass becomes the moment of inertia II. Resisting the urge to go on a long tangent about the moment of inertia, we can just note that for a solid sphere (like a marble) with radius RR, the moment of inertia is

I=25mR2I = \frac{2}{5}\,m R^2

Taking into account that the speed of the marble is v=Rωv = R \omega, we can express the rotational energy in terms of radius and velocity, just like the translational energy:

Er=12Iω2=15mv2E_\text{r} = \frac{1}{2}\,I \omega^2 = \frac{1}{5}\,m v^2

Which leads to a fixed ratio of translational and rotational energy:

EtEr=52\frac{E_\text{t}}{E_\text{r}} = \frac{5}{2}

In other words: Even for a marble on a regular slope, a part of the energy goes into the rotation, leaving less energy “for the speed”.

Two radii

But I did not want to print a slope. I planned for slopes that would work across a third of a Lego brick’s height (the flat Lego bricks), so I would need a rather gentle slope, which is tricky to print. So, instead I decided to design rails (or rather just a gap) that widen along the track. As the rail distance ww increases, the marble sinks deeper between the rails, its center of mass sinks deeper and once again, it accelerates as its potential energy is converted into kinetic energy. Just like a marble on a sloped track, right?

Screenshot of a track piece in OpenSCAD. The image shows coordinate axes and markers for scale, but the main feature of the image is the track piece itself. It has the shape of a 4 by 2 Lego brick, but the top is flat with a widening gap in which the marble can run. Below the gap in the top layer is another layer with a smaller gap, which is the track on which the marble runs once the upper track has widened enough for the marble to reach the lower one.
The top of this 4 by 2 brick is flat, but the marble's center of mass will sink into the widening gap at the top. You can also see a layer below with a smaller gap. When the top gap has widened enough, the marble will sit on the lower track and continue there.

Not quite. There is a small difference. Er=12Iω2E_\text{r} = \frac{1}{2}\,I \omega^2 is universal. That’s still correct. And so is I=25mR2I = \frac{2}{5}\,m R^2 because we are still looking at a solid sphere. But v=Rωv = R \omega does not apply!

As the marble sinks between the tracks, it rolls about a smaller effective radius rr. The marble touches the two rails at ±w/2\pm w/2. Both contact points lie on a sphere with the marble’s radius RR, so the distance from the marble’s spin axis (through its center) to the contacts is not RR but

r=R2(w2)2r = \sqrt{R^2 - \left(\frac{w}{2}\right)^2}
Schematic of the marbles position on the rails. The left half of the image shows a view along the rails where it is clearly visible how the marble sits between the rails. The right half shows a view from the side where it is easier to see how the marble is rolling at an effectively smaller radius.
Left: As the marble sits between the tracks, it rolls with a smaller effective radius. Right: Viewing from the side, one can see that the smaller radius corresponds to a slower speed at the same angular velocity. The distance per rotation is smaller as indicated by the blue dots on the track.

So, our marble still has the same velocity vv, we still have the same translational energy. And at the same angular velocity ω\omega, we still have the same rotational energy. But the link between vv and ω\omega has changed from v=Rωv = R\omega to v=rωv = r\omega, resulting in a different ratio of the two forms of kinetic energy:

EtEr=52r2R2\frac{E_\text{t}}{E_\text{r}} = \frac{5}{2}\frac{r^2}{R^2}

The ratio is tuned by the rail distance ww. If ww is zero, we get r=Rr=R and are back to the behavior of a marble running on a flat surface. But what happens if w2Rw \to 2R?

Slow tracks

As the rail distance becomes larger and larger, the effective radius rr becomes smaller and smaller. In terms of energy, most energy now goes into rotational energy. Visually, the marble only moves a small distance per rotation, so it has to spin really fast to achieve the same velocity as before.

We can use this to create slow tracks. If we support the marble with different rail distances, such that its center of mass remains at the same height (so, wider rails need to be higher to support the marble), we still have the same total energy - the energy that was potential energy when we let go of the marble at the top of our marble run. But with different rail distances, the same energy is distributed across translational and rotational energy differently, leading to different velocities.

If we assume no slippage and no friction, the total energy remains the same. So, we could have a fast-spinning marble that barely moves forward on a wide rail distance, and then have it suddenly speed up when moving onto close rails where it is almost rolling on a surface.

Plot of the velocity as a function of the rail distance. It is a curve that starts parallel to the x axis and then slowly descents until it rather quickly drops to zero when the rail distance approaches the width of the marble of 14mm.
Marble velocity as a function of rail distance after a drop of 10mm.

Friction ruining the day

At the limit w2Rw \to 2R, the marble no longer moves, but rotates in position. Of course, at that point it is clear that we will not see that in reality. The problem is of course friction. Our intuition already expects that the marble will just get stuck between the rails. And the reason is again a geometrical one. When the marble is rolling on the top of a surface, it experiences rolling resistance, which is proportional to the normal force acting on the marble. When it is more or less stuck between the rails, not only can it be disputed if this is still rolling resistance or rather sliding friction (which is a stronger opposing force), but also the surface now has to apply a much stronger normal force to counter gravity as it has to do so at an angle. Friction becomes really strong and our marble comes to a halt.

So, yeah, do not expect too much from those slow tracks. I did not widen the tracks enough to get more than a subtle effect, because otherwise we would lose our precious kinetic energy to friction.

The slowdown during the wider rail distance on the yellow track is subtle, but noticable.

Hope you enjoyed the little physics lesson - or just the marble run. See you for the next project.

  1. My favorite. Well, have not heard anything bad about printables.com. Please don’t tell me about it. 

  2. The old big one. If you want to learn how to lose being the dominant platform, have a look at thingiverse. Still plenty of reach. 

  3. How I hate myself for including them. I bought a Bambulab printer and wish I had not. No, the machine is fine (if you ignore that I got one of the first that do not spontaneously burn and die), but that company goes against everything I believe in. If you follow this blog, you certainly know that I love open source, open platforms and open APIs. Since I got the printer, I could witness how Bambulab closes down their APIs, sues (or threatens to sue?) open source developers, violates open source licenses and does everything they can to build a walled garden. Oh, and that platform is full of AI slop and stolen models that users upload because of the incentive of free filament.