Noel Ceta Profile picture
Nov 7 8 tweets 2 min read Read on X
Added lazy loading to all images.

PageSpeed score went from 65 to 92.
Should be great for SEO, right?

Wrong.

Traffic dropped 20%.

LCP (Largest Contentful Paint) went from 1.8s to 4.2s.

The problem? Lazy loaded the hero image.

Here's how to lazy load without killing SEO: 🧵👇
1/ What lazy loading actually does

Lazy loading delays image loading until needed.

Normal loading:

- Browser loads all images immediately
- Slow page load
- Wastes bandwidth

Lazy loading:

- Browser loads visible images only
- Fast initial load
- Loads more as user scrolls

The trap:

- Lazy load EVERYTHING = breaks Core Web Vitals
- LCP image must load immediately
2/ The LCP image rule

LCP = Largest Contentful Paint (biggest visible element).

Usually:

- Hero image
- Header image
- Featured product image
- Banner

Critical rule:
NEVER lazy load the LCP image.

Client's mistake:

html

`
`

Should be:

html

`
`
3/ The correct implementation

Lazy load images below the fold:

html

`
Hero


Product 1
Product 2`

Rule of thumb:

- First 1-2 images: eager (or default)
- Everything else: lazy

Client fix:

- Hero image: eager
- First 3 product images: eager
- Remaining 47 images: lazy

LCP: 1.1s
Traffic recovered within 3 weeks.
4/ The hidden content problem

Lazy loading hidden content = SEO disaster.

Bad pattern:

- Accordion/tabs with lazy loaded content
- Content not in initial HTML
- Google may not see it

Example (wrong):

javascript

`// Load content when tab clicked
$('.tab').click(function() {
$.ajax({url: 'content.html', success: function(data) {
$('.content').html(data);
}});
});`

Google sees empty container.

Fix:
Put content in HTML, hide with CSS.
5/ The JavaScript library pitfall

Many lazy loading libraries are too aggressive.

Common libraries:

- lazysizes
- vanilla-lazyload
- loading="lazy" (native)

Native is best:

html

``

Browser-level support.
No JavaScript needed.
Smart loading strategy.

But remember: Not for LCP images.

Client switched from lazysizes to native.
Simpler. Faster. Better.
6/ Testing lazy loading

Chrome DevTools:

- Performance tab
- Record page load
- Check LCP timing
- Should be <2.5s

PageSpeed Insights:

- Test mobile and desktop
- Check LCP specifically
- Should be green

Real device testing:

- Test on slow 3G
- First image must appear quickly

Client test results:

- Before fix: LCP 4.2s (red)
- After fix: LCP 1.1s (green)
Lazy loading checklist:

✅ DO lazy load images below the fold
✅ DO use native loading="lazy"
✅ DO test LCP after implementation
✅ DO keep content in HTML (not lazy loaded)

❌ DON'T lazy load hero images
❌ DON'T lazy load above-the-fold content
❌ DON'T lazy load critical images
❌ DON'T use aggressive JavaScript libraries

Lazy loading = good for SEO.
Bad implementation = disaster.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Noel Ceta

Noel Ceta Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @noelcetaSEO

Nov 6
Clients always ask: "How much should we spend on SEO?"

The answer isn't a number. It's a formula.

Here's the budget calculator framework: 🧵
1/ The wrong way to budget:

Most companies pick arbitrary numbers:

❌ "Let's spend $2K/month" (based on what?)
❌ "Whatever competitors spend" (different goals)
❌ "What we have left over" (recipe for failure)
❌ "10% of marketing budget" (no logic)

Budget should be based on goals and market reality.
2/ The SEO budget formula:

Monthly SEO Budget = (Goal Revenue ÷ Conversion Value) × Cost Per Acquisition ÷ 12

Variables you need:

- Annual revenue goal from SEO
- Average customer value
- Target conversion rate
- Competitive difficulty score
- Current domain authority

Let's break this down:
Read 14 tweets
Nov 5
301 vs 302. 410 vs 404. 503 vs 500.

Most developers think these are interchangeable.

They're not.

Wrong status code cost a client 40% of their link equity.
Another client's 503 errors during maintenance = 8-week ranking recovery.

The HTTP status codes that actually matter for SEO: 🧵👇
1/ The redirect mistake: 301 vs 302

301 = Permanent redirect

- Passes 90-95% of link equity
- Tells Google: old page is gone forever
- New page inherits rankings

302 = Temporary redirect

- Passes minimal link equity
- Google keeps indexing old page
- Rankings don't transfer

Client used 302 for redesign.
Lost all rankings.
Took 6 months to recover.

Always use 301 unless truly temporary.
2/ The deletion decision: 404 vs 410

