We built a tool that tells other people what's wrong with their SEO. The week after we launched it, we pointed it at our own site.

It scored us 62/100.

That was a useful moment for the soul. Here's the full story: what the audit found, the specific fixes we made, and how we moved from 62 to 87 over the following eight weeks. I'm writing it partly because the process is more instructive than theory, and partly because we think a founder case study is more credible than a hypothetical one.

The First Audit: 62 out of 100

We launched GoogleGain in early 2026. The product was working — you could paste a URL, run an audit, get a report. But we'd spent the previous months building the thing, not optimising the site itself. There was a homepage, a login flow, some pricing copy, and not much else.

The audit returned a 62/100, Grade C. The category breakdown:

  • Performance: 71
  • On-Page SEO: 68
  • Technical: 70
  • Mobile: 82
  • Content: 48

The AI summary was blunt: "GoogleGain has a solid technical foundation but thin homepage content and several missing meta elements. The site scores well on mobile but needs more visible text content and stronger on-page optimisation to compete in its category."

Accurate. Fair. Uncomfortable.

What the Audit Actually Flagged

Critical: No blog content and almost no internal links. The content score of 48 was the biggest problem. There were no blog posts, no supporting pages, and no internal links connecting anything. The homepage had around 600 words of visible text — barely enough for Google to understand what the site was about, let alone establish topical authority in the SEO tools space.

Critical: Missing meta descriptions. The login page, terms page, and privacy page all had no meta descriptions. Not the highest-priority pages in terms of rankings, but legitimate gaps that the crawler correctly flagged.

Warning: No structured data. The site had no JSON-LD schema markup of any kind — no Organization schema, no WebPage, no FAQ. No structured data means no chance of rich results in Google Search: no FAQ dropdowns, no sitelinks, nothing that helps the listing stand out.

Warning: No Open Graph tags. Sharing a link to GoogleGain on LinkedIn or Twitter produced a blank card — no image, no title, no description. Not a direct ranking factor, but visibly embarrassing and bad for click-through when people shared the tool.

Warning: Thin homepage content. The homepage explained what the product does but didn't go deep on how it works, what it checks, or why any of it matters. Google had very little to work with to understand the site's topical focus.

Good: Mobile-ready. The viewport meta tag was in place and the layout passed mobile checks. Small win.

Phase 1: The Early Fixes (62 → 74)

Fix 1: Submitted a sitemap to Google Search Console

This should have been done on day one and wasn't. A sitemap.xml tells Google which pages exist on your site and when they were last updated. Without one, Google discovers your pages by following links — which happens eventually, but slowly. Next.js generates sitemaps automatically with the right configuration, so this was a 20-minute job: generate, submit to Search Console, request indexing on the key pages.

Within 48 hours, Search Console was showing impressions for branded queries we hadn't seen registering before. Not traffic yet — just Google acknowledging we existed.

Fix 2: Meta descriptions and Open Graph tags on every page

I wrote meta descriptions for every page that was missing one. The homepage meta description got the most attention — I rewrote it three times until it was both relevant to the keywords we wanted to rank for and compelling enough to earn a click from a search result page.

Then Open Graph tags: og:title, og:description, and og:image on every route. This took about an hour across the codebase. The immediate result was that sharing a GoogleGain link on social platforms now showed a proper card with a title and description — which also meant every share from that point forward was doing quiet brand work.

Fix 3: The first three blog posts

This was the most time-consuming fix and the highest-leverage one. Content was the largest gap in the audit, and the answer was to write genuinely useful SEO guides targeting queries our potential users were actually searching for.

The first three posts covered: why websites don't show up on Google (targeting the question we hear most), how long SEO takes to work (one of the most searched SEO questions), and a comparison of free SEO audit tools (directly relevant to people considering GoogleGain). Each post was 1,200–1,800 words, structured with clear H2 headings, and written for a human first.

Adding these three posts did several things at once: it raised the content score substantially, gave Google much richer signals about the site's topical focus, created internal linking opportunities that hadn't existed before, and generated the site's first non-branded search impressions within two weeks of publishing.

Fix 4: Structured data schema

I added two types of JSON-LD schema to the homepage. Organization schema first — telling Google who we are, our URL, and our logo. Then FAQ schema on the pricing FAQ section, which had seven questions and answers already written and visible on the page.

