You’ve been there. It’s late, your client’s just asked for “a quick sitemap page,” and you’re stuck choosing between two bad ideas: install yet another bloated SEO plugin that drags your backend into molasses, or roll your sleeves up for some custom PHP that could break the moment WordPress blinks.
Here’s the truth: most site owners just need an HTML sitemap that does its job quietly, cleanly, and without causing chaos. One that:
- Loads fast and keeps your database lean.
- Automatically hides drafts and private pages.
- Doesn’t need you to moonlight as a developer to set up.
But here’s the part no one mentions: your HTML and XML sitemaps should be speaking the same language. When you tweak one, the other should fall in line. Exclude something from Google? It should disappear from your public sitemap too – no loose ends.
SEOPress handles all of this out of the box, even on the free plan. You get dev-level control with everyday simplicity. No bloat. No maintenance migraines. Just a sitemap that actually does what it’s supposed to.
That’s exactly what we’ll be showing you in this guide: how to build a blazing-fast, no-fuss HTML sitemap that won’t break your site, your brain, or your bedtime – complete with setup steps, pro tips, and the pitfalls to avoid. Let’s get into it.
HTML vs XML sitemaps
Think of sitemaps as navigation tools, just aimed at two very different audiences. XML sitemaps are built for search engines. They’re structured, data-rich files that help bots understand how to crawl your site efficiently. HTML sitemaps, on the other hand, are designed for real people. They’re straightforward link directories that help users find their way around.
Here’s how they differ at a foundational level:
XML Sitemaps:
- Machine-readable files.
- Contain metadata like last updated dates.
- Submitted via tools like Google Search Console.
- Not visible to visitors browsing your site.
HTML Sitemaps:
- Designed for humans, with clean, clickable links.
- Help users explore large or complex websites.
- Offer accessibility support, including screen reader compatibility.
- Usually published as a standard web page, such as /sitemap.

Now, let’s clear up a common myth: HTML sitemaps won’t directly improve your SEO rankings. That’s not their role. What they do offer is better crawl support and a smoother experience for users, especially valuable if you’re running:
- Large eCommerce stores with deep product hierarchies.
- Content-rich sites where users could easily get disoriented.
- Websites that need to meet accessibility standards (like WCAG).
Take note: WordPress started auto-generating XML sitemaps back in version 5.5, but it doesn’t touch HTML sitemaps. You’ll need to handle those yourself. And unless you’re using a plugin that unifies both under one engine, managing them can quickly become a manual chore.
📌 Here’s the takeaway: XML sitemaps are essential for search engines. HTML sitemaps are essential for users. Set them up to run off the same engine, and you’ll save time while keeping everything aligned.
Let’s dig into the best plugins for doing exactly that.
WordPress HTML sitemap plugins that won’t bloat your site
One of the most common concerns among WordPress users is adding another bloated SEO plugin. And rightly so. Many site owners have seen performance take a nosedive after stacking on one too many all-in-one tools.
It’s why many explicitly reject heavy SEO suites like RankMath to seek a more “lightweight option”.
Your plugin choice, and how it handles architecture, makes a big difference. You’ve got two main routes:
- Standalone options like Simple Sitemap or WP Sitemap Page keep things lightweight but treat HTML and XML sitemaps as separate jobs. You’ll need a separate solution for XML sitemaps – whether that’s WordPress core sitemaps or another plugin – doubling your configuration work and increasing the chance of inconsistencies.
- SEO suite bundles can actually streamline things if built well. The better ones run a single database query to handle both HTML and XML.
So how do the major SEO plugins handle HTML sitemaps?
- Yoast: Dropped HTML sitemap support back in version 1.6.
- Rank Math: Offers a basic shortcode in the free version, but with no pagination. Large sites (2,000+ pages) risk PHP memory issues. Also, no Gutenberg block support.
- AIOSEO: Keeps HTML sitemaps behind a $49/year paywall. You do get tidy accordion layouts, but at a cost for something that should be standard.
- SEOPress: Offers full HTML sitemap support in the free tier. Built-in pagination after 1,000 items to keep memory in check. And automatically honors your noindex settings.
🚀 Here’s where SEOPress stands apart: it builds HTML sitemaps on the fly using WP_Query, rather than storing them in your database. That means no cached bloat or performance trade-offs. For anyone prioritizing speed and scalability, that kind of efficiency can mean the difference between long-term site health and having to plan a migration later down the line.
Why your HTML and XML sitemaps should share the same engine
Your HTML and XML sitemaps are simply two formats of the same underlying data. The most robust setups get this and run both from a single, unified configuration.
Let’s say you’re managing a WooCommerce store and want to keep draft products out of search results. With separate sitemap tools, you’d have to manually update XML exclusions, then repeat those settings for your HTML sitemap. Miss one step, and you end up with inconsistencies – products visible to users but hidden from Google, or the other way around.
SEOPress solves this with a smart, all-in-one sitemap module:
- Set your exclusion rules once. XML and HTML follow the same logic.
- Update your noindex meta tags, and both sitemaps respond automatically.
- Tweak pagination or change the sort order, and it’s reflected everywhere.
- No need to double-handle sitemap settings ever again.
It’s clean architecture: one engine means a single query, one exclusion list, one update cycle. That reduces errors, simplifies site maintenance, and guarantees alignment between what users and search engines see.
This approach also gives you a head start with AI-driven indexing. As LLMs like ChatGPT begin parsing HTML sitemaps to understand site structure, keeping your machine-readable and human-readable formats in sync ensures consistency across traditional search crawlers and newer AI tools alike.
The bottom line? The only time you’re forced to choose between flexibility and performance is when you’re juggling multiple sitemap systems. Merge them, and the friction vanishes.
Create an HTML sitemap in WordPress using SEOPress Free
Setting up an HTML sitemap with SEOPress is straightforward. There’s no fiddling with complex settings or writing custom queries – just a quick toggle and you’re good to go.
Create your HTML sitemap with WordPress and SEOPress.
Here’s how to do it from start to finish:
Enable the HTML Sitemap Module
In your WordPress dashboard, go to SEO → XML/HTML Sitemap. You’ll land on the sitemap settings screen, where you’ll find several tabs. In the General tab, tick Enable HTML Sitemap, and hit Save changes.

