A58(M) and A64(M)

The Leeds Inner Ring Road is one motorway with two numbers, designated A58(M) from its western end to Claypit Lane and A64(M) from there to the eastern end.

The A64(M) part is very small, and was once a candidate for the title of Britain's shortest motorway, a battle it fought for many years with the equally inconsequential A308(M). Today Glasgow's A8(M) is considerably shorter than both, but neither can claim to be quite so uneven: the A64(M) is considerably longer eastbound than it is westbound.

The A64(M) is so confusingly lopsided because Woodpecker Junction, where the motorway terminates and becomes the A64, was meant to be something bigger. In the 1970s it was planned to be the point where the Inner Ring Road turned south to connect with some unfinished ends at junction 3 of the M621. This was never done; so what would have been a double-deck road structure only exists in one direction. Eastbound traffic goes on the top deck all the way, but westbound the motorway can't begin until the other half of the top deck appears.

The rest of the Inner Ring Road, in terms of engineering, is something of a masterpiece. It removes a massive amount of through traffic from the city streets without really being noticable at all. It runs almost entirely in a vertical-sided cutting, up to 20ft deep, with numerous short cut-and-cover tunnels. It hides the road and shields its noise so effectively that even when walking it's hard to tell you're anywhere near it until you find yourself on an overbridge looking down at four lanes of fast moving traffic.

At North Street, there's the unusual design feature of a right-hand exit sliproad when heading eastbound. Early plans of the route reveal that this was added to save space, the alternative being an exit slip around the outside of the current loop, which would have interfered with the merge from the A660. The same early plan showed the sliproads to the A61 at Claypit Lane on the inside of the junction, with the mainline passing around the outside - a pair of right-hand entry and exits, which thankfully were never built!

Finally, this was the UK's first ever urban motorway, opening shortly before Manchester's A57(M) Mancunian Way and beating more famous roads like Westway (originally a motorway but now part of the A40) by several years.

Start
Armley
End
Quarry Hill
Passes
Leeds
Length
2 miles
Open Junctions Section
1964 Phase I Westgate → Claypit Lane
1969 Phase II Claypit Lane → Woodpecker Jct
1975 Phase III Westgate → Armley Gyratory

Exit list

The A660 junction incorporates Woodhouse Lane multi-storey car park, built directly above the Inner Ring Road with direct access sliproads from the motorway itself. It appears in the exit list as the grey block with blue and white 'P' symbol.

