Find Dead Links on Your Jekyll Blog with HTML Proofer
Introduction
HTML Proofer is a super handy ruby tool that helps you check your statically generated HTML for any inconsistencies. If you have a large statically generated site then it is certainly worth setting this up because as your site continues to grow it will become more and more difficult to audit the validity of your pages. I have used HTML Proofer in the past, but for whatever reason I had "disable_external" set to true which ignored all outgoing links. It is still useful to find things like missing alt tags in images, and general invalid HTML, but this feature makes it a must for all blogs.Configuration
Rather than clicking on every link on every page, let HTML Proofer do the heavy lifting for you with the following simple steps:Install HTML Proofer
Add the following to yourGemfile
gem "html-proofer" gem "rake"
bundle install
Configure a Rake Task
Add the following to yourRakefile
.
require 'html-proofer'task :test do sh “bundle exec jekyll build” HTMLProofer.check_directory("./_site", { :allow_hash_href => true }).run end
Run the Task
bundle exec rake test
* External link https://levlaz.org/tag/lxc/ failed: 404 No error - ./_site/projects/index.html * External link https://ezbadge.levlaz.org/ failed: 301 Peer certificate cannot be authenticated with given CA certificates - ./_site/salting-your-lxc-container-fleet/index.html * image /images/minions.jpg does not have an alt attribute (line 150) - ./_site/setting-up-antlr4-on-windows/index.html * image /images/antlr.png does not have an alt attribute (line 156) * image /images/grun.png does not have an alt attribute (line 163) - ./_site/share-this-on-facebook/index.html
Configure CI
If are using CircleCI you can add the following to yourcircle.yml
to run the proofer automatically.
test: override: - bundle exec rake test
Conclusion
There is nothing worse than clicking on a link and seeing a 404. When the post is from 2013, perhaps you can excuse it, but it is still a terrible experience for the user and as a "web master" you owe it to your users to prevent link rot.Thank you for reading! Share your thoughts with me on bluesky, mastodon, or via email.
Check out some more stuff to read down below.
Most popular posts this month
- 2024
- Reinstalling Windows at 1am
- SQLite DB Migrations with PRAGMA user_version
- My Custom Miniflux CSS Theme
- How to Disable Wayland in Debian Testing
Recent Favorite Blog Posts
This is a collection of the last 8 posts that I bookmarked.
- Underused Techniques for Effective Emails from Refactoring English
- Death by a thousand slops from daniel.haxx.se
- The AGI economy is coming faster than you think from Freethink
- Rolling the ladder up behind us from Xe Iaso's blog
- In Praise of “Normal” Engineers from charity.wtf
- Reports of Bluesky's death have been greatly exaggerated from The Torment Nexus
- What Would a Kubernetes 2.0 Look Like from matduggan.com
- We Can Just Measure Things from Armin Ronacher's Thoughts and Writings
Articles from blogs I follow around the net
Jamie Lee Curtis isn’t just having a moment, she is THE moment.
Ian sent me this clip Jamie Lee Curtis on the Tonight Show with Stephen Colbert. It is phenomenal. I adore her. I resonate with so much with what she describes here. I too am an artist. I too have struggled […]
via Blog – Brad Frost August 12, 2025Monero faces 51% attack
Monero, a privacy-focused blockchain network, has been undergoing an attempted 51% attack — an existential threat to any blockchain. In the case of a successful 51% attack, where a single entity becomes responsible for 51% or more of…
via Web3 is Going Just Great August 12, 2025Camp Snap Impressions
I took the Camp Snap out for a test run on Sunday
via Robb Knight • Posts • Atom Feed August 12, 2025Generated by openring