shopify
Shopify H1 best practices: copy, length, and SEO impact in 2026
Shopify H1 best practices for 2026: one H1 per page, the 40-70 char sweet spot, product vs homepage H1s, JSON-LD matching, and the Dawn/Sense/Refresh defaults.

The H1 is the most over-discussed and under-tested element on a Shopify page. Most stores ship one of three failure modes: the homepage that uses the brand name as its H1, the product page where the H1 doesn't match the product title in JSON-LD, or the section template that quietly renders two H1s because the merchant duplicated a Rich Text block. This guide is the technical and copy-side reference we wish existed — what to put in the H1, how long it should be, how Dawn/Sense/Refresh handle it by default, and the SEO knock-on effects of getting any of it wrong.
TL;DR
- One H1 per page. Always. Anything else confuses both screen readers and search crawlers.
- Product page H1 = product title. Don't get clever. Match it byte-for-byte with
Product.namein your JSON-LD. - Homepage H1 should be a value proposition, not your brand name. Your
<title>and logo already carry the brand. - Length sweet spot is 40-70 characters for organic ranking pages, 20-40 for above-the-fold conversion headlines.
- H1 and meta title have different jobs — the meta title sells the click in the SERP; the H1 confirms the promise once the visitor lands.
- Don't restyle to fake a heading. A
<p>styled to look big is invisible to SEO and screen readers.
The one-H1-per-page rule, and why Shopify themes break it
HTML5 technically allows multiple H1s if you nest them inside <article> or <section> landmarks. In practice, Google still treats the page as a single document and reads them all. Screen readers do too. So the working rule for any ecommerce page is: one H1, full stop.
The most common way Shopify stores break this is by accident. A merchant drops a Rich Text section onto the homepage, sets the heading size to H1 in the dropdown, and now the page has two — one from the hero section and one from the Rich Text. Dawn's image-banner.liquid and rich-text.liquid both let you pick the heading tag, so it's on you to keep count.
| Page type | Expected H1 | Where it lives in Dawn |
|---|---|---|
| Homepage | Value prop / hero headline | sections/image-banner.liquid |
| Product page | Product title | sections/main-product.liquid |
| Collection page | Collection title | sections/main-collection-banner.liquid |
| Blog post | Article title | sections/main-article.liquid |
| Cart / Checkout | Page name (Your cart) | sections/main-cart-header.liquid |
Product page H1: it's the product title, and it's not negotiable
On a product detail page (PDP), the H1 must be the product title. This isn't a stylistic choice — it's structural. The Product.name field in your JSON-LD schema, the <title> tag, the H1, the og:title meta, and the breadcrumb leaf should all match. When they drift, Google flags the page as ambiguous and your rich result eligibility degrades.
{%- comment -%} Dawn's default product H1 wiring {%- endcomment -%}
<h1 class="product__title">
{{ product.title | escape }}
</h1>
{%- comment -%} The JSON-LD must match exactly {%- endcomment -%}
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": {{ product.title | json }},
"description": {{ product.description | strip_html | json }}
}
</script>Two things to watch for. First, if you've customized your PDP to show a marketing tagline above the product title and bumped it to <h1>, you've broken the match. Second, if your product titles are short and generic (The T-Shirt), your H1 will rank for nothing. The fix is at the data level — improve the product title in Shopify Admin — not in Liquid.
Homepage H1: the brand-name trap
About half of Shopify homepages we audit have their brand name as the H1 — usually because the hero section's heading field was left blank or the merchant typed the brand in there reflexively. This is the single most common SEO own-goal in the platform.
Your brand name is already in the <title>, the logo alt, the favicon, and the schema Organization markup. Burning the H1 on it is throwing away the most valuable on-page slot for what visitors actually came to find: what you sell and why they should care.
| Bad homepage H1 | Better homepage H1 |
|---|---|
Acme | Plant-based skincare for sensitive skin |
Welcome to Acme | Hand-poured candles, made in Brooklyn |
Acme — Official Store | The desk that grows with your setup |
Home | Sustainable basics, shipped in 48 hours |
If you're stuck on what to write, this is a copy problem, not a code problem. We covered the full framework in our headline copywriting for Shopify guide — five-second test, audience-first phrasing, and the value/curiosity/proof triangle.

