diff --git a/_includes/vendor/anchor_headings.html b/_includes/vendor/anchor_headings.html
new file mode 100755
index 0000000000000000000000000000000000000000..25397df93635196eeee7c23d7fbcc18d37f1db2d
--- /dev/null
+++ b/_includes/vendor/anchor_headings.html
@@ -0,0 +1,100 @@
+{% capture headingsWorkspace %}
+  {% comment %}
+    Version 1.0.3
+      https://github.com/allejo/jekyll-anchor-headings
+
+    "Be the pull request you wish to see in the world." ~Ben Balter
+
+    Usage:
+      {% include anchor_headings.html html=content %}
+
+    Parameters:
+      * html          (string) - the HTML of compiled markdown generated by kramdown in Jekyll
+
+    Optional Parameters:
+      * beforeHeading (bool)   : false  - Set to true if the anchor should be placed _before_ the heading's content
+      * anchorBody    (string) :  ''    - The content that will be placed inside the anchor; the `%heading%` placeholder is available
+      * anchorClass   (string) :  ''    - The class(es) that will be used for each anchor. Separate multiple classes with a space
+      * anchorTitle   (string) :  ''    - The `title` attribute that will be used for anchors
+      * h_min         (int)    :  1     - The minimum header level to build an anchor for; any header lower than this value will be ignored
+      * h_max         (int)    :  6     - The maximum header level to build an anchor for; any header greater than this value will be ignored
+      * bodyPrefix    (string) :  ''    - Anything that should be inserted inside of the heading tag _before_ its anchor and content
+      * bodySuffix    (string) :  ''    - Anything that should be inserted inside of the heading tag _after_ its anchor and content
+
+    Output:
+      The original HTML with the addition of anchors inside of all of the h1-h6 headings.
+  {% endcomment %}
+
+  {% assign minHeader = include.h_min | default: 1 %}
+  {% assign maxHeader = include.h_max | default: 6 %}
+  {% assign beforeHeading = include.beforeHeading %}
+  {% assign nodes = include.html | split: '<h' %}
+
+  {% capture edited_headings %}{% endcapture %}
+
+  {% for _node in nodes %}
+    {% capture node %}{{ _node | strip }}{% endcapture %}
+
+    {% if node == "" %}
+      {% continue %}
+    {% endif %}
+
+    {% assign nextChar = node | replace: '"', '' | strip | slice: 0, 1 %}
+    {% assign headerLevel = nextChar | times: 1 %}
+
+    <!-- If the level is cast to 0, it means it's not a h1-h6 tag, so let's try to fix it -->
+    {% if headerLevel == 0 %}
+      {% if nextChar != '<' and nextChar != '' %}
+        {% capture node %}<h{{ node }}{% endcapture %}
+      {% endif %}
+
+      {% capture edited_headings %}{{ edited_headings }}{{ node }}{% endcapture %}
+      {% continue %}
+    {% endif %}
+
+    {% assign _workspace = node | split: '</h' %}
+    {% assign _idWorkspace = _workspace[0] | split: 'id="' %}
+    {% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
+    {% assign html_id = _idWorkspace[0] %}
+
+    {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
+    {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
+
+    <!-- Build the anchor to inject for our heading -->
+    {% capture anchor %}{% endcapture %}
+
+    {% if html_id and headerLevel >= minHeader and headerLevel <= maxHeader %}
+      {% capture anchor %}href="#{{ html_id}}"{% endcapture %}
+
+      {% if include.anchorClass %}
+        {% capture anchor %}{{ anchor }} class="{{ include.anchorClass }}"{% endcapture %}
+      {% endif %}
+
+      {% if include.anchorTitle %}
+        {% capture anchor %}{{ anchor }} title="{{ include.anchorTitle | replace: '%heading%', header }}"{% endcapture %}
+      {% endif %}
+
+      {% capture anchor %}<a {{ anchor }}>{{ include.anchorBody | replace: '%heading%', header | default: '' }}</a>{% endcapture %}
+
+      <!-- In order to prevent adding extra space after a heading, we'll let the 'anchor' value contain it -->
+      {% if beforeHeading %}
+        {% capture anchor %}{{ anchor }} {% endcapture %}
+      {% else %}
+        {% capture anchor %} {{ anchor }}{% endcapture %}
+      {% endif %}
+    {% endif %}
+
+    {% capture new_heading %}
+      <h{{ _hAttrToStrip }}
+        {{ include.bodyPrefix }}
+        {% if beforeHeading %}
+          {{ anchor }}{{ header }}
+        {% else %}
+          {{ header }}{{ anchor }}
+        {% endif %}
+        {{ include.bodySuffix }}
+      </h{{ _workspace | last }}
+    {% endcapture %}
+    {% capture edited_headings %}{{ edited_headings }}{{ new_heading }}{% endcapture %}
+  {% endfor %}
+{% endcapture %}{% assign headingsWorkspace = '' %}{{ edited_headings | strip }}
\ No newline at end of file
diff --git a/_layouts/anchor_headings.html b/_layouts/anchor_headings.html
new file mode 100644
index 0000000000000000000000000000000000000000..efec628fee1c5a45df48b1fc290beabd908402ea
--- /dev/null
+++ b/_layouts/anchor_headings.html
@@ -0,0 +1,5 @@
+---
+layout: vendor/compress
+---
+
+{% include vendor/anchor_headings.html html=content anchorBody="#" anchorClass="anchor_heading" %}
\ No newline at end of file
diff --git a/_layouts/default.html b/_layouts/default.html
index c2d1c99416fdca1f2ac57c5e8dc24b54a6828971..0b3928d65526d75e66258e39d4176901b21a7909 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -1,5 +1,5 @@
 ---
-layout: vendor/compress
+layout: anchor_headings
 ---
 
 <!DOCTYPE html>
diff --git a/_sass/anchor_headings.scss b/_sass/anchor_headings.scss
new file mode 100644
index 0000000000000000000000000000000000000000..da5520257829e8c74367f23c3a329442e8a49d51
--- /dev/null
+++ b/_sass/anchor_headings.scss
@@ -0,0 +1,12 @@
+a.anchor_heading {
+    visibility: hidden;
+}
+
+h1:hover > a.anchor_heading,
+h2:hover > a.anchor_heading,
+h3:hover > a.anchor_heading,
+h4:hover > a.anchor_heading,
+h5:hover > a.anchor_heading,
+h6:hover > a.anchor_heading {
+    visibility: visible;
+}
\ No newline at end of file
diff --git a/assets/css/just-the-docs.scss b/assets/css/just-the-docs.scss
index 6a2eefa5ca319368e85410163b74139dacb98eb0..b6d17d594eb8ddcd705c4762b28665e178de335a 100644
--- a/assets/css/just-the-docs.scss
+++ b/assets/css/just-the-docs.scss
@@ -41,4 +41,5 @@
 @import "./search";
 @import "./tables";
 @import "./code";
+@import "./anchor_headings";
 @import "./utilities/utilities";