What an XML sitemap is and what search engines read from it
An XML sitemap lists the pages you want found and when each last changed. What goes in it, what Google ignores, and the usual mistakes.
Why a sitemap exists
Search engines find pages in two ways. They follow links from pages they already know, and they read sitemaps. Links miss things. A new article nothing links to yet, or a page five clicks deep, can wait a long time before a crawler reaches it. A sitemap names it outright.
The format is the Sitemap Protocol, published at sitemaps.org, which Google, Yahoo and Microsoft agreed on in 2006. Google and Bing both read it.
A sitemap is a hint, not an order. Listing a page does not make Google index it. It makes sure Google knows the page exists and when it last changed.
The format
A small sitemap looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://yoursite.com/</loc>
<lastmod>2026-05-01</lastmod>
</url>
<url>
<loc>https://yoursite.com/about</loc>
<lastmod>2026-04-15</lastmod>
</url>
</urlset>Each <url> needs a <loc>, the full address of the page. <lastmod> is optional, and it is the field that earns its place, because it tells a crawler which pages changed since its last visit. Google says it uses lastmod when the value is consistently accurate. A site that stamps today's date on every page, on every request, teaches Google to ignore it.
Priority and changefreq
The protocol also defines <priority>, a number from 0.0 to 1.0, and <changefreq>, which runs from always to never. You will see both in many sitemaps and most tutorials. Google says it ignores them.
I would leave them out. They made sense on paper, but once every site marked every page as top priority and changing daily, the two fields stopped telling anyone anything.
Sitemaps for multilingual sites
A sitemap can also carry hreflang, the links between the language versions of a page. The <urlset> element then has to declare the xhtml namespace:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://yoursite.com/en/about</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://yoursite.com/en/about"/>
<xhtml:link rel="alternate" hreflang="de" href="https://yoursite.com/de/about"/>
</url>
</urlset>Google treats hreflang in the sitemap and hreflang in the page head as equivalent, so one of the two is enough. The post on hreflang goes into the details.
Static or dynamic
A sitemap file you generate once and upload is out of date the moment you publish the next article, and it keeps pointing at pages you have since removed. A dynamic sitemap is built by the CMS when a crawler asks for it, from whatever is published at that moment. For a Joomla site that publishes regularly, build it dynamically. A static one is a chore you will forget.
Common mistakes
Listing addresses you do not want indexed. Pages marked noindex, addresses that redirect, and duplicates whose canonical points elsewhere do not belong in a sitemap. They send mixed signals, and Search Console flags them.
Not naming the sitemap in robots.txt. A Sitemap: line in robots.txt lets any crawler find it. Submit it in Google Search Console and Bing Webmaster Tools too, to get their reports on it. Google retired its sitemap ping address in 2023, so those are the ways left.
Outgrowing one file. A single sitemap file holds at most 50,000 addresses and 50 MB uncompressed. Past that you need a sitemap index, a file that lists other sitemap files.
How AI Boost for Joomla handles sitemaps
Once you switch it on, AI Boost for Joomla serves a sitemap at yoursite.com/sitemap.xml. There is no file on disk. It builds the sitemap each time one is requested, from what is published at that moment, so a new article is in it the next time a crawler asks.
Articles, categories and menu pages are listed by default. Tag pages stay out until you switch them on. You can leave out chosen articles, categories and menu pages, and addresses you set to noindex in AI Boost drop out by themselves. An article set to noindex in Joomla's own Robots field drops out as well, and leaves llms-full.txt too. Each lastmod is the article's modified date, or its created date if it has never been modified.
It can add each article's intro and full images as image entries, and publish a Google News sitemap alongside the main one. Past 2,000 addresses it switches to a sitemap index whose files hold at most 1,000 addresses each. The Addresses per file setting can split a smaller site earlier.
It writes no <priority> and no <changefreq>. hreflang comes with the Multilang extension, included in every plan. Once you switch Multilang on, the sitemap names each page's other language versions.