Collection page H1: title plus context
Collection H1s are the easiest win in Shopify SEO and the most often ignored. The default in Dawn renders collection.title — which means Best Sellers or New Arrivals becomes your H1 on what is functionally a category landing page. Generic, and useless for ranking.
If the collection is a real category (not a merchandising bucket like Best Sellers), edit the collection title in Shopify Admin to something a customer would actually search. Women's running shoes ranks. Sneakers doesn't. You can keep the navigation menu label short while the H1 / title field carries the longer phrase — Shopify lets you set them independently via the Navigation menu's custom label.
{%- comment -%}
Default Dawn collection H1.
Note: settings.show_collection_description controls whether a
paragraph appears below — turn it on and write a 40-60 word
intro to give the H1 keyword context.
{%- endcomment -%}
<h1 class="collection-hero__title">
{{ collection.title | escape }}
</h1>
{%- if section.settings.show_collection_description and collection.description != blank -%}
<div class="collection-hero__description rte">
{{ collection.description }}
</div>
{%- endif -%}The 40-70 character sweet spot
There's no Google-enforced limit on H1 length, but visual and behavioural data converges on 40-70 characters for organic landing pages. Below 40 and the H1 underperforms in search interpretation; above 70 and it wraps to three lines on mobile and gets visually dismissed. For above-the-fold hero H1s where conversion matters more than ranking, 20-40 is the better band.
| Page intent | Target char count | Why |
|---|---|---|
| Above-the-fold homepage hero | 20-40 | Glanceability, mobile fold |
| Product page (PDP) | 30-60 | Product names should be precise, not long |
| Collection / category page | 40-70 | Long-tail keyword room |
| Blog article | 40-70 | Long-tail keyword room + SERP CTR |
Counting characters in your head is a waste of time. Run document.querySelector('h1').textContent.trim().length in the console once per template — homepage, a representative PDP, a representative collection, a blog post — and you've audited 90% of your store.
Keyword placement: front-load, don't stuff
The single keyword placement rule that matters: put the primary search term in the first half of the H1. Eye-tracking studies and crawler weighting both bias toward the left edge. Women's running shoes for flat feet outperforms Comfortable footwear designed for women with flat feet who run.
- Lead with the noun, not the adjective.
Running shoesranks;Comfortable, lightweight shoes for runnersdoesn't. - One primary keyword per H1. Secondary terms belong in H2s and body copy.
- Don't keyword-stuff with separators.
Shoes | Sneakers | Trainers | Running Shoesreads as spam to both humans and crawlers. - Match search intent, not search volume. A high-volume term that mismatches the page tanks your bounce rate, which Google notices.
H1 vs meta title: same page, different jobs
These two get conflated constantly. They're not the same field, they're not the same audience, and they don't have the same job. Most Shopify themes will fall back to the H1 for the meta title if you leave it blank — but you should never leave it blank.
| Field | Meta `<title>` | H1 `<h1>` |
|---|---|---|
| Lives in | <head> | <body> |
| Seen by | Search result page, browser tab | Visitor on the page |
| Job | Sell the click | Confirm the promise |
| Length | 50-60 chars | 40-70 chars (organic) / 20-40 (hero) |
| Brand? | Yes — append brand | No — already implied |
| Sales-y? | Yes — use CTAs | Optional — clarity beats sell |
Example: a meta title of Plant-Based Skincare for Sensitive Skin (Free Returns) - Acme pairs with an H1 of Plant-based skincare for sensitive skin. Same primary keyword, but the meta sells the click with the parenthetical incentive and the brand suffix; the H1 keeps it clean because the visitor has already arrived.
JSON-LD: where mismatches cost you rich results
Shopify auto-generates JSON-LD for product pages via product | json_ld, and most themes inject it. The name field in that schema must match your H1 character-for-character. Drift here is the leading cause of products dropping out of rich result eligibility — the merchant page-stuffs the H1 with (Free Shipping) while the JSON-LD stays clean, and Google flags it as ambiguous.
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Cedarwood Soy Candle - 8oz",
"image": ["https://cdn.shopify.com/.../candle.jpg"],
"description": "A hand-poured soy candle...",
"offers": {
"@type": "Offer",
"price": "24.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}If the H1 reads Cedarwood Soy Candle - 8oz and the JSON-LD name reads Cedarwood Soy Candle, you have a problem. Test every template once with Google's Rich Results Test — it'll flag the mismatch as a warning.
Accessibility: how screen readers pronounce your H1
The H1 is the first heading a screen reader announces after the page landmarks. NVDA, JAWS, and VoiceOver all read it verbatim — including punctuation, separators, and any clever Unicode characters. A few practical rules:
- Avoid pipes and bullets (
|,•) in the H1 — VoiceOver reads them asvertical lineandbullet. Use an em-dash or comma. - Spell out ampersands if your brand voice can stand it —
&is read asandbut pauses awkwardly in compound nouns. - Don't put critical words inside `aria-hidden` spans, even for styling. The screen reader skips them entirely.
- Styling never replaces structure. A
<p>withfont-size: 2.5remlooks like a heading, ranks like a paragraph, and reads like a paragraph to screen readers.
What Dawn, Sense, and Refresh do by default
All three of Shopify's first-party themes follow the same conventions but with different defaults. Useful to know before you start customizing.
| Theme | Homepage H1 default | PDP H1 default | Heading tag pickable in editor? | Risk of dup H1s |
|---|---|---|---|---|
| Dawn | First image-banner heading | product.title (always H1) | Yes (H1-H4) | High |
| Sense | First image-banner heading | product.title (always H1) | Yes (H1-H4) | High |
| Refresh | First image-banner heading | product.title (always H1) | Yes (H1-H6) | Medium |
All three themes will happily render two H1s if a merchant flips the heading dropdown on a second section. None of them surface a warning. This is why the 10-second document.querySelectorAll('h1') audit is non-optional.
Above-the-fold conversion vs organic ranking
A homepage hero H1 and an organic-traffic landing page H1 have different priorities. The hero is read in two seconds by a visitor who already clicked — it should be short, evocative, and conversion-focused. The collection or blog H1 is the first thing a Google visitor sees in the SERP-to-page transition — it should match the search query and reassure the visitor they're in the right place.
If you're optimizing the hero specifically, we have a conversion checklist for above-the-fold Shopify content that covers H1, sub-headline, CTA, and trust signals as a system. The H1 is one of five elements that have to work together, not in isolation.
Good vs bad H1s, by page type
| Page | Bad H1 | Good H1 |
|---|---|---|
| Homepage | Welcome | Hand-poured candles, made in Brooklyn |
| Homepage | Acme Co. | The desk that grows with your workspace |
| PDP | Buy Now! | Cedarwood Soy Candle — 8oz |
| PDP | T-Shirt | Heavyweight cotton crewneck, garment-dyed |
| Collection | Products | Women's running shoes for flat feet |
| Collection | Best Sellers | Top-rated kitchen knives under $100 |
| Blog post | Our latest blog post | How we cut shipping time in half (without losing margin) |

A 5-minute H1 audit for your store
- Open your homepage. Run
document.querySelectorAll('h1').lengthin the console. Confirm1. - Read the actual H1 text. If it's your brand name,
Welcome, orHome— rewrite it as a value proposition. - Open a representative PDP. Confirm the H1 matches
product.titleexactly. Check JSON-LDnamematches. - Open a representative collection page. If the title is a marketing bucket (
Best Sellers), consider whether it could be a real category instead. - Open a blog post. Confirm the article title is H1 and the page chrome (like sidebar widgets) isn't using H1.
- Run a screen reader pass with VoiceOver (Cmd+F5 on Mac) on the homepage. Listen to how the H1 reads aloud. Awkward? Rewrite.
About the author
The Pulsar team
Shopify text styling
Pulsar is the easiest way to stylize headlines in your Shopify store — colors, gradients, animated highlights and circles, no theme code required.
Install Pulsar — Free


