My Agency Site Scored 100 on Lighthouse SEO and Got 0 Leads From Google. Here's What the Score Doesn't Measure.
You ran Lighthouse on your site last night. The SEO circle came back green. A clean 100. Maybe you screenshotted it. Maybe you sent it to a client as proof...
Garvit Sharma
9 June 2026 · 6 MIN READ
My Agency Site Scored 100 on Lighthouse SEO and Got 0 Leads From Google. Here's What the Score Doesn't Measure.
webight.comOn this page
You ran Lighthouse on your site last night. The SEO circle came back green. A clean 100. Maybe you screenshotted it. Maybe you sent it to a client as proof that the SEO is handled.
I had that exact 100 on webight.com. And in the entire life of the site, the number of leads that arrived through a Google search is zero. Every client Webight has ever closed came through referrals and word of mouth. I have never sent a single cold email, so for months I told myself the green circle meant search was covered and Google clients would show up eventually.
In June 2026 I finally audited my own site properly. Mobile scores before: 90 performance, 96 accessibility, 96 best practices, 100 SEO. After: 96, 100, 100, 100. The performance work was real. The hero headline had a 4,190ms LCP render delay because a framer-motion opacity animation sat at opacity 0 waiting for hydration. I swapped it for a pure CSS animation that touches nothing except translateY, and the delay dropped to 382ms. Turning on experimental.inlineCss in next.config.ts removed both render-blocking stylesheets, 22.5 KiB of them. Two leftover third-party scripts got deleted. Security headers went in.
Notice the one number that never moved. SEO was 100 before the audit and 100 after. According to the tool, there was nothing to fix.
The same audit found two genuine SEO problems on that same site:
- Every canonical tag pointed to webight.com, while the server 307-redirected every request to www.webight.com. My pages told Google "the real version of me lives on the apex domain" while my own server pushed every visitor to www. A contradiction, sitting live in the index, on a site scoring 100.
- The sitemap still listed 12 case-study URLs I had deleted months earlier. I was inviting Googlebot to crawl 12 pages that no longer existed.
Lighthouse saw neither. It cannot see them. That is the whole point of this post.
What the 100 actually checks
Lighthouse loads one URL in an emulated phone, parses the HTML, and runs a short list of pass/fail checks. Is there a title tag. Is there a meta description. Do images have alt text. Are links crawlable. Does robots.txt parse. Does the page return a successful status. Is the canonical a valid URL.
Read that last one again. A valid URL. The check passes if the tag exists and the URL inside it is well formed. It does not follow that URL. It does not compare it against your redirect rules. Mine was perfectly well formed and pointed at a host my own server abandons on every single request. Pass.
The tool never queries Google's index. It never opens your sitemap and HEAD-requests the entries. It never checks whether one other website links to you. It never checks whether one human being searches for you. It runs on your laptop, against one page, in isolation, in about 40 seconds.
So a 100 on Lighthouse SEO means exactly this: Google can read this page. That's it. Whether Google has any reason to rank this page is a different question, and no tool that runs locally can answer it.
What ranking actually runs on
There's an old principle from economics called Goodhart's law: when a measure becomes a target, it stops being a good measure. The Lighthouse score became the target for a whole generation of developers, me included. We tuned the thing the tool could see and ignored everything it couldn't.
What it can't see is the entire game. Four things decide whether search sends you customers:
- Demand. Are real people typing queries you could answer? If nobody in your market searches "web design agency Noida pricing", a perfect score on your pricing page returns perfect silence.
- Content. Do you have pages that answer those queries better than the 9 results already ranking? A homepage and a contact form is two pages. That is not an answer to anything.
- Links. Other sites pointing at yours is still the strongest trust signal Google has. Webight had close to none, because referrals happen on WhatsApp, and WhatsApp messages don't pass PageRank.
- Reputation. Reviews, brand searches, your name appearing next to your craft anywhere public. People who heard about us asked for our number. They never needed to search.
For example, my own Search Console over a 90-day window: 309 impressions, 4 clicks, and most of those impressions were people searching our brand name after a referral already told them about us. A 100 score sat on top of that the entire time.
The score audits the container. Customers come from what's inside it and who points at it.
Fixing the two problems the score hid
Both fixes are small. Both matter more than anything Lighthouse flagged.
The host contradiction. Pick one canonical host and make every layer agree. I picked www. One permanent redirect at the framework level:
// next.config.ts
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
async redirects() {
return [
{
source: "/:path*",
has: [{ type: "host", value: "webight.com" }],
destination: "https://www.webight.com/:path*",
permanent: true, // 308, cacheable, passes link equity
},
];
},
};
export default nextConfig;
Then make the canonicals agree with it:
// src/app/layout.tsx
import type { Metadata } from "next";
export const metadata: Metadata = {
metadataBase: new URL("https://www.webight.com"),
alternates: {
canonical: "./",
},
};
The zombie sitemap. My sitemap was a hand-maintained list, which is why 12 dead URLs survived in it for months. Generate it from the routes that actually exist, in code, so a deleted page falls out of the sitemap in the same commit that deletes it:
// src/app/sitemap.ts
import type { MetadataRoute } from "next";
const liveRoutes = ["", "/services", "/work", "/pricing", "/about", "/contact"];
export default function sitemap(): MetadataRoute.Sitemap {
return liveRoutes.map((path) => ({
url: `https://www.webight.com${path}`,
lastModified: new Date(),
changeFrequency: "monthly",
priority: path === "" ? 1 : 0.7,
}));
}
Copy-paste ready. Adjust the host and routes, ship it, then resubmit the sitemap in Search Console.
The checklist after you hit 100
The 100 is the starting line. Here is what I am doing now that the tool has nothing left to say, and what you should do the same week you hit your green circle.
- Open Search Console and read the Queries report for the last 3 months. If your non-brand impressions are near zero, you have your diagnosis already and it has nothing to do with markup.
- Search
site:yourdomain.comon Google. Count the indexed pages. Compare against your sitemap. Any gap in either direction is a real problem the score never showed you. - Pick one host. Make the redirect, the canonicals, the sitemap, and your internal links all agree on it. The code above is the whole fix.
- Write down the 5 exact phrases your buyer would type the day they need you. Google each one. Count how many of your pages could honestly rank for any of them. For most agency sites that count is zero, and that is the real to-do list.
- Publish the money pages. We made our pricing public: landing pages from INR 7,999, full websites from INR 24,999, half upfront, half on delivery. A public pricing page is the only page that targets the query a serious buyer actually types.
- Ask your last 3 clients for a Google review this week. Reviews are search assets you cannot generate from your codebase.
- Give every finished project one public write-up with real numbers, something the client wants to link to. A WhatsApp bot we built brought a boutique hotel 600+ direct bookings without ads. That story earns a link. A score screenshot earns nothing.
See, none of these run on your laptop. None of them finish in 40 seconds. That is exactly why they are the ones that count.
So stop re-running Lighthouse on a site that already scores 100 and open Search Console instead. The tool measures whether Google can read you. The seven steps above decide whether Google has a reason to. One of those numbers pays your invoices, and it is the one without a green circle.
Found something in your own Search Console that confused you? Send it over, happy to take a look.
We build fast websites and automation for small businesses.
The two people who build it are the two you talk to, and every price is on the page.

Garvit Sharma
Full-stack developer and co-founder of Webight, a two-person web and AI studio in India. He writes these from real client work. More about us.
Keep reading
// RELATED'Near Me' Searches in Noida and Gurugram Go to Sites With One Specific Page. Here's the Page.
webight.com'Near Me' Searches in Noida and Gurugram Go to Sites With One Specific Page. Here's the Page.
7 MIN READ
Razorpay, GST Invoices, and Everything Foreign Tutorials Skip When You Build for India
webight.comRazorpay, GST Invoices, and Everything Foreign Tutorials Skip When You Build for India
7 MIN READ
Hindi Search Queries Are Exploding. Almost No Business Has a Page That Answers Them.
webight.comHindi Search Queries Are Exploding. Almost No Business Has a Page That Answers Them.
7 MIN READ