404 = Not Found

- Page doesn't exist (maybe temporarily)
- Google recrawls periodically
- Keeps in index for weeks

410 = Gone

- Page deleted permanently
- Google drops from index immediately
- Faster cleanup

Use 410 for:

- Discontinued products
- Expired promotions
- Removed content

Use 404 for:

- Typo URLs (never existed)
- Temporarily unavailable
Read 9 tweets
Nov 4
Client spent $15K on content.
$10K on link building.
$5K on technical optimization.

Traffic still sucked.

The problem? $5/month shared hosting.

Server response time: 3.2 seconds.
Google crawled 80% less than competitors.

Switched hosting → traffic increased 210% in 5 weeks: 🧵👇Image
1/ Server response time kills rankings

TTFB (Time to First Byte) matters:

Under 200ms: Excellent
200-500ms: Good
500ms-1s: Problematic
Over 1s: Rankings killer

Client's cheap hosting:

- TTFB: 3,200ms
- Google crawled slowly
- Crawl budget wasted
- Pages took weeks to index

Competitor on good hosting:

- TTFB: 180ms
- Google crawled aggressively
- Fast indexing
2/ The shared hosting disaster

Shared hosting problems:

- Share server with 100+ sites
- One site gets traffic spike → your site slows
- Limited resources (CPU, RAM)
- Slow database queries
- No server-level caching

Client on GoDaddy shared:

- 500 sites on same server
- Neighbor site got DDoS attack
- Client's site went down
- Google couldn't crawl for 3 days
- Rankings tanked
Read 9 tweets
Nov 4
I analyzed link acquisition patterns across 1,000 websites over 18 months.

Found the "Goldilocks zone" for link velocity that maximizes rankings without triggering penalties.

Here's what the data revealed: 🧵
1/ The study parameters:

Sample size breakdown:

- 1,000 websites tracked (B2B SaaS and ecommerce)
- 200 new sites (0-12 months old)
- 400 established sites (1-3 years)
- 400 mature sites (3+ years)
- Tracked monthly for 18 months
- Measured: link velocity, rankings, penalties
- Total links tracked: 487,000+
2/ Link velocity by site age (optimal ranges):

New sites (0-12 months):

- Safe zone: 5-10 links/month
- Growth zone: 10-15 links/month
- Risk zone: 15+ links/month
- Penalty rate >30 links/month: 23%

Established sites (1-3 years):

- Safe zone: 5-15 links/month
- Growth zone: 10-20 links/month
- Risk zone: 25+ links/month
- Penalty rate >50 links/month: 18%

Mature sites (3+ years):

- Safe zone: 15-30 links/month
- Growth zone: 20-40 links/month
- Risk zone: 50+ links/month
- Penalty rate >70 links/month: 12%
Read 10 tweets
Nov 3
A local HVAC company was getting 30 leads per month from their website.

18 months later: 200+ qualified leads monthly.

Here's the complete local SEO transformation: 🧵
1/ Starting point (Month 0):

Business: HVAC services in Phoenix metro

Website metrics:

- 840 monthly organic sessions
- 30 leads/month (3.5% conversion rate)
- Ranking for 23 local keywords
- Google Business Profile: 4.2 stars, 87 reviews
- 3 service pages, 12 blog posts
- Zero local citations

Revenue from website: ~$45K/month
2/ The transformation strategy (7 pillars):

1. Google Business Profile optimization
2. Local citation building
3. Service area page expansion
4. Content strategy (local-focused)
5. Review generation system
6. Local link acquisition
7. Technical local SEO

Each pillar built on the previous foundation.
Read 13 tweets
Nov 3
The $500/month SEO agency destroyed a client's 10-year-old domain in 4 months.

The $8K/month agency grew their traffic 340% in the same timeframe.

Here's why quality SEO can't be cheap: 🧵
1/ The math doesn't lie:

Quality SEO requires real labor hours:

Minimum monthly deliverables:

- Technical audit & fixes: 12 hours
- Keyword research & strategy: 8 hours
- Content creation (4 articles): 40 hours
- Link building (15-20 links): 30 hours
- Reporting & analysis: 6 hours
- Client communication: 4 hours

Total: 100 hours/month minimum
2/ Breaking down the real costs:

At 100 hours monthly with qualified team:

SEO Strategist ($100-150/hr): 20 hrs = $2,000-3,000
Content Writer ($50-80/hr): 40 hrs = $2,000-3,200
Link Builder ($60-90/hr): 30 hrs = $1,800-2,700
Technical SEO ($80-120/hr): 10 hrs = $800-1,200

Labor alone: $6,600-10,100/month

Before tools, overhead, or profit margin.
Read 11 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(