The FAQ schema was worth the 20 minutes it took. Google can pull FAQ content into search results as expandable dropdowns directly under the listing — more screen real estate, higher click-through rate, and a direct signal that the page has structured, useful content. It's one of the easiest wins in technical SEO for a site that already has a FAQ section.

Re-audit after Phase 1: 74/100

Four weeks after launch, I ran the audit again. 74/100, Grade B.

  • Performance: 74 (up 3)
  • On-Page SEO: 79 (up 11)
  • Technical: 80 (up 10)
  • Mobile: 85 (up 3)
  • Content: 72 (up 24)

The content score improvement was the biggest jump — from 48 to 72 — driven entirely by the three blog posts and the internal links they created. The technical score improved because the sitemap and schema gave Google cleaner, more authoritative signals. The on-page improvement came from the meta descriptions and OG tags.

The audit still had two meaningful warnings remaining. Performance was solid but not excellent, and the homepage content, while better, still wasn't deep enough for a competitive keyword.

Phase 2: The Fixes You Don't Think About (74 → 81)

A 74 felt like solid progress. It also gave me a false sense that the remaining issues were minor. They weren't minor — they were just less obvious. These are the fixes I didn't expect to matter as much as they did.

Fix 5: Canonical tags on every page

The audit flagged a technical issue I'd been meaning to address and kept skipping: there were no canonical tags anywhere on the site. A canonical tag is a line in your page's HTML that tells Google "this is the definitive version of this URL." Without them, Google sometimes indexes both https://googlegain.com and https://googlegain.com/ as separate pages, or treats URL variations as duplicates, splitting ranking signals across multiple versions of the same page.

I added canonical tags across every page — the homepage pointing to https://googlegain.com/, each blog post to its own canonical URL, each static page to itself. It took about an hour, it's invisible to visitors, and it's the kind of thing that compounds quietly over time. Google stopped seeing ambiguity about which version of each URL to rank.

Fix 6: FAQ answers were invisible to Google

This one genuinely surprised me. The homepage FAQ section had seven questions and answers — good content, genuinely useful, schema markup applied. But when I looked closely at how the FAQ worked, I realised the answers weren't in the HTML when Google crawled the page.

The FAQ was built with a JavaScript accordion: clicking a question set a React state variable, which conditionally rendered the answer into the DOM. The answer text simply didn't exist in the page source until a user clicked. Google's crawler doesn't click — it reads the HTML it receives, and the answers weren't there.

We rewrote the FAQ to keep all answer text in the DOM at all times, using CSS to visually hide the collapsed answers rather than React state to omit them from the HTML entirely. The rendered HTML now includes every answer — Google can read all of it, the FAQ schema applies to real visible content, and the user experience is identical. Seven paragraphs of useful SEO content had been invisible to crawlers. Now they weren't.

This is a common mistake. Any time you use JavaScript to conditionally show or hide content, ask yourself: is this content in the HTML source, or does it only appear after user interaction? If it's the latter, Google probably isn't reading it.

Fix 7: Expanding the homepage from 525 words to 1,200+

The content score was still the weakest category, and the audit was specific about why: the homepage had around 525 words of visible text. For a tool competing in the SEO software space — a category full of established players with thousands of words of homepage content — that wasn't close to enough.

I spent a morning writing a "What We Check" section: ten audit categories, each with a short paragraph explaining what we analyse, what good and bad looks like, and why it matters for rankings. Title tags, meta descriptions, page speed, Core Web Vitals, internal links, structured data, mobile optimisation, content quality, image alt text, competitor analysis — each one described in plain English with enough depth to be genuinely useful.

This added around 680 words to the homepage, bringing the total visible text to over 1,200 words. More importantly, it transformed the homepage from a product pitch into something a person could actually learn from — which is exactly what Google rewards. The content wasn't thin padding either: each section referenced something real, included internal links to the relevant blog posts, and answered questions users genuinely have before trusting an SEO tool with their site.

Fix 8: Replacing "Read more" with descriptive anchor text

The blog section on the homepage had three article cards. Each card had a call-to-action link that said "Read more →". Three links on the same page with the same anchor text, pointing to different URLs — which tells Google nothing about where those links go or why they matter.

I updated every blog card link to use the actual article title as the anchor text: "Read: Why Is My Website Not Showing Up on Google? →", "Read: How Long Does SEO Take to Work? →", and so on. The same principle applied to inline links I'd added throughout the page — instead of linking the word "here", I linked the phrase that described the destination.

