A browser-based laboratory where you can see, feel, and record the laws of motion — from pure vacuum to honey-thick viscous fluids.
Drop a ball from the top of a 20-metre building. At the exact same instant, throw another ball straight up from the ground. They will always meet — and the time it takes has nothing to do with gravity.
That single counterintuitive fact is the heartbeat of this app. The Free Fall Physics Lab is a fully interactive simulation that lets you explore not just that one result, but five distinct physical scenarios — from perfect vacuum to falling through honey — all running live in your browser with real equations, real numbers, and a data log you can export and graph.
The baseline experiment. No air, no friction — just gravity. A red ball drops from the top of a 20 m building. A teal ball is thrown upward from the ground. They collide somewhere in the middle.
The slider controls give you throw speed (5–30 m/s) and gravity g (1–30 m/s²). Drag gravity all the way to Jupiter levels. Drag it down to the Moon. The collision time doesn't move.
Reality has drag. Two new sliders appear — drag coefficient k and ball mass m. The app numerically integrates the equations of motion at every millisecond.
Watch the collision point slide downward as you increase drag. The ghost dashed lines show you where the vacuum collision would have been, so you can see the shift directly.
Six planets. Six gravity values. One big surprise.
Click any planet and the simulation immediately re-runs under that world's gravity. On the Moon the balls drift lazily and collide high up near the top. On Jupiter they snap together near the ground in a fraction of a second.
This mode runs two simulations simultaneously: ghost balls (dashed outlines) show the vacuum trajectory, and solid balls show what drag does to the same scenario.
You control drag coefficient k and ball mass m. In vacuum, mass is completely irrelevant — the ghost balls always meet at the exact same point no matter what you set. But once drag is in play, a lighter ball deviates further from the ghost trajectory than a heavy one.
The graph panel is especially powerful here. Plot v(t) and you'll see the velocity curves of ghost vs. solid diverge — the solid balls' speed approaches a flat terminal-velocity plateau while the ghost balls keep accelerating linearly.
This is the most immersive mode. The simulation column fills with a tinted overlay representing your chosen fluid. Ghost balls still show the vacuum reference. The physics switches to Stokes drag — the real fluid mechanics law for spheres moving through viscous media.
| Medium | State | Viscosity η (Pa·s) | Density (kg/m³) |
|---|---|---|---|
| 💨 Air | Gas | 0.000018 | 1.2 |
| 🫧 CO₂ | Gas | 0.0000148 | 1.84 |
| ⚗ SF₆ | Heavy gas | 0.0000157 | 6.07 |
| 💧 Water | Liquid | 0.001 | 1000 |
| 🫒 Olive Oil | Liquid | 0.081 | 900 |
| 🥥 Coconut Oil | Liquid | 0.050 | 924 |
| 🌿 Castor Oil | Liquid | 0.985 | 961 |
| 🧪 Glycerin | Liquid | 1.49 | 1261 |
| 🍯 Honey | Liquid | 10.0 | 1400 |
Two extra sliders: ball radius r (0.5–10 cm) and ball density ρ (100–8000 kg/m³). These let you explore buoyancy directly — set ball density below the fluid density and the app warns you and shows the ball floating upward.
No installation. No account. Open the HTML file in any browser and start experimenting.
Use the dropdown at the top of the screen to choose one of the five modes — Vacuum, Atmosphere, Planetary, Galileo's Challenge, or Viscous Media. The control panel on the left updates immediately to show relevant sliders.
Every slider updates the readout next to it in real time. In Vacuum: set throw speed and gravity. In Atmosphere: adjust drag coefficient k and ball mass m. In Fluid mode: pick a medium from the grid, then set ball radius and density.
Press ▶ Launch. The live overlay in the simulation shows time, height, and velocity for both balls every frame. Use the speed buttons (¼×, 1×, 2×, 4×) to slow down for viscous fluids or fast-forward to compare scenarios quickly.
Check the "Show velocity vectors" box in the controls panel. Live arrows appear directly on each ball during the animation — the red ball's arrow points down and grows as it falls; the teal ball's arrow starts pointing up, shrinks, reverses, and then grows downward.
After each run the graph panel (bottom of screen) plots the full trajectory. Switch between Height h(t) and Velocity v(t) tabs. In Galileo and Fluid modes, ghost curves appear alongside solid curves so you can directly compare vacuum vs. drag-affected trajectories.
The data log records every run with a timestamped row for every 0.1 seconds of physics time — height and velocity for both balls simultaneously. Run the same scenario across all six planets or all five modes, then hit ⬇ Export CSV and take the data into Excel or Python to plot, compare, and verify the physics yourself.
The data log at the bottom right of the screen captures both height and velocity for both balls together — not one or the other. A run header shows you the exact parameters used, then every 0.1 s of physics time produces one row.
| Run | Mode | t (s) | h_drop (m) | h_throw (m) | v_drop (m/s) | v_throw (m/s) |
|---|---|---|---|---|---|---|
| ▶ Run 1 — vacuum | g=9.80 u=14.0 | ||||||
| 1 | vacu | 0.00 | 20.000 | 0.000 | 0.000 | 14.000 |
| 1 | vacu | 0.10 | 19.951 | 1.351 | 0.980 | 13.020 |
| 1 | vacu | 0.20 | 19.804 | 2.604 | 1.960 | 12.040 |
| 1 | vacu | … | … | … | … | … |
| 1 | vacu | 1.43 ★ | 9.994 | 9.994 | 14.014 | 0.006 |
| ▶ Run 2 — fluid · Castor Oil | g=9.80 u=14.0 | ||||||
| 2 | flui | 0.00 | 20.000 | 0.000 | 0.000 | 14.000 |
| 2 | flui | 0.10 | 19.999 | 0.088 | 0.088 | 0.881 |
| ★ = collision row | both heights match | scroll to see all rows | ||||||
The ★ collision row is always captured — even if the collision doesn't fall exactly on a 0.1 s boundary, the exact moment is recorded and highlighted in amber. Hit ⬇ Export CSV and the entire time series for every run downloads as a single file ready for graphing.
Every completed run draws its trajectory on a canvas graph below the simulation. Two tab buttons switch between the height and velocity views.
In Galileo and Fluid modes the graph shows both the vacuum ghost curves (dashed) and the drag curves (solid) simultaneously — so you can directly measure how far the viscosity shifts the collision point on the time axis.