Blogger SEO audit
Blogger provides fast CDN hosting and a basic sitemap — but has no native JSON-LD, requires Settings changes to enable per-post meta descriptions, and limits structured data to template hacks. Run a free audit to find what's holding back your Blogger or Blogspot site.
Audit your Blogger site free →What DeepSEOAnalysis checks on Blogger sites
Meta tags and Search Description configuration
Blogger's meta tag output depends on configuration in Settings → Crawlers and indexing. The audit checks: whether the Search Description toggle is enabled (required for any per-post custom meta description to appear); whether the blog-level description in Settings → Basic → Description is set and within 155 characters; whether post-level Search Description fields are populated for published posts or whether Blogger is falling back to auto-generated excerpts (which frequently exceed optimal meta description length and are not keyword-specific). The audit checks the `meta name="description"` tag in the rendered HTML for each post — Blogger outputs this tag only when Search Description is enabled and a value is set. For the homepage, Blogger uses the blog description. For label archives (/search/label/), Blogger generates a page-name-based meta description with no customisation option. Title tag coverage is also checked: Blogger uses the post title field as the HTML title tag (typically formatted as "Post Title - Blog Name"), which means the post title serves double duty as both the displayed post heading and the browser title/search result headline — the audit checks for overly long combined titles exceeding ~60 characters.
Custom robots.txt and Robots Header Tags configuration
Blogger provides two settings for robots configuration. (1) Custom robots.txt (Settings → Crawlers and indexing → Custom robots.txt): the custom robots.txt replaces Blogger's default robots.txt entirely when enabled. The default Blogger robots.txt is permissive (allows all crawlers), but without customisation it cannot block specific paths, add AI crawler allowances, or specify the sitemap URL. The audit checks whether a custom robots.txt is configured, whether it includes a Sitemap directive pointing to the blog's sitemap.xml, whether it correctly handles Blogger's dynamic URL variants (/?m=1 mobile versions, /search/ paths), and whether AI crawlers (GPTBot, ClaudeBot) are explicitly handled. (2) Custom robots header tags (Settings → Crawlers and indexing → Custom robots header tags): Blogger can set per-page-type robots directives — Homepage, Archive and search pages, Post and page items individually. The audit checks whether label archive pages (/search/label/) are set to noindex (recommended, as these are thin content aggregation pages), whether the homepage and post pages are set to index/follow, and whether any unintentional noindex is set on post pages. A common Blogger misconfiguration is setting all pages to noindex during setup and forgetting to remove it — the audit flags any noindex on post and page items.
JSON-LD structured data via template and HTML Gadgets
Blogger generates no JSON-LD structured data by default. The audit checks whether structured data has been added via the available mechanisms. For BlogPosting/Article schema, the audit inspects the rendered HTML of post pages for the presence and validity of Article or BlogPosting JSON-LD (checking for required properties: headline, datePublished in ISO 8601 format, author with @type Person and name, image with url and absolute path, and url matching the canonical). Blogger template variables can be used to dynamically populate Article JSON-LD per post (using `<data:post.title/>`, `<data:post.url/>`, `<b:eval expr="data:post.date.iso8601"/>` for datePublished). The audit also checks for Organisation and WebSite JSON-LD in the `head` (typically added via template HTML widget or direct template edit), and FAQPage schema on any pages structured as FAQs. For GAdsense-enabled blogs: Blogger's AdSense integration injects advertising scripts that can delay page rendering — the audit checks whether any injected scripts create render-blocking issues or conflicts with structured data.
Sitemap and URL structure
Blogger auto-generates sitemap.xml at /sitemap.xml (updated on publish). The audit verifies: that the sitemap returns valid XML and is accessible; that it includes the most recent posts (noting the 500-post limit); that sitemap URLs match the canonical URL format (https vs http, custom domain vs blogspot.com, with or without www); and that the sitemap URL is submitted in Google Search Console. URL structure: Blogger generates post URLs from the post title by default, using the format /YYYY/MM/post-title.html. The .html extension is permanent on Blogger and cannot be removed without a URL redirect setup — the audit checks whether post URLs are keyword-descriptive within this constraint. Label archive pages (/search/label/[label]) and date archives (/YYYY/MM/) are checked for noindex status (these should be noindexed to avoid diluting crawl budget and creating thin content). Custom redirects in Settings → Search preferences → Errors and redirects allow mapping old URLs to new ones — the audit checks for any redirect chains in configured custom redirects. For blogs with custom domains: the audit confirms that the custom domain is properly configured (HTTPS, www/non-www canonical consistency) and that Blogger's blogspot.com subdomain either redirects to the custom domain or is properly canonicalised.
Core Web Vitals for Blogger sites
Blogger serves pages from Google's own CDN infrastructure, which provides consistently fast TTFB globally — typically under 200ms even for uncached pages. This is a significant performance advantage over self-hosted platforms. However, other Core Web Vitals present Blogger-specific challenges: (1) LCP — Blogger's default templates load the blog's JavaScript widgets and Gadgets synchronously, which can delay rendering of the LCP element (typically the post's first image or the H1 headline). Images uploaded to Blogger are served from Google's CDN (bp.blogspot.com) in their original format — Blogger does not automatically convert to WebP or resize. Large uploaded images that are downsized by CSS (rather than srcset with properly sized variants) inflate page weight. (2) CLS — Blogger's AdSense ad units and social sharing widgets load asynchronously and can cause layout shift if no space is reserved. Label cloud widgets, popular posts widgets, and other sidebar gadgets load dynamically and may shift layout. (3) INP — Blogger's template JavaScript (for mobile-responsive toggling, search widget, comment loading) and any AdSense scripts create main thread work that affects interaction responsiveness. Third-party widgets (Disqus comments, social buttons, share counters) compound this.
AI visibility signals on Blogger
The five AI visibility signals on Blogger: (1) AI crawler robots.txt access — Blogger's default robots.txt does not block any crawlers, meaning GPTBot, ClaudeBot, and PerplexityBot can access Blogger sites by default. With a custom robots.txt, explicit allowances can be added. The audit verifies AI crawlers are not blocked. (2) llms.txt — Blogger does not provide a way to place a file at the root of the domain (/llms.txt) through standard Blogger settings. Blogs on blogspot.com subdomains have no server filesystem access. Blogs on custom domains hosted through Blogger also lack filesystem access. This is a platform limitation — llms.txt is not achievable on standard Blogger configurations, and the audit flags this as a gap. (3) FAQPage JSON-LD — achievable via template modification or HTML Gadget; the audit checks for FAQPage schema on relevant posts. (4) Question-heading ratio — whether ≥20% of H2/H3 headings in post content are phrased as questions. In Blogger's post editor, heading tags are controlled by the author through the format toolbar (Heading 2, Heading 3 options), and question-format headings are an editorial decision. (5) Content chunkability — whether post content sections average ≤400 words per heading; again an editorial practice independent of the platform.
Blogger SEO setup workflow
- Enable Search Description — go to Settings → Crawlers and indexing → turn on Search Description. Without this, no custom meta descriptions are possible per post.
- Configure Custom Robots Header Tags — Settings → Crawlers and indexing → Custom robots header tags → set Archive and search pages to noindex. This noindexes label archives and date archives.
- Add a Custom robots.txt — Settings → Crawlers and indexing → Custom robots.txt. Include a Sitemap directive pointing to /sitemap.xml and AI crawler allowances if desired.
- Add site-wide JSON-LD via Template editor — Theme → Edit HTML → add Organisation and WebSite JSON-LD in the `<head>` section. Use Blogger template variables for dynamic post-level Article schema.
- Submit sitemap to Google Search Console — add your blog's /sitemap.xml in GSC → Sitemaps. For blogs with more than 500 posts, create additional sitemap references.
- Fill Search Description for every post — open the post editor, find Search Description in the sidebar (visible after enabling the setting), and enter a keyword-relevant, 155-character-max description unique to each post.
Blogger SEO FAQ
- Does Blogger support custom meta descriptions?
- Yes, but only if you enable Search Description in Blogger\'s settings first. By default, Blogger uses an auto-generated excerpt as the meta description. To enable custom meta descriptions per post: go to Settings → Crawlers and indexing → turn on "Search Description." Once enabled, each post and page shows a Search Description field in the post editor (sidebar → Search Description). The meta description you enter there is used in the rendered HTML `meta name="description"` tag. Without enabling this setting, all posts use auto-generated excerpts, which are typically too long (truncated at ~150 characters) and not keyword-relevant. For the Blogger homepage (the blog\'s index page), the description comes from Settings → Basic → Description. This text also appears in the blog\'s header on many Blogger templates. Blogger does not offer per-label-archive or per-date-archive custom meta descriptions — these pages use auto-generated content. For SEO purposes, label archive pages (/search/label/[label]) can be noindexed in Settings → Crawlers and indexing → Custom robots header tags → set "Archive and search pages" to noindex.
- Can I add JSON-LD structured data to Blogger?
- Yes — Blogger allows adding HTML via the Template editor and via Gadgets (widgets). The most practical methods for adding JSON-LD structured data: (1) **Site-wide structured data via Template editor**: go to Theme → Edit HTML. In the `head` section of the template, add a `script type="application/ld+json"` block with your Organisation and WebSite schema. Be careful editing the template directly — a syntax error will break the blog\'s rendering. (2) **Per-post structured data via HTML Gadget**: Blogger does not allow per-post HTML injection from a single widget. For Article JSON-LD on individual posts, you must either add it to the template (and use Blogger\'s template variables like `<data:post.title/>`, `<data:post.url/>`, `<data:post.timestamp/>` to populate the schema dynamically) or accept that per-post Article schema requires template-level Blogger XML widget coding. For sites where Article schema is important (news sites, recipe sites), the template approach is the most scalable option. (3) **Static page structured data via HTML Gadget**: Blogger\'s layout editor allows adding HTML/JavaScript Gadgets to specific layout sections — these appear on all posts or on the index page, not on individual posts by default. Google accepts JSON-LD in the `body` as well as the `head`, so a Gadget containing the JSON-LD script block is a valid placement. Verify implementation with DeepSEOAnalysis after any structured data changes.
- How does Blogger generate its sitemap?
- Blogger auto-generates a sitemap.xml at /sitemap.xml for your blog (custom domain) or at yourblog.blogspot.com/sitemap.xml. The sitemap is generated automatically and updated when posts are published or updated — no manual submission to update is required. However, Blogger\'s sitemap has a significant limitation: it only includes the most recent 500 posts. Blogs with more than 500 published posts will not have all posts included in the auto-generated sitemap. For blogs exceeding 500 posts, you can create a sitemap index that references multiple partial sitemaps. Blogger also provides an Atom feed at /atom.xml and /feeds/posts/default, which can serve as an alternative discovery mechanism for Googlebot. The sitemap should be submitted in Google Search Console under the Sitemaps section with your blog\'s full sitemap URL. Additionally, Blogger allows a custom robots.txt (Settings → Crawlers and indexing → Custom robots.txt) where you can specify the Sitemap directive pointing to your sitemap URL.
- What are the biggest SEO limitations of Blogger?
- The primary Blogger SEO limitations: (1) **No native JSON-LD structured data** — Blogger generates no Article, BlogPosting, FAQPage, or other schema markup by default. Adding structured data requires editing the XML template directly or using HTML Gadgets, both of which require technical knowledge and care. (2) **Limited meta tag control** — per-post title and description require the Settings → Crawlers and indexing toggle for descriptions, and post titles are always derived from the post title field (you can\'t set an SEO title that differs from the display title without template modification). (3) **Label (category) archive pages** — label archives at /search/label/[label] are thin content pages with no unique content that often dilute topical authority. Best practice is to noindex them in Settings → Crawlers and indexing → Custom robots header tags. (4) **Sitemap limited to 500 posts** — blogs with more than 500 posts need additional sitemap management. (5) **robots.txt via URL parameter pages** — Blogger generates multiple URL variants for the same content (/?m=1 mobile versions, /feeds/ URLs, /search/label/ archives) that can create duplicate content if not properly handled. (6) **Limited performance optimisation** — Blogger serves pages from Google\'s CDN (good TTFB globally), but Blogger template resources (CSS, JavaScript widgets) are bundled by Google and cannot be selectively removed. (7) **Template-dependent rendering** — all SEO implementation depends on the active Blogger template; switching templates can break previously configured structured data or meta tags.