An XML sitemap is a structured file listing your site's URLs with optional metadata like last modified date, change frequency, and priority. For small sites under 50 pages, you can hand-code one following the sitemaps.org schema. Start with the XML declaration, add the urlset namespace, then wrap each URL in a <url> tag containing <loc>, <lastmod>, <changefreq>, and <priority> elements. Most WordPress sites use Yoast SEO or RankMath which auto-generate sitemaps at yoursite.com/sitemap_index.xml. For non-WordPress sites, tools like Screaming Frog can crawl your site and export a compliant XML file in seconds. Online generators work for static sites but break when you add pages. The practical limit is 50,000 URLs or 50MB uncompressed per sitemap file. Larger sites need sitemap index files that reference multiple sub-sitemaps, typically split by content type or date. Include only indexable URLs, canonical versions only, no redirects, no pages blocked by robots.txt, and no URLs returning 404 or 500 errors. Skip thin pages, admin sections, and duplicate content. Priority values between 0.0 and 1.0 don't influence rankings but help you communicate relative importance within your own site structure. Change frequency is largely ignored by Google now. At Ottawa SEO, we generate sitemaps during technical audits using Screaming Frog for accuracy, then validate them against Google's requirements before submission. Common mistakes include listing tens of thousands of low-value pages, forgetting to update the sitemap after site changes, or submitting URLs that 301 redirect. After creating your sitemap, upload it to your root domain, add a reference line in robots.txt like "Sitemap: https://yoursite.com/sitemap.xml", then submit it through Google Search Console and Bing Webmaster Tools. Monitor the coverage reports weekly to catch indexing issues early. A well-maintained XML sitemap doesn't guarantee indexing but removes a technical barrier and speeds up discovery for new or updated content.