Hidden Content

Wrap content in hidden: / /hidden to make it invisible on screen but present in the HTML. Screen readers, search engines, and AI crawlers still see it.

When would I use this?

The most common case is adding an H1 heading for SEO without showing it on the page. Some designs — landing pages, hero sections, visually-driven layouts — don't want a visible H1, but search engines expect one. The SEO audit flags pages missing an H1, and hidden: is the fix.

Other uses:

Use case Example
SEO heading Add an H1 that search engines index but visitors don't see
Accessible label Provide context for screen reader users on icon-only buttons
Skip link target Label a content region for keyboard navigation
Supplemental text Add search-indexable content that doesn't fit the visual design

How does it work?

The hidden: fence wraps content in a <div class="sr-only"> element. The CSS uses absolute positioning and clipping to make the element invisible while keeping it in the DOM — the standard screen-reader-only technique used by Bootstrap, Tailwind, and most CSS frameworks.

The content is:

Adding a hidden H1

hidden:
# My Page Title
/hidden

The rest of your page content is visible as normal.

The H1 renders in the HTML with its auto-generated anchor ID, but nothing appears on screen. The SEO audit recognizes it as a valid H1.

Hiding multiple elements

Any markdown works inside the fence — headings, paragraphs, lists, links:

hidden:
# Product Overview

This page showcases our flagship product line with pricing and specifications.
/hidden

button: Shop Now: /shop +big

Combining with alignment

Hidden fences can be used alongside alignment fences. Since the content is invisible, alignment inside a hidden: block has no visual effect, but the HTML structure is preserved:

hidden:
# Welcome to Our Site
/hidden

center:
## Browse Our Collection
/center

Syntax reference

Fence Effect
hidden: / /hidden Visually hide content (screen-reader-only)

Hidden fences are block-level — each fence tag must be on its own line. Content inside fenced code blocks is not processed.