Descriptive anchor text does two things: it tells Google what the linked page is about, which strengthens that page's relevance for the keywords in the anchor text. And it tells users exactly where they're going before they click, which improves click-through rate. It's a small change that took fifteen minutes and should have been done from the start.

Fix 9: The blog section heading

A minor fix, but worth mentioning because it illustrates how these things add up. The blog section on the homepage had an H2 heading that said "From the blog." Technically correct. Completely uninformative to Google.

I changed it to "Latest SEO Guides from the Blog." Two more keywords, the same number of words, and now Google understands that this section is specifically SEO content rather than some ambiguous blog link. Every heading on every page is a small signal — they're not a magic ranking lever, but a page full of well-written headings gives Google a richer map of what the content covers.

Second re-audit: 81/100

Three weeks after the 74 audit, we were at 81/100, Grade B+.

  • Performance: 76 (up 2)
  • On-Page SEO: 84 (up 5)
  • Technical: 88 (up 8)
  • Mobile: 87 (up 2)
  • Content: 78 (up 6)

The technical score jump reflected the canonical tags and the FAQ visibility fix. The content score improvement came from the homepage expansion. The on-page improvement from the anchor text work. No single fix was transformative on its own — but seven weeks of consistent, specific improvements had moved a 62 to an 81.

One warning remained: page speed. The performance score of 76 was acceptable but not excellent, and the audit was specific about the cause.

Phase 3: Letting the Work Land (81 → 87)

There was no dramatic Phase 3 fix. That's actually the point of this section.

After the Phase 2 changes, I ran the audit again about two weeks later. The score moved from 81 to 87. Nothing new had been deployed. No additional content had been published. The same fixes were in place — we'd just given Google more time to re-crawl and absorb them.

The expanded homepage content — over 1,200 words now, with proper heading structure and internal links pointing to each blog post — was being read and indexed in full. The FAQ answers that had been invisible to crawlers were now part of the indexed content. The canonical tags were reducing the ambiguity Google had been carrying about which URL to treat as authoritative. The descriptive anchor text was strengthening the relevance signals on the pages being linked to.

None of those things register instantly. Google re-crawls pages on its own schedule, and even after it crawls them, the signals need time to propagate through its ranking systems. Running an audit a week after making changes will often show the same score as before. That's not the tool failing — that's how SEO works. You make the changes, you wait, you re-audit.

The two-week gap between the 81 and 87 audits felt frustrating in the moment. In retrospect, it was just the normal lag between doing the work and the work being recognised.

Final audit: 87/100, Grade A

Eleven weeks after launch:

  • Performance: 78 (up 7 from launch)
  • On-Page SEO: 88 (up 20)
  • Technical: 90 (up 20)
  • Mobile: 88 (up 6)
  • Content: 76 (up 28)

Zero critical issues. Two good findings. One remaining warning — content depth — which is the honest position for a site with five blog posts competing in a space full of sites that have been publishing for years. That warning won't go away from a single afternoon of fixes. It closes with months of consistent publishing, which is where we are now.

Grade A felt good. It also felt accurate rather than flattering, which is the only kind of good that matters.

The Honest Takeaway

The jump from 62 to 87 wasn't the result of one clever trick or a single afternoon of work. It was eleven weeks of fixing specific things that the audit told us to fix, in roughly the order of impact, without getting distracted by things that didn't matter yet.

Most of the fixes were unglamorous. Adding canonical tags. Making sure FAQ text was in the HTML. Writing the words "Latest SEO Guides" instead of "From the blog." Changing "Read more" to the actual article title. These feel like footnotes, but they're what the difference between a 62 and an 87 is actually made of.

The encouraging thing — and I mean this genuinely, not as a sales pitch — is that none of this required an SEO background. Every fix came directly from the audit report: here's the problem, here's why it matters, here's what to do. The skill required was reading a clear instruction and executing it. That's a skill any website owner has.

The harder part is knowing which instructions to follow, in what order, on your specific site. That's what an audit is for. Run it, read it, fix the top issue, run it again. The score goes up every time you do.

Run It on Your Own Site

Everything in this post started with a single audit. GoogleGain checks 100+ technical and on-page SEO factors on any public URL and gives you a prioritised fix list in plain English — free, no account needed, results in 30 seconds. You don't need to know anything about SEO to get started.

Run a free audit at GoogleGain →