diff --git a/includes/theme.inc b/includes/theme.inc
index 352706effd63656e3addb2a80de7a4e802be2b82..c908088ffcadda68c8cd4c41ecb0e86f51052a44 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -1509,7 +1509,12 @@ function theme_image($path, $alt = '', $title = '', $attributes = array(), $gets
  */
 function theme_breadcrumb($breadcrumb) {
   if (!empty($breadcrumb)) {
-    return '<div class="breadcrumb">' . implode(' » ', $breadcrumb) . '</div>';
+    // Provide a navigational heading to give context for breadcrumb links to
+    // screen-reader users. Make the heading invisible with .element-invisible.
+    $output = '<h2 class="element-invisible">' . t('You are here') . '</h2>';
+
+    $output .= '<div class="breadcrumb">' . implode(' » ', $breadcrumb) . '</div>';
+    return $output;
   }
 }
 
diff --git a/themes/garland/template.php b/themes/garland/template.php
index 9b92aa7b2de94ec6b08580e91251f30e5f18bd44..70a415ffaf4e71bf01d9eb0e445b98421337d3da 100644
--- a/themes/garland/template.php
+++ b/themes/garland/template.php
@@ -10,7 +10,12 @@
  */
 function garland_breadcrumb($breadcrumb) {
   if (!empty($breadcrumb)) {
-    return '<div class="breadcrumb">' . implode(' › ', $breadcrumb) . '</div>';
+    // Provide a navigational heading to give context for breadcrumb links to
+    // screen-reader users. Make the heading invisible with .element-invisible.
+    $output = '<h2 class="element-invisible">' . t('You are here') . '</h2>';
+
+    $output .= '<div class="breadcrumb">' . implode(' › ', $breadcrumb) . '</div>';
+    return $output;
   }
 }