Writing SEO Headlines That Don’t Feel Like a Root Canal
A/B testing headlines without burning your soul
If you’ve ever written five versions of a headline and lost sleep trying to guess which one slaps harder — welcome. You’re doing it right. But only if you’re actually collecting data after the guesswork carnival. I used to just swap out titles and hope for the best — a/k/a vibes-based SEO. Then I met Google Optimize (before it got folded), and things started clicking.
One approach that works: publish the post with a default headline, then run a split test on just the headline element using query params or a little JS. Track clicks to the article using UTM parameters or sessions — not just search impressions. CTR in Search Console is helpful-ish, but kinda blurry. If you’re tight with your data layer setup, feeding variants and click origins into GA4 events can paint a clearer picture.
Also, A/B testing in email subject lines ends up bleeding into headline writing too. Same energy. I once found a headline with a year-date in it performed worse because it felt too… markety. “2024 Guide” was getting beat by “How I finally fixed this weird SEO thing.”
Weird discovery: CTR went up after removing the word ‘Fast’ from a title. People don’t always want fast. They want understandable.
Google’s title rewrite chaos and how to dodge it
So Google does this thing now: it rewrites your title tags in SERPs, even if you lovingly crafted the perfect one. Sometimes it grabs your H1 instead. Or worse, frankenstitches parts of your title with your site name — or the meta description. And yes, it’s not entirely consistent.
I had a post where the HTML title was “Best VPS Hosting Tricks You’ve Never Tried,” but Google showed “Cheap VPS: Hosting Tricks from a Former Web Guy.” Cool! Except — no part of that was in my title tag. What happened? The page had a subheadline that said “This cheap VPS trick came from running too many niche sites,” and the domain used to have a blog tagline with “Former Web Guy.” Somewhere in the HTML soup, Google grabbed those.
To rein it in a bit:
- Make your H1 and title tag aligned, not identical — Google favors consistency
- Say your key descriptor near the front of title and h1 (e.g., “Newsletter Emails” instead of “Why I Send…”)
- Use site names sparingly — if at all — unless your brand matters in clicks
- Add a logical colon or pipe structure only if it makes human sense (not just SEO style)
Oh, and avoid sentence-case headlines if they look like paragraphs. Google sometimes mistakes those as content, not titles, and rewrites them completely. Looks minor, but it tripped one of my templates into showing something like “Learn to write better” when it was supposed to be “How I Wrote Subject Lines People Actually Opened.”
The real difference between clickbait and clickable
This is going to piss off someone: it’s okay for headlines to be a little clickbaity. Are you trying to inform users or make sure they actually read your post before making a judgment? Because dry honesty won’t get eyes.
I had one article that brutally underperformed because the headline was dead factual: “Using SPF and DKIM to Authenticate Email.” I changed it to “Why Your Newsletter’s in Spam (and How to Fix It),” and traffic quadrupled. SEO was the same. What changed was the phrasing from their point of view. You’ve still gotta deliver on the headline’s promise — otherwise bounce rate smacks you.
Undocumented edge case: WordPress SEO plugins like RankMath or Yoast won’t warn you if your meta title tag is syntactically broken due to unclosed conditionals (bad merge tags). Google ignores the broken string and grabs your H1 if it feels like it.
Don’t ignore emotional suggestion — but don’t force it
“This Broke My Subscriber Count in a Good Way” pulled better than “How I Increased Newsletter Open Rates.” Even though it was the same blog. Same markup. But the former provokes a story, the latter just reports a result.
Where headlines get stripped inside mail clients
Fun fact I learned after watching a Mailchimp campaign tank: fancy punctuation and emojis in subject lines break differently depending on the email reader. I once sent a campaign with the title “ The Only Blogger Headlines That Worked in 2023” — and guess what? The
turned into a square on Outlook 2013 and an empty box on iOS 15. Meta titles matter here, too — because Gmail clips if the preheader and title together exceed around 90 chars.
Also: Gmail’s Promotions tab actually scans subject lines and first 50 words of your body. Words like “exclusive,” “results,” or even “ebook” can shoot your email to the secondary tab. Headlines with urgency (“before Friday!”) are flagged more often. But not always. Because of course not.
- Test your headlines in real inboxes — not just those preview apps like Litmus
- Don’t lead with “Free” unless you want to flirt with spam filtering
- If your title gets cut off mid-emoji in Gmail, the bytes will clip the Unicode wrong
- Yes, MailerLite handles symbols differently than ConvertKit
” ” becomes
�
in some charset fallbacks. Caught this in a Thunderbird preview while debugging a client’s weird newsletter truncation.
How title markup works (and breaks) in most CMSes
I’ve seen so many people assume that what they typed in their CMS title box is what ends up in the HTML <title>. Yeah, no. In Ghost, for example, the “title” heading is just your h1. The real meta title comes from the SEO config or gets auto-generated from your permalink. Same for Notion-published blogs — unless you set Open Graph titles, you never know what gets scraped.
Weird Ghost quirk: If you use a colon in your post title, Ghost truncates everything after it in the structured metadata. So “Writing Headlines: What I Learned” becomes “Writing Headlines” in OG preview unless you manually override it. That one cost me a preview card on Twitter for a week, and I only noticed because of a Reddit thread laughing at my broken snippet.
CMS Title Pitfalls Checklist:
- Auto-generated OG or Twitter card titles often come from excerpt or subtitle fields, not title tags
- If your CMS allows curly quotes in titles, those can break JSON-LD scripts and ruin rich results
- Certain reddit scrapers grab first H2, not H1 or meta — especially in outdated bots
- If your theme uses h1 inside article, and page template has another h1, Google gets confused
- Site name injection: Some CMSes forcibly append your site title to every generated <title>, especially Squarespace and Shopify
Aha moment: I found a rogue plugin appending an invisible `<meta title=”title”>` tag. Not valid HTML. But Google still sometimes showed that string in snippets. Gah.
When CTR tanks are caused by stuff you forgot existed
You know what torched one of my campaign’s click-through rates? A broken favicon. Not even kidding — Chrome on Android stops showing a site icon in Discover if it can’t load your favicon through HTTPS. And since Discover results blend in with native content cards, not having an icon makes you look like spam or filler.
Another time, I spent 30 minutes troubleshooting poor mobile performance on a post… turned out I had an inline style on the headline that collapsed it to zero height on iOS Safari. Title tag was fine. H1 existed. But human users couldn’t see it. And guess what? That trickled back to click-to-dwell time in metrics.
Hidden title = soft bounce. The headline exists, but if no one reads it, does it even convert?
These headlines worked — for reasons I still don’t fully trust
Here’s the part no SEO tool tells you: some stuff just works and you never really know why. These are real titles pulled from campaigns that had high clickthroughs despite lacking “best practice” syntax:
- “This Email Made 8 People Subscribe Immediately” — vague but legit
- “Why You’re Still Getting 0 Clicks on Your Blog Posts” — accusatory but accurate
- “I Deleted This Plugin and Everything Went Faster” — drama-coded but technical
- “Turns Out Nobody Reads My Weekly Newsletter” — honest and oddly clicky
The common thread? Conversational tone, enough friction to create a story, no overoptimization. These didn’t have colon splits or keyword stuffing. They just sounded like someone actually said them in a Slack thread.
Googlebots don’t care. But humans click them. That’s all that clicked with me.