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.
- 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
- The Gentle Singularity from Sam Altman
- Whale Watching from https://popagandhi.com/
Articles from blogs I follow around the net
How Many Mildliner Colours Are There Now?
I made a mildliner reference site to keep track of all the colours
via Robb Knight • Posts • Atom Feed June 27, 2025Resupply stablecoin lender exploited for $9.3 million
An attacker was able to exploit a vulnerability in a smart contract used by the Resupply stablecoin lender to extract about $9.3 million from the project. After depositing around $200,000, they were able to inflate the price of anoth…
via Web3 is Going Just Great June 27, 2025Self-driving is finally happening
I still remember how the car industry got all excited back in 2017 about how steering wheels would soon be obsolete. Every concept car then was a living room on wheels, seats facing inwards. The self-driving revolution was imminent, they said. Well, it …
via David Heinemeier Hansson June 27, 2025Generated by openring