Search

Core Web Vitals Mastery: The Technical Guide That Transformed 300+ Websites

Picture of Tejas

Tejas

My agency’s website dropped from page 1 to page 3 over six months. I blamed algorithm updates, competitor backlinks, content freshness—everything except the obvious problem staring me in the face.

Site was slow as hell. Always had been, honestly. But it looked fast on my MacBook Pro with fiber internet, so I figured everyone else’s experience was similar. Classic developer blindness.

Reality hit when I finally checked Google Search Console properly. Field data showed 87% of mobile users getting terrible Core Web Vitals scores. Took me way too long to connect the dots.

Google’s Three Speed Tests (That I Completely Ignored)

Honestly didn’t even know these existed until my rankings tanked:

  • LCP (Largest Contentful Paint) – basically how fast your main stuff loads. Google wants under 2.5 seconds. I was at 4.2 seconds. Ouch.
  • Interaction to Next Paint (INP) – Response time when users tap or click anything. Target under 200ms. I was hitting 380ms regularly. 
  • Cumulative Layout Shift (CLS) – Whether stuff jumps around during loading. Should be under 0.1. Mine was 0.28 because I never bothered reserving space for dynamic content.

All terrible scores. But here’s what I wish someone told me earlier—Google uses real user data from actual visitors, not those PageSpeed Insights lab scores that show green checkmarks.

Image Disaster (And My Stupid Mistakes)

Our hero image was 2.8MB. A single photo. Took forever to load on mobile networks, but I kept telling myself “image quality matters for conversions.”

Worse, I had lazy loading enabled on everything. Including that critical above-the-fold hero image that users needed to see immediately. Basically forcing the most important content to wait behind everything else.

First optimization attempt went badly. Used some random online compressor that destroyed image quality. Looked pixelated and unprofessional. Had to start over.

Finally discovered TinyPNG—reduced that hero image from 2.8MB to 190KB without visible quality loss. Should’ve done this years ago.

<!– Yeah, I actually did this –>

<img src=”huge-hero.jpg” loading=”lazy”>

<!– Fixed it like this (copied from Stack Overflow) –>

<img src=”hero.webp” width=”800″ height=”400″ 

     fetchpriority=”high” loading=”eager”>

Went from 4.2 seconds to 2.1 seconds. It seemed magical, but it was really just simple optimization that I should have understood. The best value in web optimization I’ve ever seen.

To be truthful, though, I’m still a little afraid of WebP support. Wait for something to go wrong in older browsers. I’m probably fearful, but habits don’t go away.

JavaScript Hell (Still Fighting This)

Added this fancy contact form animation last year. Looked slick in demos, but completely blocked the main thread for 600+ milliseconds. Users would click submit and… nothing. Then everything would happen at once.

Spent an entire weekend trying to optimize the animation library. Performance got worse somehow. Documentation was useless—lots of promises about “optimized rendering” but no actual improvement.

Finally gave up and ripped out the animation entirely. Form now submits instantly. Users don’t miss the fancy effects, and INP dropped from 380ms to 160ms.

Still have issues with our portfolio slider though. That slider thing is still driving me nuts. Might just remove it entirely. In any case, do people use sliders?

function processFormData(data) {
  validateFields(data);
  animateSubmission(); // Why did I feel this was important?
  sendToServer(data);
  showSuccess();
}

// Reduced it to its most basic
function submitForm(data) {
  if (isValid(data)) {
    fetch("/submit", { method: "POST", body: data });
    showMessage("Thanks!");
  }
}

Frustating scroll thing


You might have seen something like you are reading a thing and suddenly a page scrolls down ? Yeah, our site did that constantly. Newsletter signup would load late and push everything around. 

Looked so unprofessional. Like we didn’t know basic web stuff. Clients probably thought we didn’t know basic web development.

Took three attempts to fix properly. First try made the jumping worse. Second attempt broke the signup form entirely—wasn’t collecting emails for two weeks before I noticed.

Third time worked, but only because I basically copied CSS from a tutorial:


.newsletter-container {
min-height: 180px;
background: #f8f8f8;
}

CLS went from 0.28 to 0.06. Good enough, though it still feels hacky.

Hosting Reality Check (Expensive Lesson)

Been using $12/month shared hosting for our agency website. For four years. Kept thinking “we’re not getting that much traffic, why upgrade?”

Server response times averaged 1.6 seconds.  It’s the same story with hardware—using low-quality macbook air parts can slow down a device, just like cheap hosting slows down a website. That’s before any content starts loading. Completely inexcusable for a web development agency.

Moved to WP Engine managed hosting—$35/month hurts the budget, but server response dropped to 280ms. Should’ve done this when we hit our first $10K month.

Current Status (Honest Assessment)

After four months of fixes:

– LCP: 4.2s → 2.0s (finally respectable)

– INP: 380ms → 160ms (still working on this)

– CLS: 0.28 → 0.06 (close enough)

Business results are encouraging:

– Organic leads up about 40%

– Contact form completions doubled

– Mobile bounce rate dropped from 73% to 52%

That portfolio slider still bothers me though. And performance varies wildly on different mobile networks. Sometimes it’s great, sometimes still terrible depending on user’s connection.

Tools I Actually Use

  • Google Search Console – Only shows field data that matters for rankings. Lab scores are useless for business decisions.
  • TinyPNG – Best image compression I’ve found. Simple, effective, doesn’t break quality.
  • Chrome DevTools – Essential for debugging layout shifts, though the learning curve is steep.
  • GTmetrix – Excellent for monitoring progress throughout time Free version covers everything I need.

Tried dozens of other tools. Most of them focus on vanity metrics that don’t affect performance or are unduly complex.

My Advice to My Former Self

Fix the pictures first. Biggest impact for least effort. Everything else can wait until images are optimized properly.

Avoid optimizing everything at once. Attempting to apply all the changes at once caused the site to crash twice. Test fully, one fix at a time.

Pay attention to field data rather than lab results in Search Console. On slow networks, real users are more important than suitable testing conditions.

Update the hosting account as soon as you can. In the short term, shared hosting may save money, yet in the long run, it destroys the reliability and efficiency.

The Unsettling Reality

Core Web Vitals are here to stay. Google’s made site speed a ranking factor, and most competitors are still ignoring it. Fix this stuff now while you still have an advantage.

My rankings are slowly recovering, but it’ll take months to undo the damage. Don’t make my mistake of waiting until traffic drops significantly before taking action.

Still learning this stuff honestly. Web performance is deeper than I expected, and new issues keep appearing as the site grows. But the foundation is solid now, which is more than I could say six months ago.

Picture of Tejas

Tejas

Leave a Reply

Your email address will not be published. Required fields are marked *

Get The Latest Updates

Subscribe to our Newsletter

A key to unlock the world of open-source. We promise not to spam your inbox.

Suggested Reads

Join our 55,000+ Subscribers

    The Wisdm Digest delivers all the latest news, and resources from the world of open-source businesses to your inbox.

    Suggested Reads