You can create an HTML sitemap in WordPress with a Rank Math setting, a free sitemap plugin or two core blocks. The page lists your pages and posts in one place so visitors can find them. You do not need code for any of these methods.
We tested each method in October 2026 on a WordPress 7.1.3 test site with Rank Math 1.0.280, Simple Sitemap 3.9.2 and WooCommerce 11.2. Every screenshot in this guide comes from that site. The test site had pages and posts of its own and 12 products.
This guide shows each method with real screens and a short custom shortcode that we ran and fixed. It also covers what to leave out of the page and how an HTML sitemap differs from the XML sitemap that search engines read. You will finish with a six step check before you link the page.
What Is an HTML Sitemap in WordPress?
An HTML sitemap is a normal web page that links to the important pages and posts on your site. Visitors use it to find content without clicking through menus. It sits on your own site at an address such as /sitemap/ and looks like any other page.
An HTML sitemap is not a file for search engines. Google describes a sitemap as a file with information about the pages and other files on your site. That page does not mention an HTML sitemap page.

Here is an HTML sitemap example from our test site. The Pages section lists each page with its publish date and shows Shipping to Canada under Shipping. Rank Math built the list from the pages we had published.
HTML Sitemap vs XML Sitemap
An HTML sitemap is for visitors and an XML sitemap is for search engines. The HTML version is a page you can read and click. WordPress and your SEO plugin make the XML file for you and most sites add the HTML page only when it helps visitors.
| Feature | HTML sitemap | XML sitemap |
|---|---|---|
| Reader | Visitors | Search engines |
| Format | A normal web page | An XML file |
| Where it lives | A page you choose such as /sitemap/ | /wp-sitemap.xml or your SEO plugin address |
| Made by | You with a plugin or blocks | WordPress or your SEO plugin |
WordPress makes an XML sitemap on its own. The core feature arrived in WordPress 5.5 and lives at /wp-sitemap.xml.
We confirmed it with no SEO plugin active. It listed our posts and pages and products and categories and users.
An SEO plugin can replace it. With Rank Math active our /wp-sitemap.xml address redirected to /sitemap_index.xml. Rank Math shows that address on the General tab of its sitemap settings.
Do You Need an HTML Sitemap?
You need an HTML sitemap in WordPress only when visitors struggle to find pages. Google says a site of about 500 pages or fewer may not need a sitemap file at all according to its sitemap overview. A visitor page is a separate choice that helps on large sites and deep page trees.
Google also notes that a sitemap does not guarantee crawling. So treat the HTML page as a navigation aid and not a ranking trick. Our guide to website structure explains how clear page groups help visitors and search engines alike.
An HTML sitemap earns its place in three cases:
- A crowded menu: Your menu cannot hold every page.
- Lost visitors: Visitors often ask where a page lives.
- A store with help pages: Policy and help pages sit outside the main menu.
Which HTML Sitemap Method Should You Use?
Use Rank Math if it already runs your SEO and Simple Sitemap if you use another SEO plugin. Use core blocks for a basic list with no plugin at all. Use a short shortcode when you want full control of the markup and can edit code.

All three no code methods listed Cart and Checkout and My account until we changed a setting. That surprised us on a store. Plan to hide those pages whichever method you pick.

Do not run two sitemap plugins that overlap on one page. Pick one method and remove the others.
The infographic above shows our order of preference for a store. Rank Math comes first when it already handles your SEO because it adds no extra plugin. Simple Sitemap comes next because it gives the same control on any SEO plugin.
Method 1: Use Rank Math to Create an HTML Sitemap
Rank Math has an HTML sitemap module built into the free plugin. You switch it on under Rank Math SEO > Sitemap Settings > HTML Sitemap and show it with a shortcode. The list builds itself from your published pages and posts.
This Rank Math HTML sitemap setup is the one we followed on version 1.0.280:
- Open the HTML Sitemap tab: Go to Rank Math SEO > Sitemap Settings and click HTML Sitemap.
- Check the toggle: The HTML Sitemap toggle was already on in our install and the Display Format was Shortcode.

- Copy the shortcode: The field shows
[rank_math_html_sitemap]. - Pick the content: Open Pages in the left list and check the Include in HTML Sitemap toggle. Posts and Products have the same toggle.

