If you build or customize Blogger themes, you’ve probably bumped into mysterious attributes on the opening <html> tag: things like b:layoutsVersion, b:defaultwidgetversion, b:render, b:css,
b:js, and the familiar XML namespaces for b, data, and expr. They look small, but they control big pieces of how your template renders—what layout engine is used, which gadget model is active, whether
Blogger injects stock CSS/JS, and how expressions are parsed.
This guide translates those switches into plain English. We’ll walk through what each attribute does, when to use it, and the gotchas that tend to trip people up. You’ll get copy-ready code, a step-by-step setup, deeper explanations, advanced tricks, FAQs, and a quick troubleshooting section—so you can ship clean, fast, and predictable Blogger themes.
Introduction: HTML, XML, and Blogger’s Template Engine
At its core, a Blogger theme is HTML with XML-flavored templating. The browser sees normal HTML, but before that, Blogger’s server parses the template: resolving data tags, evaluating expr: expressions, and applying layout logic. That’s why
the root <html> element often carries XML namespaces and b:* attributes—these tell the template engine how to interpret and assemble your final page.
You’ll also see references to <?xml ... ?> and <!DOCTYPE html>. The doctype declares modern HTML5 to the browser. The optional XML prolog is not required for Blogger themes and can be omitted; what matters most are
the namespaces and b:* attributes on <html>.
Step-by-Step: Set the Right XML & Blogger Attributes
-
Start with a valid HTML5 shell.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Document</title> </head> <body>