That’s all it takes to activate your sitemap. But where SEOPress really excels is in the fine-tuned control it gives you.
Control what shows: exclude pages and posts
When you’re managing client sites with private or outdated content, the ability to control what appears in your HTML sitemap is non-negotiable. SEOPress makes it easy.
Under the HTML Sitemap settings, you’ll find the following:
Sorting options
- By published date – newest or oldest first.
- By last modified date – useful for dynamic content.
- Alphabetically by title.
- Menu order – ideal for structured content.

Exclusion tools:
- Omit specific post IDs – simply enter them comma-separated (e.g. 42, 156, 789).
- Hide entire post types – just choose the custom post types (CPTs) you want removed.
- Remove taxonomies – go to the Post Types tab to remove tags, categories, or custom taxonomies.

💡Pro tip: SEOPress automatically excludes nonindexed content to make things easy, so be sure to double-check your page or post’s indexing settings if something isn’t showing up in your sitemap.
If you’re running a membership site, you can easily exclude your members-only post types. Or if you’re working on a WooCommerce store, hide the long list of product tags that don’t need public visibility. The interface includes clear checkboxes for each post type and taxonomy, so exclusions take just seconds.
📌 Example:
Imagine you’re managing a law firm’s site with 500 blog posts, 50 practice area pages, and 200 attorney profiles. You want users to find attorneys and practice areas quickly, without wading through dated blog content. In SEOPress, you would:
- Keep “Pages” and the “Attorney” CPT visible.
- Enter old blog post IDs in the exclusion field.
- Set the sort order to alphabetical for easy navigation.
- Click save, and your sitemap is updated on the spot.
Choose your display format
SEOPress offers two ways to display your sitemap, catering to both modern block editor users and classic WordPress workflows:
Option 1: Gutenberg Block
- Create a new page titled “Sitemap”.
- Add the SEOPress HTML Sitemap block.

- Customize display settings in the block sidebar.

Option 2: Shortcode (works anywhere)
[seopress_html_sitemap]
The shortcode accepts parameters for advanced users:
[seopress_html_sitemap cpt="post,page"]
Advanced shortcode examples:
- Show only products:
[seopress_html_sitemap cpt="product"]. - Display with wrapper div:
[seopress_html_sitemap]. - Multiple instances: Use different parameters on various pages for department-specific sitemaps.
💡Pro tip: Add the shortcode to your 404 page template. Visitors who hit dead links get instant navigation options instead of frustration.

Keep your sitemap out of Google (while still crawlable)
Ranking #2 in Google should be good news… until you find out it’s your HTML sitemap taking the spotlight instead of your homepage. Thankfully, there’s a quick fix for this all-too-common issue.
Why it matters:
- Sitemap pages in search results look sloppy and unpolished.
- They weaken your keyword strategy by splitting relevance.
- Users landing on a plain list miss the content you actually want them to see.
The solution:
SEOPress makes this easy to manage. When you publish your sitemap page:
- Open the page in WordPress.
- Scroll down to the SEOPress meta box.
- Go to the Advanced tab and tick Do not display this page in search engine results.
- Hit Update.

