diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index df49c1d6b0f2e22bd12156d7f956b64f2f8c0418..ac3650a3472e862d78b2ec00bcec659cbf95e2e7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,9 +18,8 @@ stages:
 
 # Theodolite Docs
 
-build-docs:
-  stage: build
-  image: ruby:2.7
+.docs:
+  image: alpine/bundle:3.0.3
   tags:
     - exec-docker
   cache:
@@ -28,14 +27,24 @@ build-docs:
       - docs/vendor
   before_script:
     - cd docs
-    - gem install bundler
     - bundle config set --local path 'vendor'
     - bundle install
+
+build-docs:
+  stage: build
+  extends: .docs
   script: bundle exec jekyll build
   artifacts:
     paths:
       - docs/_site
 
+test-docs-links:
+  stage: test
+  extends: .docs
+  needs:
+    - build-docs
+  script: bundle exec htmlproofer --assume-extension --allow_hash_href --url-ignore "/favicon.ico" ./_site
+
 
 # Theodolite Helm Chart
 
diff --git a/docs/Gemfile b/docs/Gemfile
index ef3436c16b884aaca76405cbf09fef1a42b7be1e..c9ce8dff9c02691c4a6a3be9e94341745378fb0b 100644
--- a/docs/Gemfile
+++ b/docs/Gemfile
@@ -19,6 +19,8 @@ gem "github-pages", "~> 215", group: :jekyll_plugins
   #gem "jekyll-feed", "~> 0.12"
 #end
 
+gem 'html-proofer'
+
 # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
 # and associated library.
 platforms :mingw, :x64_mingw, :mswin, :jruby do
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
index c02c195db7e5a655feab6e738fb4c4f0ba58af33..1dbb7d6b6a9eec5d8d5484b15acd5ad870bc2ed9 100644
--- a/docs/Gemfile.lock
+++ b/docs/Gemfile.lock
@@ -95,6 +95,14 @@ GEM
     html-pipeline (2.14.0)
       activesupport (>= 2)
       nokogiri (>= 1.4)
+    html-proofer (3.19.2)
+      addressable (~> 2.3)
+      mercenary (~> 0.3)
+      nokogumbo (~> 2.0)
+      parallel (~> 1.3)
+      rainbow (~> 3.0)
+      typhoeus (~> 1.3)
+      yell (~> 2.0)
     http_parser.rb (0.6.0)
     i18n (0.9.5)
       concurrent-ruby (~> 1.0)
@@ -221,13 +229,17 @@ GEM
     multipart-post (2.1.1)
     nokogiri (1.11.7-x86_64-linux)
       racc (~> 1.4)
+    nokogumbo (2.0.5)
+      nokogiri (~> 1.8, >= 1.8.4)
     octokit (4.21.0)
       faraday (>= 0.9)
       sawyer (~> 0.8.0, >= 0.5.3)
+    parallel (1.21.0)
     pathutil (0.16.2)
       forwardable-extended (~> 2.6)
     public_suffix (4.0.6)
     racc (1.5.2)
+    rainbow (3.0.0)
     rb-fsevent (0.11.0)
     rb-inotify (0.10.1)
       ffi (~> 1.0)
@@ -259,6 +271,7 @@ GEM
       unf_ext
     unf_ext (0.0.7.7)
     unicode-display_width (1.7.0)
+    yell (2.2.2)
     zeitwerk (2.4.2)
 
 PLATFORMS
@@ -267,6 +280,7 @@ PLATFORMS
 
 DEPENDENCIES
   github-pages (~> 215)
+  html-proofer
   minima (~> 2.5)
   tzinfo (~> 1.2)
   tzinfo-data