Interactive tennis serve simulator

Serve Lab

Explore how contact height, speed, position, aim, air resistance and spin change a 100 mph first serve. The launch direction is solved to land exactly on your selected target.

IN · clears net
Net clearance
?

Gap between the bottom of the ball and the net at crossing. Positive clears; negative hits the net. This is not a serve-in percentage.

Landing point
?

The target you selected. Launch elevation and sideways aim are solved to reach it; the model does not simulate random serving error.

Box margin
?

Distance from the selected target to its nearest service-box boundary. Larger margin leaves more room for error, but does not quantify your consistency.

Flight time
?

Time from racket contact to first ground contact. Playback can continue through an illustrative rebound.

Launch angle
?

Calculated elevation needed to hit your target. A negative value means the ball leaves the racket downward.

Speed at bounce
?

Speed just before first ground contact, after any air resistance. It is not the rebound speed.

Trajectory · side elevation

Vertical scale enlarged for readability

model pathno-dragnetrebound estimate

0 m1 m2 m3 m netservice line

0 ms
contactnet · first bounceend of rebound

Placement · top view

Receiving backcourt shown at half depth · singles serve

receiving baseline server’s baseline

Live spin inspector

Ball rotation, spin axis and racket contact

server view · launch spin · 3D axis
dark arrowrear-face brush orange arrow · spin axiscyan ring · spin plane
Server view (racket side) · no spin selected.
Total spin0RPM0.0 rotations/sec
Combined spinFlat / no spinaxis inactive
Vertical component
0 rpm
Side component
0 rpm
Longitudinal component
0 rpm
Illustrative brushing directionNo brush selected

The arrow shows rear-face brushing implied by topspin and sidespin, not an exact contact patch. Clock positions are approximate. Longitudinal spin needs out-of-plane contact geometry; a 2D arrow cannot specify it.

Three transparent force layers

Geometry applies gravity. Air resistance adds quadratic drag. Spin adds 3D Magnus force from the selected RPM vector. The numerical solver adjusts both elevation and sideways aim to preserve your target. Assumptions: 57.7 g, 67 mm ball and air density 1.225 kg/m³.

Fdrag = ½ρCdAv²   ·   FMagnus = ½ρACLv²   ·   S = rω/v
Running checks…

What remains simplified

  • Fixed 3D spin vector within each flight segment; spin changes at bounce
  • CL = min(0.35, 0.60 × spin ratio) as a working approximation
  • No spin-dependent change to the separate drag setting
  • Rotating seam uses a smooth spherical dog-bone approximation; felt flecks are visual only
  • No wind, ball deformation or line-call tolerances

Bounce estimate: rigid thin-shell ball, restitution 0.75, friction coefficient 0.55. Friction opposes contact slip, capped by the normal impulse, and changes both speed and spin. These are illustrative parameters, not calibrated to a court surface. Rebound ends at the receiving baseline or second bounce. Vertical-axis sidespin alone does not give a sideways impact impulse.

Net clearance uses the bottom of the ball, including its 3.35 cm radius. Net height uses a labelled parabolic sag approximation from 0.914 m at centre to 1.07 m at the singles sidelines.

Court constants: 23.77 m baseline-to-baseline, 8.23 m singles width, 6.40 m net-to-service-line. Spin presets are illustrative, and all measurements are analytical estimates rather than coaching or officiating data.

A guided introduction

Explore one change at a time

How much room does a serve have?

Serve Lab began with a simple question: how do contact height and serve speed affect clearance over the net? The starting point was a first serve around 160 km/h—roughly 100 mph—and the surprisingly small margins involved in getting it into the service box.

It grew into an interactive way to explore serving position, targets, air resistance, three-dimensional spin and an illustrative bounce. Use it to understand relationships and compare scenarios.

You do not need to understand every control at once. Begin with height and speed, then add one layer at a time. Opening this guide does not change your current serve.