# Link validation in Hugo

**URL:** <https://community.cloudcannon.com/t/link-validation-in-hugo/234>\
**Category:** General\
**Created:** [May 28, 2025, 11:10pm UTC](https://community.cloudcannon.com/t/link-validation-in-hugo/234 "2025-05-28T23:10:07Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![David](https://community.cloudcannon.com/user_avatar/community.cloudcannon.com/david/32/176_2.png) [@David](https://community.cloudcannon.com/u/David)\
**Post date:** [May 28, 2025, 11:10pm UTC](https://community.cloudcannon.com/t/link-validation-in-hugo/234/1 "2025-05-28T23:10:07Z")

</div>

While putting together the next [Hugo newsletter](https://hugoconf.io/) I came across a couple of strategies for checking links, both internal and external, and thought they might be worth sharing more widely.

**Internal and external links:** Carsten Nichte uses a custom script that wraps `linkinator` with a few items installed alongside their Hugo project. It’s always worth digging into any dependencies you add, but it looks like quite a clean solution for Hugo users, with a solid stats output to show what needs fixing. [More details here](https://discourse.gohugo.io/t/tutorial-how-to-check-broken-links-in-hugo/54750).

**Internal links only:** On the Hugo docs themselves, Joe Mooring uses a link render hook to resolve internal destinations, with his error level set to `warning`. [More details here](https://www.veriphor.com/articles/link-and-image-render-hooks/#link-render-hook).

Let me know if you have different solutions!

---

<div class="post-metadata">

**Author:** ![Alysha\_Jo\_Nolan](https://community.cloudcannon.com/user_avatar/community.cloudcannon.com/alysha_jo_nolan/32/195_2.png) [@Alysha\_Jo\_Nolan](https://community.cloudcannon.com/u/Alysha_Jo_Nolan)\
**Post date:** [June 3, 2025, 8:41pm UTC](https://community.cloudcannon.com/t/link-validation-in-hugo/234/2 "2025-06-03T20:41:27Z")

</div>

Oooh I could see this being very handy!
