© 2020 Drivetrain Hub LLC

Geometry / Spur Gears

Authors: Tugan Eritenel

Description: Geometry of spur gears, given constraints on ratio, center distance, and clearances.


This chapter is on designing the geometry of spur gear pairs. Here, the module and the center distance is specified. The gear pair is designed to achieve a desired gear ratio, while the gear geometry is within limits of certain criteria.

Involute function, pressure angle, and tooth thickness functions.

In [2]:
def inv(a):
    return math.tan(a) - a

def alpha_at_given_d(d,d_b):
    return math.acos(d_b/d)

def thickness_at_given_d(d,d_p,d_b,alpha,m,x):
    S_p = math.pi/2*m + 2*m*x*math.tan(alpha)
    alpha_d = alpha_at_given_d(d,d_b)
    S = d*(S_p/d_p+inv(alpha)-inv(alpha_d))
    return S

Definitions and Gear Parameters

The table below shows the definitions of basic gear geometry paramaters, and equations needed to calculate them.

Involute function$\rm{inv}\left({\theta}\right) = \tan\theta - \theta $rad
Number of gear teeth$z$None
Normal module$m$mm
Generating pressure angle$\alpha$deg
Profile shift$x$$m$
Addendum modification$y$$m$
Pitch diameter$d_p = mz$mm
Base diameter$d_b = d_p \cos \alpha$mm
Tip diameter$d_t= d_p + 2m\left(1+x-y\right)$mm
Root diameter$d_r= d_p + 2m\left(-1.25+x\right)$mm
Base pitch$B_p= m\pi\cos\alpha$mm

In a gear pair, parameters that belong to the first gear are indicated with subscript 1, and parameters that belong to the second gear are indicated with subscript 2. The gear with the lower number of teeth is referred to as the "pinion", and the gear with the higher number of teeth is referred to as the "wheel". The term "working" refers to the parameters when the gear pair is operating at a given center distance.

Standard center distance$a_0 = m\frac{z_1 + z_2}{2}$mm
Operating center distance$a$mm
Working pressure angle$\alpha_w = \cos^{-1}\left( \frac{a_0}{a} \cos\alpha \right) $mm
Working pitch diameter$d_w = \frac{d_b}{\cos\alpha_w}$mm
Contact ratio $R = \frac{\frac{\sqrt{d^2_{t,1} -d^2_{r,1}} + \sqrt{d^2_{t,2} -d^2_{r,2}}}{4} -a\sin\alpha_w} {B_p}$ None

Parameters and expressions on tooth thickness, backlash, and tip-to-root clearances are given in table below.

Circular tooth thickness at pitch diameter $S_p = \frac{m}{2}\pi + 2mx\tan\alpha$mm
Pressure angle at a given diameter, $d$ $\alpha(d) = \cos^{-1}\left(\frac{d_b}{d} \right)$mm
Circular tooth thickness at a given diameter, $d$ $S(d) = d\left( \frac{S_p}{d_p} + \rm{inv}\alpha - \rm{inv}\alpha_d \right)$mm
Circular backlash $B_c = \frac{B_p}{\cos\alpha_w} - S\left(d_{w,1}\right) - S\left(d_{w,2}\right)$mm
Linear backlash $B_l = B_c \cos\alpha_w$mm
Pinion tip to gear root clearance $c_1 =a - a_0 - m\left(x_1+x_2 - y_1 \right)$mm
Gear tip to pinion root clearance $c_2 =a - a_0 - m\left(x_1+x_2 - y_2 \right)$mm

Profile Shift

Hob can be pushed or pulled while gears are manufactured. This affects the shape of the gear tooth generated. A positive profile shift indicates that the hob is pulled away from the gear center.

Advantages of Positive Profile Shift

  • Reduces or eliminates undercut
  • Reduces root stress by increasing tooth thickness
  • Improves radius of curvature at contact

Disadvantages of Positive Profile Shift

  • Reduces tooth tip thickness, can lead to peaking
  • Can reduce contact ratio


Involute profile is not defined below the base circe. Undercut occurs when tool tip corner does not cut the transition point between the root fillet and the involute profile. Undercut which increases stress concentration. Undercut is generally to be avoided or reduced if possible. Gears with low number of teeth are more prone to undercut.

