An XML sitemap for a Blogger blog is a small UTF-8 text file that lists every public post and static page you want indexed, wrapped in the official <urlset> schema, and you can generate one locally in your browser by pasting your reviewed URL list into the XML Sitemap Generator and downloading sitemap.xml — no crawling, no server upload, and no external account required. Every <loc> entry points to an absolute HTTP or HTTPS URL on the host your blog is actually served from, the optional <lastmod>, <changefreq>, and <priority> tags appear only when the same value is genuinely true for every entry on the file, and the output is capped at 10,000 unique URLs and 10,485,760 bytes of UTF-8 XML. The tool is a list-to-XML utility rather than a crawler, so the work that decides quality happens before you press generate: which post slugs to keep, which label and archive URLs to exclude, which dates to record as the last significant update, and which canonical host your blog currently resolves to. Step the output through that preparation and the file you publish will pass the protocol's basic structural checks without a third-party submission service.
Blogger, also known as Blogspot, already publishes a couple of default feeds that crawlers can stumble across. They are useful as raw material for your custom file, but on their own they expose more than most publishers actually want indexed. The workflow below treats those feeds as a starting list and the XML Sitemap Generator as the place where that list becomes a strictly structured file you can host under your own control.

Understanding Blogger's Default Sitemap Feeds
Blogger makes three feeds available without any configuration. The first is the Atom feed at /atom.xml?redirect=false&start-index=1&max-results=500, paginated with a start-index parameter when you have more than 500 entries, which returns every published post in reverse chronological order along with the static pages that share the same publishing flow. The second is the legacy RSS endpoint at /feeds/posts/default, useful for cross-checking that a slug has actually been published rather than stuck as a draft. The third is the platform-level crawl endpoint at /sitemap.xml?page=1&pagesize=100, which is what crawlers such as Googlebot already discover and pull when they crawl the blog.
Those default feeds inherit everything you have published, which means they include label index pages like /search/label/seo, date archive roots like /2024/ or /2024/03/, the on-site search URL /search, and any redirect chains that have not been cleaned up. A custom sitemap, built from a URL list you have reviewed, lets you exclude those targets, fix canonical hosts, and add a meaningful <lastmod> when you genuinely know when each post last changed.
Curate the URL List for Your Blogger Blog
The first concrete step is to assemble the URL list the generator will consume. Two reasonable starting points are the Atom feed and the platform sitemap. Pull each one as raw XML, run it through the Sitemap URL Extractor to land with one absolute URL per line, and then prune the result by hand before you paste it into the generator. The generator refuses to silently drop bad input, so a clean list is the difference between a one-click generation and a debug session.
When you prune, anchor the list on the host your blog is actually served from. If the blog is still on yourblog.blogspot.com, every line must start with https://yourblog.blogspot.com/. If the blog has been moved to a custom domain such as https://www.example.com/, every line must start with that domain instead, including the www subdomain you serve on, because the protocol treats different hostnames as different sites for sitemap purposes. Strip the www or add it consistently across the whole file.
What to Include and What to Skip
- Include: every published post URL with the .html slug, every static page URL under /p/, the homepage, and any per-author or about page you intentionally want indexed.
- Include conditionally: archive roots only when each archive has unique content of its own; if the archive is a thin index, exclude it.
- Skip: /search and any URL containing ?q= or ?updated-max=, /search/label/* label index pages unless a specific label page is genuinely a destination article, and any draft, scheduled, or private URL that has not been published.
- Skip: any URL containing #, because fragments are not sent to the server as part of the HTTP request and the generator will reject them rather than normalize them away.
- Skip: any URL that still embeds user:pass@ credentials, because publishing a credentialed URL in a public sitemap is a leak you don't want.
Generate the Blogger Sitemap XML
- Open the XML Sitemap Generator in the current browser tab.
- Paste one absolute HTTP or HTTPS URL per line into the URL list field, with one host (and any non-default port) used consistently across the whole file.
- Leave the optional lastmod, changefreq, and priority fields blank if you do not have one truthful shared value for every entry, then come back to the next section if you do.
- Click Generate and read the preview pane and the reported counts of accepted, duplicate, and invalid lines.
- Download the file using the Download sitemap.xml button; the file is named sitemap.xml and the download uses a temporary Object URL scoped to the current result.
- Open the downloaded file in a plain text editor and confirm that the first line is the UTF-8 XML declaration, the root element is <urlset> with the http://www.sitemaps.org/schemas/sitemap/0.9 namespace, and that a handful of <loc> entries read back exactly as you pasted them.
Generation runs entirely in the current browser tab, so URLs and the resulting XML never leave your machine. Editing the URL list or any option after a successful generate immediately revokes the previous Object URL and clears the old XML, the old download, and any stale error state, so a single click is enough to start over after fixing a typo.
Optional Metadata for the Whole File
Every optional field in the generated XML applies the same value to every <url> entry, so treat the decision as global policy rather than per-page tuning. <lastmod> accepts a YYYY-MM-DD date or a full date-time with seconds and either a Z or a valid UTC offset, and the tool rejects any value with leading or trailing whitespace, an out-of-range calendar field, or a malformed timezone; only fill it in when one shared date is honestly the last significant modification of every page in the file. <priority> accepts a decimal between 0.0 and 1.0 and, per the sitemaps.xml protocol documentation, is a hint rather than a ranking signal. The seven valid values for <changefreq> are:
| Value | Honest application |
|---|---|
| always | Pages that change on every access; rarely truthful for any Blogger page. |
| hourly | Live news desks, breaking-event landing pages. |
| daily | Front page of an active blog updated within the last 24 hours. |
| weekly | Standard Blogger cadence of a few posts per week. |
| monthly | Episodic series or columns with a clear monthly rhythm. |
| yearly | Reference guides and evergreen cornerstone content. |
| never | Archived material kept online for the historical record. |
If any single line in the optional fields is invalid, the tool fails the entire generation rather than quietly emitting half-valid XML. This is deliberate: a partially correct sitemap is harder to debug than a clean rejection that points at the offending line.
Limits, Errors, and Final Review Before Publishing
The protocol permits up to 50,000 URLs and up to 52,428,800 uncompressed bytes per file according to the sitemaps.org spec, but the in-browser generator uses lower whole-file budgets to bound preview and Blob memory without pretending to be a server-scale utility. Practical limits to plan around are 10,000 unique URLs per file, 5,000,000 UTF-16 input code units across the URL list, and 10,485,760 UTF-8 XML bytes in the output. The 10,000th unique URL is accepted and the next unique URL fails; the exact 10,485,760-byte boundary is accepted and one byte more is rejected; the limits are all-or-nothing, with no preview ellipsis or partial download returned.
The URL validator, per the implementation methodology, also rejects bare domains, relative paths, FTP URLs, raw control characters, malformed percent escapes, embedded credentials, and fragments on every nonblank line, and treats leading or trailing whitespace on a nonblank line as an error rather than silently trimming it. HTTP and HTTPS for the same host are allowed together in one file because the protocol's "one host" rule is on the hostname, not the origin, but mixing example.com with example.com:8443 fails because a non-default port is part of the serialized host. Duplicates are removed in first-seen order, with later occurrences incrementing the duplicate count rather than emitting a second <url>.
Before you publish, do a sanity pass on the listed pages themselves: confirm every URL still resolves with a 200 status, that none of the post URLs return a redirect chain you forgot about, that <lastmod> is the date of the last meaningful edit rather than a trivial template tweak, and that no private, blocked, or noindex page slipped through the URL list. The generated file is only as accurate as the list and the optional metadata you supply.
Host sitemap.xml and Submit It
The sitemap must be served from the same host (including any non-default port) it represents, per the single-host rule. On a custom-domain Blogger blog, that means uploading the file to the host that serves www.example.com, either through your registrar's static-file area, a CDN bucket aliased to the blog, or a small GitHub Pages or Netlify deployment pointed at the same domain. On a Blogspot-hosted blog, where there is no traditional file system, the practical pattern is to host the file on a path you control and to treat the blog's robots.txt or template header as the place where you point crawlers at the external URL.
Two final steps round out the workflow. First, reference the sitemap from the host's robots.txt with a line such as Sitemap: https://www.example.com/sitemap.xml; this is the only widely supported way to advertise a sitemap without editing the page template. Second, submit the exact sitemap URL in Google Search Console under Sitemaps, using https://www.example.com/sitemap.xml (or the host and path you chose), and let the report surface any genuine coverage problems the file did not already prevent. For more on the structural rules, the Google Search Central guide to building and submitting a sitemap remains the canonical reference alongside the sitemaps.xml protocol itself.