That’s it. SEOPress adds a noindex tag to the page while still allowing search engines to crawl all the links inside it. So your sitemap stays useful for bots, without cluttering up the search results.
The best part? This setting works hand-in-hand with the HTML sitemap module. SEOPress remembers your noindex choice even if you turn the sitemap off and back on again later.
Scaling: multilingual sites, catalogs, and edge cases
Running a large site comes with its own set of technical hurdles. SEOPress is built to tackle them head-on, smoothly and reliably.
Automatic pagination:
Once your XML sitemap hits 1,000 items, SEOPress splits it automatically. That keeps things efficient, avoids memory issues (especially on shared hosting), and ensures fast loading for search engines.
For example, 10,000 products would be spread across 10 XML sitemap files, instead of one overloaded file that might time out.
Multilingual magic:
Using WPML, Polylang, or TranslatePress? SEOPress instantly detects your setup. Your French sitemap will only show French URLs. German shows German – without you lifting a finger.
📌 Example:
On a WPML-powered site with English, Spanish, and French content:
example.com/sitemap
serves English only.example.com/es/mapa-del-sitio
serves Spanish.example.com/fr/plan-du-site
serves French.
Each sitemap respects that language’s exclusions and noindex settings to the letter.
Multisite considerations:
If you’re running a WordPress network, SEOPress lets you enable HTML sitemaps site-by-site or across the whole network. Each site keeps its own exclusion settings, but everything runs off the same lean, consistent codebase.
Large catalog handling:
- Smart queries keep your database responsive.
- Caching headers cut down on server strain.
- Hierarchical layout options make even huge inventories easy to browse.
The edge cases others miss? SEOPress covers them:
- Custom post type archives display correctly.
- Password-protected pages stay hidden.
- Scheduled posts don’t appear until they go live.
- Trashed items are ignored (surprisingly, not everyone gets this right).
- Private posts only show when they should.
- Sticky posts keep their place.
- Empty custom taxonomies stay out of sight.
With all of this happening quietly in the background, you can stay focused on your content, not your sitemap.
Code snippets for when plugins aren’t an option
Sometimes you can’t install another plugin. Maybe you’ve got agency restrictions, client preferences, or you’re just a minimalist. Here’s a basic PHP solution for desperate times:
// Add to a child theme's functions.php or a snippets plugin
function custom_html_sitemap() {
$out = ';
// Pages
$pages = get_pages(array(
'sort_column' => 'menu_order,post_title',
'post_status' => 'publish',
));
foreach ($pages as $page) {
$out .= sprintf(
'
',
esc_url(get_permalink($page->ID)),
esc_html(get_the_title($page->ID))
);
}
// Recent posts
$recent_posts = get_posts(array(
'posts_per_page' => 50,
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'DESC',
'post_type' => 'post',
'ignore_sticky_posts' => true,
));
foreach ($recent_posts as $p) {
$out .= sprintf(
'
',
esc_url(get_permalink($p->ID)),
esc_html(get_the_title($p->ID))
);
}
$out .= '';
return $out;
}
add_shortcode('custom_sitemap', 'custom_html_sitemap');
Usage: Add [[custom_sitemap]] to any page.
Critical limitations:
- Zero exclusion control without additional coding.
- No automatic noindex respect.
- Breaks if you change theme.
- No pagination. It will timeout on large sites.
- You’re responsible for all maintenance.
Honestly? Unless you’re comfortable debugging PHP, stick with SEOPress.
Making HTML sitemaps work for your WordPress sites
Building an HTML sitemap shouldn’t mean managing clunky plugins or diving into complex code. SEOPress’s unified sitemap engine delivers the speed and control developers expect, with the ease of setup that everyone appreciates.
Here’s what makes it different:
- One update powers both HTML and XML sitemaps so that everything stays in sync.
- On-demand generation keeps your database lean.
- Built-in pagination handles large sites with ease.
- Smart noindex rules help you stay out of unwanted search results.
It doesn’t matter whether you’re running a small portfolio site or a multilingual WooCommerce store with thousands of SKUs, the setup stays the same: switch it on, choose what to exclude, drop it onto any page. You’re live in minutes.
No hoops to jump through, no surprise charges. The HTML sitemap module is included free with SEOPress, giving you fast, accessible navigation from day one. Try SEOPress’s sitemap free.
Featured Stories,Sitemaps#Boost #Navigation #Create #WordPress #HTML #Sitemap1767884516










