An HTML sitemap is a human-readable page that links to every important page on the site. Unlike the XML sitemap which serves bots, the HTML sitemap serves visitors - and improves SEO at the same time.
Why this matters
An HTML sitemap has three main functions. First, user experience: visitors looking for a specific page that is not in the main navigation use the sitemap as a fallback. Second, internal linking: every link from the sitemap to a page sends Google a signal that the page exists and belongs to the site - especially valuable for deep pages that receive few other internal links. Third, bot access: crawlers that do not heavily rely on XML sitemaps (Ahrefs Bot, Bing) parse HTML sitemaps to map site structure.
On a complex WordPress site (custom post types, custom taxonomies) the XML sitemap sometimes misses pages. A hand-curated HTML sitemap guarantees coverage. From an accessibility standpoint, a sitemap is one of the recommended ways to satisfy international accessibility guidelines.4.5 (Multiple Ways), which requires multiple paths to find a page.
How to detect
Browse the site and look for a "Sitemap" link in the footer. Absent? No HTML sitemap. Check common URLs: /sitemap/, /site-map/, /site-map.html. If none resolve, you need to build one.
Complementary check: in Google Analytics > Pages and screens, see whether deep pages get any traffic. Pages receiving under 1 visit per month and not appearing in the main menu are excellent candidates for the sitemap.
How to fix
The easiest path is a plugin. Popular options:
- WP Sitemap Page - free, simple, exposes a shortcode
[wp_sitemap_page]that lists pages and posts. - Simple Sitemap - free with premium upgrades for fancier styling.
- Yoast SEO Premium ships an HTML sitemap block.
- Rank Math Pro includes an HTML sitemap module.
After installing, create a new page titled "Sitemap" (Pages > Add New). Paste the plugin's shortcode, publish, and add a footer link (Customize > Menus > Footer Menu).
To build manually without a plugin, create a new page and use List blocks with links to every important page. Organize into logical sections: services, recent posts, category pages, resource pages.
Common mistakes
First mistake: listing hundreds of pages. On a large site (1000+ posts), do not include everything - it makes the page unusable. Limit it to top-level content: service pages, categories, and core static pages. Leave individual posts to the XML sitemap.
Second mistake: failing to update. A hand-built sitemap drifts. Every time you publish an important page, add it to the list. Plugins that generate automatically avoid this drift.
Third mistake: not linking from the footer. If the sitemap exists at /sitemap/ but no page links to it, neither users nor bots will find it. Add a footer link present on every page.
Fourth mistake: noindexing the sitemap. Some owners set noindex thinking the sitemap is utility content. That is a mistake - the sitemap should be indexable so it amplifies internal linking. Leave it index.
Verifying the fix
Open the sitemap URL in a browser and click a few random links to confirm they work. View source and verify links are plain <a href elements rather than dynamic JavaScript - Google prefers static HTML links. Submit the sitemap URL via Google Search Console > URL Inspection > Request Indexing. After two weeks, watch the Coverage report for newly discovered pages reached via the sitemap.