- Create the page: Add a new page called Sitemap and paste the shortcode in a Shortcode block. Publish it.
The same screen lets you sort the list and show dates. Sort By offers Published Date and Modified Date and Alphabetical and Post ID according to the Rank Math guide. Item Titles can show the post title or the SEO title.
On our site the result grouped content by type. Posts came first and Pages came second. Products and the categories followed.

Note: Display Format can also be Page. We tested it.
You pick one page and Rank Math adds the list under that page content. You need no shortcode.
Method 2: Use a WordPress Sitemap Plugin Called Simple Sitemap
Simple Sitemap adds a block and a shortcode that list your content on any WordPress site. It works next to any SEO plugin. The free edition lists posts and pages and lets you exclude single items by their post ID number.
Custom post types are a paid feature and the WordPress.org page for the plugin lists what each edition includes.
This is the WordPress sitemap plugin setup we followed on version 3.9.2:
- Add the block: Edit a new page and type /simple sitemap to find the Simple Sitemap block.
- Choose the post types: The block panel has a Select post types to display list with Post and Page.

- Set the order: Orderby defaults to Title and Order to Ascending.
- Publish the page: The block listed our pages by title and nested Shipping to Canada under Shipping.
The shortcode works the same way. A bare [simple-sitemap] listed pages only in our test. We needed types="page, post" to add posts.
The exclude attribute took page IDs and removed them. We used it for Cart and Checkout and My account:
[simple-sitemap types="page, post" exclude="6, 7, 8"]
Your IDs will differ. Edit a page and read the post number in the address bar. The block settings have the same Exclude option.
Method 3: Create an HTML Sitemap Without a Plugin Using Blocks
You can build an HTML sitemap in WordPress without a plugin using the Page List and Latest Posts blocks. Page List shows every published page in a nested list and Latest Posts shows your newest posts. Together they make a basic sitemap with no code.
- Create a page: Add a new page called Site Map.
- Add a Pages heading: Insert a Heading block and type Pages.
- Add the Page List block: Insert Page List under the heading.
- Add a Posts heading: Insert a second Heading block and type Posts.
- Add the Latest Posts block: Set Number of items to a high number such as 50.

The Latest Posts block listed every post on our site once we set 50 items. The output below comes from the published page.

This method has a catch. The Page List block listed every published page including Cart and Checkout and My account.
We found no setting to hide one page. Use Rank Math or Simple Sitemap if you need that control.
Method 4: Add a Custom Shortcode for an HTML Sitemap
A custom shortcode gives you full control of the markup and needs a few lines of PHP. Use it when a plugin lists too much or too little. Put the code in a small plugin or a child theme and never edit a parent theme file.
The code below lists pages and posts. It fixes the faults of the snippet that this guide used before.
That version wrote an array key as 'orderby'. with a stray dot and PHP rejects it. We ran php -l on the old snippet and it failed. The version here passed.
function dd_html_sitemap_shortcode() {
$pages = wp_list_pages(
array(
'title_li' => '',
'echo' => false,
'exclude' => '', // Add page IDs here, for example '6,7,8'.
)
);
$posts = get_posts(
array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'no_found_rows' => true,
)
);
ob_start();
?>
<div class="html-sitemap">
<h2><?php esc_html_e( 'Pages', 'dd-html-sitemap' ); ?></h2>
<ul>
<?php echo wp_kses_post( $pages ); ?>
</ul>
<h2><?php esc_html_e( 'Posts', 'dd-html-sitemap' ); ?></h2>
<ul>
<?php foreach ( $posts as $sitemap_post ) : ?>
<li><a href="<?php echo esc_url( get_permalink( $sitemap_post ) ); ?>"><?php echo esc_html( get_the_title( $sitemap_post ) ); ?></a></li>
<?php endforeach; ?>
</ul>
</div>
<?php
return ob_get_clean();
}
add_shortcode( 'html_sitemap', 'dd_html_sitemap_shortcode' );
Two details matter for safety. esc_url() cleans each address and esc_html() cleans each title. The older snippet echoed get_permalink() with no escaping.
To test the escaping we published a post with a <b> tag in its title. The sitemap showed the tag as plain text and did not make the word bold. That is the safe result.

