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 HTM
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:
- Mo -jibake (corrupted characters) — looks broken and untrustworthy
- Double branding — the page said | PupVax and the layout template added | 2026 Dog Vaccine Tracker
- Too long — Google truncates at around 60 characters
The fix (8 pages, one variable)
I went through all 8 pages with em dashes and:
- Replaced — with ASCII colon :
- Removed page-level | PupVax (layout template handles branding)
- 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.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.