Squash Rules


Rules of Play

The basic rules of squash are outlined below – (taken from www.englandsquashandracketball.com & www.worldsquash.org).


1. Squash equipment

Squash is played between two players on a squash court each using a standard racket, and a ball approved by England Squash & Racketball.


2. Scoring

Matches are the best of 3 or 5 games, at the option of the competition organizer.

a. Server Only Scores: The player who scores 9 points first wins the game, except that on the score reaching 8-all for the first time, the receiver chooses, before the next service, to continue that game either to 9 (known as "Set 1") or to 10 (known as "Set 2"). In the latter case the player who scores 2 more points wins the game. The receiver must clearly indicate this choice to the Marker, Referee and the opponent.

b. PAR 11: Each game is point a rally scoring to 11. If the score in a game is tied at 10-10, a player must win by 2 clear points.

c. PAR 15: Each game is point a rally scoring to 15. If the score in a game is tied at 14-14, a player must win by 2 clear points.


3. How to win points

a. Server Only Scores: Only the server scores points. The server, on winning a rally, scores a point; the receiver, on winning a rally, becomes the server without a change of score.

b. PAR 11 & PAR 15: Points can be scored by either player. When a player fails to serve or to return the ball, in accordance with the rules, the opponent wins the point. When the Receiver wins a point, they become the Server and add one to their score.


4. Service

a. The right to serve is decided by the spin of a racket or coin. Thereafter the Server continues to serve until they lose the point; the opponent then becomes the Server.

b. At the beginning of each game and each hand, the Server has the choice of serving from either service box and shall thereafter alternate for as long as they score points and remains the Server.

c. The ball must be served direct on to the front wall between the service line and the out line, so that on its return, unless volleyed, its first bounce lands within the back quarter of the court opposite to the Server’s box.

d. A service is a fault: (i) If at the time of striking the ball the Server fails to have at least one foot in contact with the floor within the service box, and no part of that foot touching the line surrounding the service box (called a foot-fault).


5. Play

After a good service has been delivered, the players return the ball alternately until one or other fails to make a good return, or the ball otherwise ceases to be in play, in accordance with the rules.

NB: If any part of the ball touches the out line the ball is deemed out or if the ball hits the tin or the floor on its first bounce the ball is deemed down. Similarly, if the ball bounces on or before the short line from a service, the serve is deemed a fault.


6. A Good Return

A return is good if the ball, before it has bounced twice on the floor, is returned by the striker on to the front wall above the tin, without touching the floor or any part of the striker’s body or clothing, provided the ball is not hit twice, down or out.


7. Lets

A Let is an undecided stroke, and the service or rally in respect of which a Let is allowed, shall not count and the Server shall serve again from the same box.

(a) A let may be allowed:

(i) If the striker refrains from hitting the ball owing to a reasonable fear of injuring the opponent.

(ii) If the striker, on the way to playing the ball incurs sufficient interference to impede their access to the ball when the striker would have otherwise played a good shot.

(iii) If the Referee is asked to decide an appeal and is unable to do so.

(b) A Let shall be allowed:

(i) If the Receiver is not ready, and does not attempt to take the service.

(ii) If the ball breaks during play.

(iii) If an otherwise good return has been made, but the ball goes out on its first bounce.

(iv) If the ball in play touches the receiver or anything carried or worn by the receiver whilst on the way to the side wall or back wall in anticipation that the ball would have reached the front wall and hence been a good return.


8. How strokes (points) can be won

A player wins a stroke:

(a) If the server fails to make a good serve (See point 4 on the Service).

(b) If the opponent fails to make a good return of the ball in play.

(c) If the ball in play touches the opponent or anything carried or worn by the opponent whilst on the way to the front wall.

(d) If a player drops the racket, calls out or in any other way distracts the opponent, and the Referee considers that such occurrence has caused the opponent to lose the stroke.

(e) If the ball hits the ceiling or any object outside of the court.


9. Freedom to play the ball