The minimum number of gear teeth without undercut is given by,

$$ z_{min} = \frac{2}{\sin^2\alpha}$$

where $\alpha$ is the pressure angle of the hob. Given the number of teeth, the minimum profile shift required to avoid undercut is given by,

$$x=\frac{z_{min} - z}{z_{min}}$$

Addendum Modification

To avoid peaking and/or tip-to-root interference, tooth addendum is reduced. No actual tooth are cut off after the gears have been made, but the blank diameter itself is reduced before manufacturing.


Peaking occurs when the gear tooth tip thickness reaches zero due to positive profile shift. Generally it is recommended that the tip thickness is greater than $0.25 m$, where $m$ is the normal module.

Tip-to-Root Interference

Tip-to-root interference occurs when the gear teeth are too long and interfere with the root of the mating gear due to positive profile shift. Generally, it is recommended that tip-to-root clearance is equal to or greater than $0.25m$.

Geometric Design Process

The design process is explained by means of an example.
Requirements are as follows:

In [4]:
alpha=df_requirements["Common"]["Standard pressure angle"]/180*math.pi
i_required = df_requirements["Common"]["Ratio"]
i_tol = df_requirements["Common"]["Ratio tolerance"]
m = df_requirements["Common"]["Module"]
a = df_requirements["Common"]["Working center distance"]
B_req = df_requirements["Common"]["Backlash"]

Choosing Number of Teeth

In this notebook, the aim of design is to minimize the size of the gears. To that end, the lowest number of teeth possible within limits should be chosen. For a first design iteration, the minimum acceptable number of teeth is chosen to avoid undercut without profile shift, given by $z_{min} = \frac{2}{\sin^2\alpha}$. The number of teeth can be reduced by one or two in the following design iterations, if profile shift eliminates undercut.

The selected number of teeth should also satisfy the required gear ratio within a given tolerance. Since gear ratio is defined by $i=\frac{z_2}{z_1}$, rearranging gives $z_2=i z_1$. Number of teeth on the wheel is found using the minimum number of teeth for the pinion. If the actual gear ratio is not within tolerance, the number of teeth on the pinion is incremented, and the process is repeated until the actual gear ratio is within tolerance. The following code automates this process.

In [5]:
z_1 = 2/(math.sin(alpha)**2)
z_1 = int(round(z_1))
z_2 = int(round(z_1*i_required))
i = z_2/z_1
max_iter = 400
while abs(i - i_required)>i_tol:
    z_2 = int(round(z_1*i_required))
    i = z_2/z_1
    if iteration_count>max_iter:
        print("ERROR: Iteration count of " +str(200) + " exceeded, increase ratio tolerance.")

display.display(HTML('<div class="alert alert-block alert-info">Pinion number of teeth, $z_1$ = ' + str(z_1) + '</div>'))
display.display(HTML('<div class="alert alert-block alert-info">Wheel number of teeth, $z_2$ = ' + str(z_2) + '</div>'))
display.display(HTML('<div class="alert alert-block alert-info">Actual gear ratio, $i$ = ' + str(round(i,3)) + '</div>'))
display.display(HTML('<div class="alert alert-block alert-info">Required gear ratio, $i_{\\rm{required}}$ = ' + str(round(i_required,3)) + '</div>'))
Pinion number of teeth, $z_1$ = 47
Wheel number of teeth, $z_2$ = 50
Actual gear ratio, $i$ = 1.064
Required gear ratio, $i_{\rm{required}}$ = 1.064

Calculate Profile Shift

Once the number of teeth is known, the the standard center distance is calculated by $a = m\frac{z_1+z_2}{2}$
Since the operating center distance is specified as a requirement, the working pressure angle is found using $\alpha_w = \cos^{-1}\left(\frac{a_0}{a\cos\alpha}\right)$

In [6]:
a_0 = m*(z_1+z_2)/2
alpha_w = math.acos(a_0/a*math.cos(alpha))
display.display(HTML('<div class="alert alert-block alert-info">Standard center distance, $a_0$ = ' + str(a_0) + '</div>'))
display.display(HTML('<div class="alert alert-block alert-info"> Working pressure angle, $\\alpha_w$ =' + str(round(alpha_w*180/math.pi,3)) + ' deg </div>'))
Standard center distance, $a_0$ = 121.25
Working pressure angle, $\alpha_w$ =20.946 deg