Drupal\Core\Render\Markup(1)
  • contents
  • Available methods (4)
  • protected string -> string(233) " <!-- THEME DEBUG --> <!-- THEME HOOK: 'views_view_field' --> <!-- BEGIN OUTPUT …"
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'views_view_field' -->
    <!-- BEGIN OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    <!-- END OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    
  • public static create($string) -> string|\Drupal\Component\Render\MarkupInterface
    Creates a Markup object if necessary.
    
    If $string is equal to a blank string then it is not necessary to create a
    Markup object. If $string is an object that implements MarkupInterface it
    is returned unchanged.
    
    @param mixed $string
    The string to mark as safe. This value will be cast to a string.
    
    @return string|\Drupal\Component\Render\MarkupInterface
    A safe string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:32
    public __toString() -> string
    Returns the string version of the Markup object.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:51
    public count() -> int
    Returns the string length.
    
    @return int
    The length of the string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:61
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:71
Drupal\Core\Render\Markup(1)
  • contents
  • Available methods (4)
  • protected string -> string(233) " <!-- THEME DEBUG --> <!-- THEME HOOK: 'views_view_field' --> <!-- BEGIN OUTPUT …"
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'views_view_field' -->
    <!-- BEGIN OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    <!-- END OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    
  • public static create($string) -> string|\Drupal\Component\Render\MarkupInterface
    Creates a Markup object if necessary.
    
    If $string is equal to a blank string then it is not necessary to create a
    Markup object. If $string is an object that implements MarkupInterface it
    is returned unchanged.
    
    @param mixed $string
    The string to mark as safe. This value will be cast to a string.
    
    @return string|\Drupal\Component\Render\MarkupInterface
    A safe string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:32
    public __toString() -> string
    Returns the string version of the Markup object.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:51
    public count() -> int
    Returns the string length.
    
    @return int
    The length of the string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:61
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:71
Drupal\Core\Render\Markup(1)
  • contents
  • Available methods (4)
  • protected string -> string(233) " <!-- THEME DEBUG --> <!-- THEME HOOK: 'views_view_field' --> <!-- BEGIN OUTPUT …"
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'views_view_field' -->
    <!-- BEGIN OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    <!-- END OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    
  • public static create($string) -> string|\Drupal\Component\Render\MarkupInterface
    Creates a Markup object if necessary.
    
    If $string is equal to a blank string then it is not necessary to create a
    Markup object. If $string is an object that implements MarkupInterface it
    is returned unchanged.
    
    @param mixed $string
    The string to mark as safe. This value will be cast to a string.
    
    @return string|\Drupal\Component\Render\MarkupInterface
    A safe string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:32
    public __toString() -> string
    Returns the string version of the Markup object.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:51
    public count() -> int
    Returns the string length.
    
    @return int
    The length of the string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:61
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:71
Drupal\Core\Render\Markup(1)
  • contents
  • Available methods (4)
  • protected string -> string(233) " <!-- THEME DEBUG --> <!-- THEME HOOK: 'views_view_field' --> <!-- BEGIN OUTPUT …"
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'views_view_field' -->
    <!-- BEGIN OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    <!-- END OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    
  • public static create($string) -> string|\Drupal\Component\Render\MarkupInterface
    Creates a Markup object if necessary.
    
    If $string is equal to a blank string then it is not necessary to create a
    Markup object. If $string is an object that implements MarkupInterface it
    is returned unchanged.
    
    @param mixed $string
    The string to mark as safe. This value will be cast to a string.
    
    @return string|\Drupal\Component\Render\MarkupInterface
    A safe string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:32
    public __toString() -> string
    Returns the string version of the Markup object.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:51
    public count() -> int
    Returns the string length.
    
    @return int
    The length of the string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:61
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:71
Drupal\Core\Render\Markup(1)
  • contents
  • Available methods (4)
  • protected string -> string(233) " <!-- THEME DEBUG --> <!-- THEME HOOK: 'views_view_field' --> <!-- BEGIN OUTPUT …"
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'views_view_field' -->
    <!-- BEGIN OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    <!-- END OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    
  • public static create($string) -> string|\Drupal\Component\Render\MarkupInterface
    Creates a Markup object if necessary.
    
    If $string is equal to a blank string then it is not necessary to create a
    Markup object. If $string is an object that implements MarkupInterface it
    is returned unchanged.
    
    @param mixed $string
    The string to mark as safe. This value will be cast to a string.
    
    @return string|\Drupal\Component\Render\MarkupInterface
    A safe string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:32
    public __toString() -> string
    Returns the string version of the Markup object.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:51
    public count() -> int
    Returns the string length.
    
    @return int
    The length of the string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:61
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:71
Drupal\Core\Render\Markup(1)
  • contents
  • Available methods (4)
  • protected string -> string(233) " <!-- THEME DEBUG --> <!-- THEME HOOK: 'views_view_field' --> <!-- BEGIN OUTPUT …"
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'views_view_field' -->
    <!-- BEGIN OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    <!-- END OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    
  • public static create($string) -> string|\Drupal\Component\Render\MarkupInterface
    Creates a Markup object if necessary.
    
    If $string is equal to a blank string then it is not necessary to create a
    Markup object. If $string is an object that implements MarkupInterface it
    is returned unchanged.
    
    @param mixed $string
    The string to mark as safe. This value will be cast to a string.
    
    @return string|\Drupal\Component\Render\MarkupInterface
    A safe string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:32
    public __toString() -> string
    Returns the string version of the Markup object.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:51
    public count() -> int
    Returns the string length.
    
    @return int
    The length of the string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:61
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:71
Drupal\Core\Render\Markup(1)
  • contents
  • Available methods (4)
  • protected string -> string(233) " <!-- THEME DEBUG --> <!-- THEME HOOK: 'views_view_field' --> <!-- BEGIN OUTPUT …"
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'views_view_field' -->
    <!-- BEGIN OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    <!-- END OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    
  • public static create($string) -> string|\Drupal\Component\Render\MarkupInterface
    Creates a Markup object if necessary.
    
    If $string is equal to a blank string then it is not necessary to create a
    Markup object. If $string is an object that implements MarkupInterface it
    is returned unchanged.
    
    @param mixed $string
    The string to mark as safe. This value will be cast to a string.
    
    @return string|\Drupal\Component\Render\MarkupInterface
    A safe string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:32
    public __toString() -> string
    Returns the string version of the Markup object.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:51
    public count() -> int
    Returns the string length.
    
    @return int
    The length of the string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:61
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:71
Drupal\Core\Render\Markup(1)
  • contents
  • Available methods (4)
  • protected string -> string(233) " <!-- THEME DEBUG --> <!-- THEME HOOK: 'views_view_field' --> <!-- BEGIN OUTPUT …"
    
    <!-- THEME DEBUG -->
    <!-- THEME HOOK: 'views_view_field' -->
    <!-- BEGIN OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    <!-- END OUTPUT from 'core/modules/views/templates/views-view-field.html.twig' -->
    
    
  • public static create($string) -> string|\Drupal\Component\Render\MarkupInterface
    Creates a Markup object if necessary.
    
    If $string is equal to a blank string then it is not necessary to create a
    Markup object. If $string is an object that implements MarkupInterface it
    is returned unchanged.
    
    @param mixed $string
    The string to mark as safe. This value will be cast to a string.
    
    @return string|\Drupal\Component\Render\MarkupInterface
    A safe string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:32
    public __toString() -> string
    Returns the string version of the Markup object.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:51
    public count() -> int
    Returns the string length.
    
    @return int
    The length of the string.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:61
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Component/Render/MarkupTrait.php:71
Junction   Westbound               Eastbound  

