Build1 publisher3 min readPublished
A 200-post blog audit found three defects, none of them visible on the author's own screen
The find rate was low and the fixes were small. What made the exercise work was a read-only pass against five written questions and two shipped versions that could each be reverted alone.
The Engineer · Build desk
Drafted by a language model from the sources cited here and checked against its claim ledger before publication. How we use AISend a correction
What happened
- The author of a technical blog stopped adding posts for a week and audited all of his roughly 200 posts, read-only first, then fixed only what the audit justified.
- Three things were broken, and none of them were visible on the author's own screen.
- The audit was framed around five questions rather than SEO wins: is the most important heading on a post page consistent across posts; do theme-generated headings collide with headings typed into post bodies; are accessibility strings marked as hidden actually hidden; does anything break on a narrow mobile viewport; if a fix goes wrong, can it be rolled back.
- The author cites Google's SEO Starter Guide as explicit that there is no magic number of heading elements that ranks better, and that semantic heading structure is useful primarily because it describes the document and screen reader users depend on it; his stated goal was a more predictable document, not a ranking claim he could not back up.
- On a themed blog the platform renders the post title and the editor renders the body separately; managed independently long enough, this produces the site name, the post title, and a body heading all rendered as h1.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
A developer who runs a technical blog stopped publishing for a week and audited all of his roughly 200 posts, read-only first, fixing only what the audit justified [1]. Three things were broken, and according to his write-up on dev.to, none of them were visible on his own screen [2].
The framing is the interesting part. He did not go looking for ranking wins; he went in with five questions: whether the most important heading is consistent across post pages, whether theme-generated headings collide with headings typed into bodies, whether the accessibility strings marked as hidden are actually hidden, whether anything breaks on a narrow mobile viewport, and whether a bad fix can be rolled back [3]. He anchors the heading question to Google's own SEO Starter Guide, which states there is no magic number of heading elements that ranks better, and that semantic heading structure matters because it describes the document and screen reader users depend on it [4]. The goal was a more predictable document, not a ranking claim [4].
The first defect is structural and specific to hosted themes: the platform renders the post title and the editor renders the body separately, so over years you can end up with the site name, the post title, and a body heading all shipping as `<h1>` [5]. He fixed the shared template first, then swept every post for body-level `<h1>`. Five posts had them, eight headings in total [6]. That is roughly 2.5 percent of the archive [7], which is the honest scale here: the audit's value is not the volume of fixes.
The second defect is the one worth stealing. The post-list search box carried `<span class="screen-out">Search within this list</span>`, a standard screen-reader-only label, except there was no `.screen-out` rule in the stylesheet, so the class did nothing [8]. On desktop that was easy to miss; on a phone the text wrapped to two lines and squashed the search input beside it [9]. Deleting the span is the tempting fix and the wrong one, because it removes the only thing telling a screen reader what the input is for [10]. He added a clip-based visually-hidden rule instead, deliberately avoiding `display: none` and `visibility: hidden`, which remove the element from the accessibility tree, and `left: -9999px`, which can scroll the viewport sideways when the element takes focus [11]. Afterwards, at a 390px viewport, the search region measured 343px with a 275px input and no horizontal overflow [12] - about 47px of viewport left over [13].
The third discipline is release hygiene. He could have bundled both fixes into one theme update and did not: v1.6.4 for heading structure, v1.6.5 for the visually-hidden label style, each with its own archive, its own entry in the platform's theme library, and a recorded SHA-256 of the deployed bundle [14]. The stated reason is rollback: if something surfaces in a week, "the update I did on Tuesday" does not identify what to revert [15]. His minimum rules are back up the live theme first, keep one version number per coherent change, and record what was verified on the public site [16]. He notes both the editor preview and the theme-editor preview misled him at least once, because caching, template placeholders and editor-generated HTML mean the code you saved is not necessarily the HTML that ships [17]. So "fixed it" and "confirmed it on the live URL" stayed separate steps [18].
What to watch: whether the versioned rollback path is ever exercised, and whether the same five questions applied to list, category and search views separately [19] turn up defects at a higher rate than the post pages did.