M876

The M876 is a little motorway that makes a shortcut between the M80 and M9, and provides a way for traffic between Fife and Glasgow to go from the M80 to the Kincardine Bridge. It borrows a mile of the M9 to do it. For many years, most of the M876's traffic was put straight onto the single-carriageway A876 at the eastern end, but the construction of the Upper Forth Crossing included improving the A876 to a dual carriageway and grade-separating junction 3, so its terminus is now rather more dignified.

Before the motorway was built, the short spur from junction 2 and the route west of there was a dual carriageway section of A-road. When motorway restrictions were applied, nobody seems to have checked the road to see if it had any features that weren't suitable on a motorway. There's still a pedestrian crossing part way along the spur, complete with paved section over the central reserve! This appears to be the only such crossing on any British motorway.

The M876 is the only motorway in Britain for which the basic rules of maths were re-written. Follow the junction numbers in order and you'll find yourself counting 5, 1, 2, 8, 7, 3!

Start
Denny
End
Kincardine
Passes
None
Connects to
Length
8 miles
Open Junctions Section
Feb 1980 Entire motorway

Exit list

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  
M80 J5
Cumbernauld
Glasgow
M80 Link
M80 M80
LanesLanesLanesLanesLanesLanes LanesLanesLanesLanes
0 miles, 2 lanes 0 miles, 2 lanes
1
Denny
Falkirk
A883


A883


B905
A883 Denny
Falkirk
A883
LanesLanesLanesLanes LanesLanesLanesLanes
0 miles, 2 lanes 0 miles, 2 lanes
2
Larbert
A9


A9

A88
A9 Stenhousemuir
(A88)
Larbert
(A9)
LanesLanesLanesLanes LanesLanesLanesLanes
0 miles, 2 lanes 0 miles, 2 lanes
M9 J8
Stirling
M9 Link
Cumbernauld
Glasgow
M876 (M80 Link)
M9
LanesLanesLanesLanesLanes LanesLanesLanesLanesLanesLanes
0 miles, 3 lanes 0 miles, 3 lanes
M9 J7
Grangemouth
Edinburgh
M9 Link


M9
Grangemouth
Edinburgh
M9 Link
Kincardine Bridge
M876
LanesLanesLanesLanesLanesLanes LanesLanesLanesLanesLanes
0 miles, 2 lanes 0 miles, 2 lanes
3
Skinflats
Larbert
A905
A905




A905




Kincardine Bridge
A876
Dunmore
Grangemouth
A905
LanesLanesLanesLanes Signs LanesLanesLanesLanes Signs
0 miles, lanes 0 miles, lanes
Routes

Picture credits