The WEST
Armley A58
Motorways
(M1 Link, M62 Link)
Kirkstall
A65


A65


A65
N/A
LanesLanesLanesLanes SignsSigns LanesLanesLanesLanes SignsSigns
0 miles, 2+2 lanes 0 miles, 2+2 lanes

Town & Civic Halls
Crown Courts
Infirmary
Town & Civic Halls
Crown Courts
Infirmary
LanesLanesLanesLanes LanesLanesLanesLanes
0 miles, 2 lanes 0 miles, lanes

Westgate Tunnel Westgate Tunnel
0 miles, lanes 0 miles, 2 lanes

Leeds & Bradford Airport
Car Park
University
Skipton A660
A660




A660




Headingley
University
Leeds & Bradford Airport
Skipton A660
LanesLanesLanesLanes LanesLanesLanesLanes
0 miles, 2 lanes 0 miles, 2 lanes

A64(M) becomes A58(M) (A660)




A58




A58(M) becomes A64(M)
Sheepscar
Chapel Allerton
A61
LanesLanesLanesLanes
0 miles, lanes 0 miles, 2 lanes

Vicar Lane
City Centre Shops
City Centre Loop
A58
(A58)


Eastgate
Kirkgate
City Centre Loop
A58
LanesLanesLanesLanes LanesLanesLanesLanes
0 miles, 2 lanes 0 miles, 2 lanes

A64 becomes A64(M)
Eastgate, Bus Station
A61


A61


Motorways (M621 Link)
St James's Hospital
A61
LanesLanesLanesLanes Signs LanesLanesLanesLanes
0 miles, 2 lanes 0 miles, 2 lanes

N/A A61
(M621)

York
Selby
Cross Gates
A64
LanesLanesLanesLanesLanes SignsSigns LanesLanesLanesLanesLanes SignsSigns
0 miles, lanes 0 miles, lanes
Routes

Picture credits