After playing a ball, a player must make every effort to get out of the opponents way.

That is:

(i) A player must make every effort to give the opponent a fair view of the ball, so that it may be sighted adequately for the purpose of playing it.

(ii) A player must make every effort not to interfere with, or crowd, the opponent in the latter’s attempt to get to, or play, the ball.

(iii) A player must make every effort to allow the opponent, as far as the latter’s position permits, freedom to play the ball directly to the front wall, or to either side wall.


10. Warm-Up

Immediately preceding the start of play, a period not exceeding five minutes shall be allowed on court for the purpose of warming-up.

Back to Top uarrvar timeOut
function scrollToTop
if document.body.scrollTop!=0 document.documentElement.scrollTop!=0

else clearTimeouttimeOut
var snowStorm = functionwindow, document 

--- common properties ---

this.autoStart = true Whether the snow should start automatically or not.
this.excludeMobile = false Snow is likely to be bad news for mobile phones CPUs and batteries. Enable at your own risk.
this.flakesMax = 128 Limit total amount of snow made falling + sticking
this.flakesMaxActive = 64 Limit amount of snow falling at once less = lower CPU use
this.animationInterval = 33 Theoretical miliseconds per frame measurement. 20 = fast + smooth, but high CPU use. 50 = more conservative, but slower
this.useGPU = true Enable transform-based hardware acceleration, reduce CPU load.
this.className = null CSS class name for further customization on snow elements
this.excludeMobile = true Snow is likely to be bad news for mobile phones CPUs and batteries. By default, be nice.
this.flakeBottom = null Integer for Y axis snow limit, 0 or null for full-screen snow effect
this.followMouse = false Snow movement can respond to the users mouse
this.snowColor = #fff Dont eat or use yellow snow.
this.snowCharacter = bull bull = bullet, middot is square on some systems etc.
this.snowStick = true Whether or not snow should stick at the bottom. When off, will never collect.
this.targetElement = null element which snow will be appended to null = document.body - can be an element ID eg. myDiv, or a DOM node reference
this.useMeltEffect = true When recycling fallen snow or rarely, when falling, have it melt and fade out if browser supports it
this.useTwinkleEffect = false Allow snow to randomly flicker in and out of view while falling
this.usePositionFixed = false true = snow does not shift vertically when scrolling. May increase CPU load, disabled by default - if enabled, used only where supported
this.usePixelPosition = false Whether to use pixel values for snow topleft vs. percentages. Auto-enabled if body is positionrelative or targetElement is specified.

--- less-used bits ---

this.freezeOnBlur = true Only snow when the window is in focus foreground. Saves CPU.
this.flakeLeftOffset = 0 Left margingutter space on edge of container eg. browser window. Bump up these values if seeing horizontal scrollbars.
this.flakeRightOffset = 0 Right margingutter space on edge of container
this.flakeWidth = 8 Max pixel width reserved for snow element
this.flakeHeight = 8 Max pixel height reserved for snow element
this.vMaxX = 5 Maximum X velocity range for snow
this.vMaxY = 4 Maximum Y velocity range for snow
this.zIndex = 0 CSS stacking order applied to each snowflake

--- No user-serviceable parts inside past this point, yadda yadda ---

var storm = this,
UA sniffing and backCompat rendering mode checks for fixed position, etc.
isIE = navigator.userAgent.matchmsiei,
isIE6 = navigator.userAgent.matchmsie 6i,
isMobile = navigator.userAgent.matchmobileopera mobini,
isBackCompatIE = isIE document.compatMode === BackCompat,
noFixed = isBackCompatIE isIE6,
screenX = null, screenX2 = null, screenY = null, scrollY = null, docHeight = null, vRndX = null, vRndY = null,
windOffset = 1,
windMultiplier = 2,
flakeTypes = 6,
fixedForEverything = false,
targetElementIsRelative = false,
opacitySupported = function
document.createElementdiv.style.opacity = 0.5
return false

return true
didInit = false,
docFrag = document.createDocumentFragment