Usually, the standard center distance does not exactly the required center distance, which may be dictated by other design restrictions such as packaging or manufacturing. Generally the gear tooth numbers are chosen such that the operating center distance is greater than the standard center distance; this is called extended center distance. If the gears operate at extended center distance without profile shift, undesirable large backash will result and the contact ratio may be too low. For these reasons, profile shift is applied such that the only source of backlash is the thinning of the hob. Whether or not the centers are extended, any undercut on the pinion may be removed by moving the profile shift to the gear.
The total profile shift needed is found by, $$x_1 + x_2 = \frac{\left(z_1+z_2\right) \left(\rm{inv}\alpha_w -\rm{inv}\alpha\right)}{2\tan\alpha}$$

In [7]:
x_total = (z_1 + z_2)*(inv(alpha_w) - inv(alpha))/2/math.tan(alpha) 

The equation above results in gears with zero backlash excluding what is built into the hob. If a specified curcular backlash is required, the total profile shift can be updated by, $$x_{mod} = -\frac{B_{c,req}}{2 m \tan\alpha} \frac{\cos\alpha_w}{\cos\alpha}$$ which modifies the total profile shift by, $$ \left(x_1 + x_2 \right)_{\rm{new}}= x_1+x_2 + x_{mod}$$

In [8]:
x_mod = -B_req/(2*m*math.tan(alpha))*math.cos(alpha_w)/math.cos(alpha)
display.display(HTML('<div class="alert alert-block alert-info"> Reduction in profile shift to obtain the required backlash, $x_{mod}$ = ' + str(round(x_mod,3)) + '</div>'))
Reduction in profile shift to obtain the required backlash, $x_{mod}$ = -0.055

Distributing the total profile shift

The total profile shift needed for the gears to operate at the required center distance can be distributed in any way between the pinion and the gear. However, a few empirical equations help improve the design.
For reduced sliding velocity, $$x_1 \approx \frac{x_1+x_2}{i+1}+\frac{i-1}{i+1+0.4 z_2}$$ For equal root stress, $$x_1 \approx \frac{x_1+x_2}{i+1}+\frac{1}{2}\left(\frac{i-1}{i+1}\right)$$ For equal contact pressure, $$x_1 \approx \frac{x_1+x_2}{i+1}\frac{z_1+12}{z_1+2} + \frac{8}{z_1+2}$$ Using the formula for equal root stress,

In [9]:
x_total = x_total + x_mod
display.display(HTML('<div class="alert alert-block alert-info"> Total profile shift, $x_1 + x_2$ = ' + str(round(x_total,3)) + '</div>'))
x_1 = x_total / (i + 1) + 0.5 * (i - 1) / (i + 1)
x_2 = x_total - x_1

display.display(HTML('<div class="alert alert-block alert-info"> Pinion profile shift, $x_1$ = ' + str(round(x_1,3)) + '</div>'))
display.display(HTML('<div class="alert alert-block alert-info"> Wheel profile shift, $x_2$ = ' + str(round(x_2,3)) + '</div>'))
Total profile shift, $x_1 + x_2$ = 0.252
Pinion profile shift, $x_1$ = 0.138
Wheel profile shift, $x_2$ = 0.115

Calculate Addendum Modification

The tip-to-root clearance is found using the equation, for the pinion and gear respectively,

$$c_1 =a - a_0 - m\left(x_1+x_2 - y_1 \right)$$$$c_2 =a - a_0 - m\left(x_1+x_2 - y_2\right)$$

Find required addendum modification, if needed, so that tip-to-root clearance is at least $0.25m$, using,

In [10]:
c_req = 0.25
y = c_req + x_total - (a - a_0) / m
y_1 = y
y_2 = y

if y > 0:
    display.display(HTML('<div class="alert alert-block alert-info">Addendum modification, y = ' + str(round(y,3)) + ' is applied<br>This is a reduction in addendum</div>'))
elif y <= 0:
    display.display(HTML('<div class="alert alert-block alert-info">Addendum modification, y = ' + str(round(y,3)) + ' is applied<br>This is an increase in addendum</div>'))    
