A sitemap doesn't make Google rank a post higher. What it does is make sure Google finds the post at all, and finds it fast — which matters more than it sounds like it should, especially for a new blog with few inbound links pointing crawlers toward it.
This covers what a sitemap needs to contain and how to keep it accurate. For everything else a post needs before publishing, see the technical SEO checklist.
What a sitemap actually does
Without one, a search engine finds your pages by crawling links — starting at your homepage, following every link it finds, eventually reaching a new post if something else on the site links to it. That works, but it's slow and depends entirely on your internal linking being good.
A sitemap is a direct list instead: every URL on your site, handed to the crawler in one file, so it doesn't have to discover pages by chance. For a blog that publishes regularly, this is the difference between a new post getting crawled within hours versus days.
What it needs to contain
A minimal valid XML sitemap:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://yourdomain.com/post-slug</loc>
<lastmod>2026-07-27</lastmod>
</url>
</urlset>
<loc> is the only field that truly matters — the full, canonical URL of the page. <lastmod> (last modified date) is genuinely useful, since it signals to a crawler that a page changed and is worth re-fetching. <priority> and <changefreq> are part of the spec but Google has stated for years it largely ignores both — worth including for completeness if your generator adds them automatically, not worth hand-tuning.
The one rule that actually matters: only list canonical URLs. If a page is reachable at more than one URL (a tag archive and a direct post URL, for instance), the sitemap should point to the one you want indexed — see the canonical tag section of the technical SEO checklist if you haven't set those yet.
Generating it depending on your setup
Static site generators typically handle this via a plugin that runs at build time: jekyll-sitemap for Jekyll, Hugo generates one by default, @astrojs/sitemap for Astro. Configure it once, and it regenerates automatically every time you build and deploy — see Astro blog vs Blogizi for what that setup involves compared to a platform that handles it for you.
Hosted platforms and dedicated blogging tools commonly generate and update this without any configuration — Blogizi builds and serves a sitemap per project automatically, kept current as posts publish, with no plugin to install or rebuild step to trigger.
GitHub Pages with plain HTML (no generator) is the case where you're building this by hand or scripting it yourself — see GitHub Pages vs Blogizi for the fuller picture of what that entails.
Pointing crawlers to it
Two places should reference the sitemap so it's actually found:
robots.txt, which should include a line like:
Sitemap: https://yourdomain.com/sitemap.xml
Google Search Console, where you can submit the sitemap URL directly under Sitemaps in the left nav. This is worth doing even though robots.txt alone is often sufficient — Search Console also shows you which submitted URLs were actually indexed versus skipped, which is useful diagnostic information a robots.txt reference doesn't give you.
Keeping it accurate as the blog grows
The main failure mode isn't a missing sitemap — it's a stale one: URLs that 404 because a post was deleted or a slug changed, or new posts that are missing because the sitemap only regenerates on a build you forgot to trigger. If your platform or generator regenerates the sitemap automatically on every publish, this isn't something to think about again. If you're maintaining one by hand or via a build step you control, it's worth a periodic spot check — pull up the sitemap URL directly and confirm your most recent post is actually listed.