features = function

var getAnimationFrame

hat tip paul irish

function timeoutShimcallback
window.setTimeoutcallback, 1000storm.animationInterval 20

var _animationFrame = window.requestAnimationFrame

apply to window, avoid illegal invocation errors in Chrome
getAnimationFrame = _animationFrame function
return _animationFrame.applywindow, arguments

var testDiv

testDiv = document.createElementdiv

function hasprop

test for feature support
var result = testDiv.styleprop
return result !== undefined prop null

note local scope.
var localFeatures =

ie has-ms-transform,
moz hasMozTransform,
opera hasOTransform,
webkit haswebkitTransform,
w3 hastransform,
prop null the normalized property value

getAnimationFrame getAnimationFrame

localFeatures.transform.prop =

testDiv = null

return localFeatures

this.timer = null
this.flakes =
this.disabled = false
this.active = false
this.meltFrameCount = 20
this.meltFrames =

this.setXY = functiono, x, y

if !o
return false

if storm.usePixelPosition targetElementIsRelative

o.style.left = x - storm.flakeWidth + px
o.style.top = y - storm.flakeHeight + px

else if noFixed

o.style.right = 100-xscreenX100 +
avoid creating vertical scrollbars
o.style.top = Math.miny, docHeight-storm.flakeHeight + px


if !storm.flakeBottom

if not using a fixed bottom coordinate...
o.style.right = 100-xscreenX100 +
o.style.bottom = 100-yscreenY100 +


absolute top.
o.style.right = 100-xscreenX100 +
o.style.top = Math.miny, docHeight-storm.flakeHeight + px

this.events = function

var old = !window.addEventListener window.attachEvent, slice = Array.prototype.slice,
evt =
add oldattachEventaddEventListener,
remove olddetachEventremoveEventListener

function getArgsoArgs
var args = slice.calloArgs, len = args.length
if old
args1 = on + args1 prefix
if len 3
args.pop no capture

else if len === 3

return args

function applyargs, sType
var element = args.shift,
method = evtsType
if old
elementmethodargs0, args1
elementmethod.applyelement, args

function addEvent
applygetArgsarguments, add

function removeEvent
applygetArgsarguments, remove

add addEvent,
remove removeEvent

function rndn,min
if isNaNmin
min = 0

return Math.randomn+min

function plusMinusn
return parseIntrnd2,10===1n-1n

this.randomizeWind = function
var i
vRndX = plusMinusrndstorm.vMaxX,0.2
vRndY = rndstorm.vMaxY,0.2
if this.flakes
for i=0 i=0 s.vX-0.2
s.vX = -0.2

if s.vY=0 s.vY= screenX screenX-s.x 0.998
~11000 chance of melting mid-air, with each frame
s.melting = true
only incrementally melt one frame
s.melting = false

if storm.useTwinkleEffect
if s.twinkleFrame 0.97
s.twinkleFrame = parseIntMath.random 8, 10

if !opacitySupported
s.o.style.visibility = s.twinkleFrame s.twinkleFrame 2 === 0 hidden visible
s.o.style.opacity = s.twinkleFrame s.twinkleFrame 2 === 0 0 1

this.animate = function
main animation loop
move, check status, die etc.

this.setVelocities = function
s.vX = vRndX+rndstorm.vMaxX0.12,0.1
s.vY = vRndY+rndstorm.vMaxY0.12,0.1

this.setOpacity = functiono,opacity
if !opacitySupported
return false

o.style.opacity = opacity

this.melt = function
if !storm.useMeltEffect !s.melting
if s.meltFrame storm.flakesMaxActive
storm.flakesstorm.flakes.length-1.active = -1


this.timerInit = function
storm.timer = true

this.init = function
var i
for i=0 i


Holmer Green Squash & Racketball Club, Sports Pavillion, Watchet Lane, Holmer Green, High Wycombe, Bucks, HP15 6UF
membership@hgsrc.co.uk 01494 714442 Copyright © 2017 HGSRC