8 SEO Mistakes We Fix on Every Beautiful Website
We run a Webflow agency. In the past year, we've audited over 60 websites for clients across France and internationally.
The pattern is always the same: beautiful design, terrible SEO foundation.
Here are the 8 issues we find on almost every site we audit, with the actual code fixes we apply.
1. JavaScript-rendered content
The problem: Content that renders client-side is often missed by Googlebot, especially on initial crawl.
// ❌ Content only exists after JS executes
document.querySelector('.services').innerHTML = `
<h2>Our Services</h2>
<p>Web design, SEO, branding...</p>
`
The fix: Keep all SEO-critical content in static HTML. Use JS for enhancement only.
<!-- ✅ Google sees this immediately -->
<section class="services">
<h2>Web Design Agency Lyon</h2>
<p>Webflow websites optimized for Google...</p>
</section>
For Webflow specifically: never put important copy inside interaction-triggered elements that start invisible.
2. Generic title tags
The problem:
<!-- ❌ Nobody searches for this -->
<title>Welcome | Creative Agency</title>
The fix:
<!-- ✅ Keyword first, 60 chars max -->
<title>Web Design Agency Lyon | Celestia Studio</title>
Rule: 60 characters max, primary keyword first, brand last.
3. Missing or duplicate meta descriptions
The problem: Either blank (Google auto-generates, usually badly) or copy-pasted from page to page.
The fix:
<!-- ✅ Unique, 155 chars max, written like ad copy -->
<meta name="description" content="Webflow agency in Lyon.
We build fast, SEO-optimized websites for SMBs and startups.
Visible on Google from day 1. Free quote in 24h.">
Write meta descriptions as mini-ads: what you offer, for whom, why now, call to action.
4. Bad image alt text and filenames
The problem:
<!-- ❌ Meaningless filename, no alt -->
<img src="IMG_4892.jpg" alt="">
The fix:
<!-- ✅ Descriptive filename, keyword-rich alt -->
<img
src="agence-webflow-lyon-equipe.webp"
alt="Équipe Celestia Studio, agence Webflow à Lyon">
For local SEO: alt text should include the city and service when relevant.
5. Broken heading hierarchy
The problem:
<!-- ❌ Design-first H1 with no keyword value -->
<h1>We Create Stories.</h1>
The fix:
<!-- ✅ One H1, keyword-rich, direct -->
<h1>Webflow Agency for Restaurants and Hotels in Lyon</h1>
<!-- ✅ H2s build the content outline -->
<h2>Why Webflow for your restaurant website?</h2>
<h2>Our recent projects in Lyon</h2>
<h2>Frequently asked questions</h2>
Think of your H tags as the table of contents Google reads to understand your page.
6. Core Web Vitals failures
Beautiful sites often score 30-50 on mobile PageSpeed because of unoptimized hero images, render-blocking fonts, and layout shifts from animations.
The fixes:
<!-- ✅ Preconnect to font origins -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<!-- ✅ Preload the LCP image -->
<link rel="preload" as="image" href="hero.webp" fetchpriority="high">
/* ✅ Reserve space for images to prevent CLS */
.hero-image {
aspect-ratio: 16 / 9;
width: 100%;
}
<!-- ✅ Lazy load below-the-fold images -->
<img src="team.webp" loading="lazy" alt="...">
Target: 85+ on mobile PageSpeed. Below 60 and you're actively losing rankings to competitors.
7. No internal linking strategy
Every page is an island. No links between service pages, no links from blog posts to service pages, no breadcrumbs.
The fix:
<p>
Looking to improve your restaurant's online visibility?
<a href="/services/site-web-restaurant">Our restaurant web design service</a>
includes SEO optimization from day one.
</p>
Rule: Every page should have at least 2-3 internal links. Service pages should receive links from blog posts and the homepage.
8. Missing structured data
No schema markup means Google has to guess what type of content your page is.
For a local business:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Celestia Studio",
"url": "https://celestia-studio.fr",
"telephone": "+33766862479",
"address": {
"@type": "PostalAddress",
"addressLocality": "Agde",
"postalCode": "34300",
"addressCountry": "FR"
},
"areaServed": "Lyon"
}
For FAQ sections:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "How much does a Webflow website cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Our projects start at €1,500 for a professional website with SEO included."
}
}]
}
Validate everything with Google's Rich Results Test before publishing.
The audit checklist
☐ Title tags: unique, keyword-first, <60 chars
☐ Meta descriptions: unique, <155 chars, written as ad copy
☐ H1: one per page, contains primary keyword
☐ H2-H6: logical hierarchy, includes secondary keywords
☐ Images: descriptive filenames, alt text on every image
☐ Core Web Vitals: LCP <2.5s, CLS <0.1, FID <100ms
☐ Internal links: every page receives and gives at least 2
☐ Structured data: LocalBusiness + FAQPage minimum
☐ Sitemap: submitted to Google Search Console
☐ Robots.txt: no accidental noindex
☐ Canonical tags: self-referencing canonicals on all pages
☐ Mobile: 85+ PageSpeed score on mobile
Results
The wine estate I mentioned at the start: 11 clicks in 3 months → 340 clicks/month after applying these 8 fixes. No new content. No backlinks. Just foundation work.
Technical SEO isn't glamorous. But it's the difference between a site that wins awards and a site that wins clients.
We're Celestia Studio, a Webflow agency based in the south of France. We build sites for SMBs who want to be visible on Google and cited by AI (ChatGPT, Perplexity). Free audit at celestia-studio.fr.
Originally published at celestia-studio.fr
Top comments (0)