Add [html_sitemap] to a page to show the list.
The value -1 loads every post. A site with thousands of posts should set a limit. We ran the code as a small must-use plugin file on the test site.
What to Leave Out of Your HTML Sitemap
Leave out pages that do not help a visitor find content. Carts and checkouts and account pages are the main ones on a store. Thank you pages and old drafts belong on that list too and a short list reads better.
A shorter list is easier to read and easier to trust.
On our test store Rank Math listed Cart and Checkout and My account by default. They dropped off once we set those pages to noindex in their Rank Math robots meta. Rank Math skips noindex pages when it builds the HTML sitemap.
Our first check after that still showed the pages. The list updated only after we cleared the stored copy of the sitemap on our test site. Clear your cache after you change page settings and look at the result in a private window.
Drafts never appeared in any method. Our Old Sale draft stayed out of Rank Math and the blocks and the code. Our guide to removing the noindex tag in WordPress covers the reverse case where a page you want listed is set to noindex.
If you run a store read our WooCommerce SEO guide for the product and category pages that should stay in the sitemap.
Where to Put an HTML Sitemap Page on Your Site
Put the HTML sitemap page where visitors look for help. A link in the footer shows on every page and a link in a help menu works too. Name the page Sitemap so the link text matches what people expect of a WordPress sitemap page.
Use a short address such as /sitemap/ and a clear title. Our on-page SEO checklist lists the title and heading basics that apply to this page as they do to any other. The meta tags guide shows how to set its title and description.
Tell search engines about the XML sitemap and not the HTML page. The visitor page needs no submission because people reach it by link.
Our guide to submitting a website to Google Search covers that step.
Fix an HTML Sitemap That Looks Wrong
Most sitemap problems come from a stale list or a missing setting. Check the list in a private window first and then check that the content type is switched on. These fixes cover the issues we hit on our test site.
- The shortcode shows as text: Put it inside a Shortcode block and check that the plugin or the code is active.
- A page is missing: Check that it is published and not set to noindex. Rank Math leaves noindex pages out.
- A removed page still shows: Clear the cached copy of the sitemap and reload.
- Posts are missing in Simple Sitemap: Add
types="page, post"to the shortcode. A bare shortcode listed pages only in our test. - The list is too long: Exclude pages by ID or use a plugin that supports grouping.
Worth checking: Open the sitemap page on your phone. A long list needs clear spacing so each link is easy to tap.
Re-check the page each time you add a large group of content. A new product range or a new help section changes what visitors expect to see. Open the page and confirm the new group shows up under a clear heading.
Conclusion
You can create an HTML sitemap in WordPress with Rank Math or Simple Sitemap and a few clicks. Core blocks work when you want no plugin. A custom shortcode gives the most control and needs a few lines of tested code.
Pick one method and hide the pages that do not help visitors. Then link the page from your footer and check every link. Our testing found that carts and checkouts appear by default so that one setting is worth a look before launch.
Frequently Asked Questions (FAQs)
Q1. Does WordPress create a sitemap automatically?
WordPress makes an XML sitemap at /wp-sitemap.xml according to its core announcement. An SEO plugin such as Rank Math can replace it. WordPress does not make an HTML sitemap page for visitors.
Q2. How do I add a sitemap to WordPress?
Your XML sitemap already exists. For a visitor page switch on the HTML sitemap in Rank Math or add the Simple Sitemap block to a new page. Then link the page from your footer.
Q3. Can I create a sitemap in WordPress without a plugin?
Add the Page List and Latest Posts blocks to a page or add the custom shortcode in this guide. Both worked on our test site. The blocks cannot hide single pages.
Q4. What is the difference between an HTML and an XML sitemap?
An HTML sitemap is a page for visitors and an XML sitemap is a file for search engines. Google describes a sitemap as a file with information about your pages in its sitemap overview. The HTML page is yours to design.
Q5. How do I keep my HTML sitemap up to date?
Use Rank Math or Simple Sitemap because both build the list from your published content. A new page appears without any edit. Clear the cached copy if a change does not show.
Q6. Where should I link my HTML sitemap?
Link it from the footer so it shows on every page. A help menu also works. Keep the link text short and call the page Sitemap.