Addendum modification, y = 0.202 is applied
This is a reduction in addendum


This section lists parameters that needs to be checked to make sure the outputs of the design are within limits. If a parameter does not satisfy the requirements, then the design needs to be updated.

CHECK: Undercut in pinion and wheel

After profile shift is applied, check for undercut pinion and wheel. Undercut occurs if,

$$x_1 < \frac{z_{min}-z_1}{z_{min}} \quad \text{where } z_{min} = \frac{2}{\sin^2\alpha}$$
Pinion is safe for undercut
Wheel is safe for undercut

CHECK: Top Land (Tooth Tip Thickness)

The equation for pinion tooth tip thickness is given by,

$$ S_{t,1} = d_{t,1}\left( \frac{S_p}{d_p} + \rm{inv}\alpha - \rm{inv}\alpha_{t,1} \right) $$

where, tooth thickness at pitch circle is given by,

$$S_p = \frac{m}{2}\pi + 2mx\tan\alpha$$

where, pressure angle at tooth tip is given by,

$$\alpha_{t,1} = \cos^{-1}\left(\frac{d_b}{d_{t,1}} \right)$$

The equations for gear tooth tip thickness are identical with appropriate subscripts representing parameters for the gear.

Check that pinion and wheel tooth tip thickness is at least $0.25m$.

Pinion tip thickness is good, $S_{t,1}$ = 0.935m
Wheel tip thickness is good, $S_{t,2}$ = 0.942m

CHECK: Backlash

Backlash required can be found in IS:4460. For low speed gears where pitch line velocity is below 8 m/s, maximum backlash for $m=2$ mm is 0.13 mm, for $m=8$ mm, is 0.4mm. For higher speed gears where pitch line velocity is above 8 m/s, maximum backlash for $m=2$ mm is 0.18 mm, for $m=8$ mm, is unchanged at 0.4mm.

Check backlash below. Note that the backlash calculated here should match the specified backlash $B_{req}$.

Backlash, $B_c$ = 0.1 mm

CHECK: Contact Ratio

Contact ratio should be above 1.1 to ensure contact is maintained at all times. Contact ratio is found from tip and root diameters as given by the equation

$$R = \frac{\frac{\sqrt{d^2_{t,1} -d^2_{r,1}} + \sqrt{d^2_{t,2} -d^2_{r,2}}}{4} -a\sin\alpha_w} {B_p}$$
Contact ratio is good, CR = 1.338

CHECK: Tip-to-Root Clearance

Calculate tip-to-root clearance. Note that this should match the required clearance, since addendum modification is calculated to maintain $0.25m$ clearance.

In [15]:
c_1 = a - a_0 - m * (x_1 + x_2 - y_1 )
c_2 = a - a_0 - m * (x_1 + x_2 - y_2 )

display.display(HTML('<div class="alert alert-block alert-info">Clearance, $c_1/m$ = ' + str(c_1/m) +'</div>'))
display.display(HTML('<div class="alert alert-block alert-info">Clearance, $c_2/m$ = ' + str(c_2/m) +'</div>'))
Clearance, $c_1/m$ = 0.25
Clearance, $c_2/m$ = 0.25

The following table summarizes the gear geometry as designed.


This notebook documents the procedure to find spur gear geometry based on design requirements. Inputs to the design are required gear ratio, center distance, standard pressure angle, backlash, and tip-to-root clearance. The outputs are tip, base, root diameters, contact ratio, profile shift, addendum modification, and tooth thickness.

Learn More

Continue reading the Drivetrain Hub | Notebook Series to learn more about the design and analysis of spur gears and other gear types.

Model Spur Gears

Accurately model, analyze, and print 3-dimensional spur gears with the Drivetrain Hub | Gears App, a modern drivetrain modeling environment 100% online at drivetrainhub.com.

Improve Notebook

Our gear geometry notebooks are publicly hosted in a GitHub repository, available for anyone to view and propose edits.


  1. G. M. Maitra, (1994), "Handbook of Gear Design", Tata McGraw-Hill
  2. M. Rameshkumar, G. Venkatesan and P. Sivakumar, (2010), "Finite Element Analysis of High Contact Ratio Gear", AGMA Technical Paper, 10FTM06