DEV Community

gan liu
gan liu

Posted on

I Fixed a 122-Character Title Tag Killing My SEO Tool Clicks

The problem

I run 8 free browser tools as a side project. One of them — InvoicePad (https://invoicepad.net/) — has 20+ profession-specific invoice template pages. Think "Freelance Writer Invoice Template", "Web Developer Invoice Template", "Handyman Invoice Template", etc.

I checked Google Search Console this morning and found something brutal: the /invoice-template/freelance-writer/ page had 151 impressions but zero clicks.

Not one click. From 151 times someone saw it in search results.

The root cause

One line of code. All 20+ profession pages were generated from a single Next.js dynamic route. The title template was:

Free 2026 Invoice Template for {Profession}s — Create & Download PDF (No Sign-Up) (2026)
Enter fullscreen mode Exit fullscreen mode

Then the layout template appended | 2026 Free Invoice Generator as a suffix.

The final title tag? 122 characters:

Free 2026 Invoice Template for Freelance Writers — Create & Download PDF (No Sign-Up) (2026) | 2026 Free Invoice Generator
Enter fullscreen mode Exit fullscreen mode

Problems:

  • Two "(2026)" years in one title
  • Three mentions of "Free"
  • Google truncates titles at ~60 characters in SERP
  • The actual search query "freelance writer invoice template" was buried at position 5

The fix

Changed that one line to:

{Profession} Invoice Template — Free PDF Generator
Enter fullscreen mode Exit fullscreen mode

Final title: Freelance Writer Invoice Template — Free PDF Generator | 2026 Free Invoice Generator — 72 characters.

One line. One commit. 20+ pages fixed. Deployed via GitHub Actions to Cloudflare Pages.

What I learned

  1. Check production, not localhost. The em dash (—) looked fine in my dev environment. In production, Next.js + Cloudflare Pages static export rendered it differently.
  2. GSC query data is gold. If I hadn't checked which specific queries were getting impressions, I wouldn't have known "freelance writer invoice template" was the exact phrase people searched for.
  3. Dynamic templates need title audits. When one line generates 20+ pages, a bad title infects everything.

8 free tools I'm maintaining

All built with Next.js + Cloudflare Pages. Source code public at https://github.com/Gavin1901

Top comments (0)