DEV Community

Gavin Builds
Gavin Builds

Posted on

I Debugged Why My 0-Click SEO Tool Site Had Corrupted Titles

PupVax (https://pupvax.com) has been getting about 200 Google impressions per month but zero clicks. Zero.

That felt wrong. If Google is showing your pages, why would nobody click?

I finally dug into the production HTML and found the answer: every page title had corrupted characters. The em dash (—) I used in my Next.js source files turned into replacement characters (��) in the deployed output.

Here is what the title looked like in Google SERPs:

2026 Dog Vaccines Explained �� Core, Non-Core and the Full Schedule | PupVax | 2026 Dog Vaccine Tracker

Three problems in one title:

  1. Mo -jibake (corrupted characters) — looks broken and untrustworthy
  2. Double branding — the page said | PupVax and the layout template added | 2026 Dog Vaccine Tracker
  3. Too long — Google truncates at around 60 characters

The fix (8 pages, one variable)

I went through all 8 pages with em dashes and:

  1. Replaced — with ASCII colon :
  2. Removed page-level | PupVax (layout template handles branding)
  3. Kept everything else the same — same content, same pages, same backlinks

Example:

  • Before: 2026 Dog Vaccines Explained — Core, Non-Core and the Full Schedule | PupVax
  • After: 2026 Dog Vaccines Explained: Core, Non-Core and the Full Schedule | 2026 Dog Vaccine Tracker

Clean, single-branded, no corrupted characters.

Deploy and verify

npm run build passed. Pushed to GitHub. Cloudflare Pages Actions deployed. Verified production HTML — titles are clean.

What I learned

A broken character in a title is not a minor thing. If Google shows your page 200 times and the title looks corrupted, of course nobody clicks. The em dash is a valid UTF-8 character, but something in the Next.js static export or Cloudflare Pages pipeline mangled it. ASCII is safer for metadata.

The bigger picture

I am maintaining 8 small browser tools (all open source on GitHub at Gavin1901). Yesterday freetdee.com got its first click after weeks of sitemap fixes and title optimization. Today I fixed PupVax titles. ZonePlan has 4 indexed URLs out of 89 — that is the next one to tackle.

All 8 tools: https://github.com/Gavin1901/free-browser-tools-index

No frameworks. No SaaS pricing. Just small tools that solve one job, deployed on Cloudflare Pages, pushed by GitHub Actions.

Top comments (0)