SEO Audit
70
Overall score

https://www.clinicdermatech.com/cd-lush

Audit #681 · started 4 months ago · 47.34 s · triggered by site_audit
✓ 31 pass ! 23 warn ✗ 5 fail · 71 total checks
meta
45
headings
90
schema
0
technical
94
sitemap
100
ssl security
80
page speed
71
links
88
images
75
content
55
mobile
100
hreflang
100
geo
50
spam security
—
domain security
—
⚠️
28 issues need attention
Open the for prioritised, copy-paste-ready fixes with location and AI-personalised suggestions.

Fix progress

0 of 28 issues fixed · Est. time left: 16h 0m
0%
Severity: | Showing / 28 | PDF CSV
Critical meta Fail priority 97/100 −100 pts Trivial · ~5m

Title tag present

No <title> tag was found in <head>.

Location in HTML
Line 1 · html > head
>    1  <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/2a65768255d6b625-s.p.d19752fb.woff2" as="font" crossorigin="" typ…
     2                      sticky top-0
Generic best practice

Every page must have a unique, descriptive <title> tag inside <head>. 30-60 characters, primary keyword first.

Code fix
Before:
<head>
  <!-- no <title> tag -->
</head>
After:
<head>
  <title>Your Page Title (30-60 chars)</title>
</head>
AI suggestion (context-aware)
Generating personalised suggestion…
High page speed Fail priority 83/100 −70 pts Medium · ~45m

Largest Contentful Paint

Poor: 10.5s.

Generic best practice

Largest Contentful Paint should load within 2.5s. Optimise the largest above-the-fold element: compress hero images, preload critical assets, and eliminate render-blocking resources.

Code fix
Before:
<img src="hero.jpg">
After:
<link rel="preload" as="image" href="hero.webp">
<img src="hero.webp" fetchpriority="high" width="1200" height="600" alt="...">
AI suggestion (context-aware)
Generating personalised suggestion…
High meta Fail priority 78/100 −100 pts Trivial · ~5m

Meta description present

No meta description found.

Location in HTML
Line 1 · html > head
>    1  <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/2a65768255d6b625-s.p.d19752fb.woff2" as="font" crossorigin="" typ…
     2                      sticky top-0
Generic best practice

Add a meta description (120-160 characters) summarising the page. It appears under the title in search results and directly affects click-through rate.

Code fix
Before:
<head>
  <!-- no meta description -->
</head>
After:
<head>
  <meta name="description" content="Compelling 120-160 character summary describing what's on this page and why a user should click.">
</head>
AI suggestion (context-aware)
Generating personalised suggestion…
High meta Warning priority 65/100 −60 pts Easy · ~15m

OpenGraph image present

Missing <meta property="og:image">.

Location in HTML
Line 1 · html > head
>    1  <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/2a65768255d6b625-s.p.d19752fb.woff2" as="font" crossorigin="" typ…
     2                      sticky top-0
Generic best practice

Add an Open Graph image so links to this page render as a rich card on social platforms. Use 1200x630 px, JPEG/PNG, under 1MB.

Code fix
Before:
<head>
  <!-- no og:image -->
</head>
After:
<head>
  <meta property="og:image" content="https://yoursite.com/og-image.jpg">
  <meta property="og:image:width" content="1200">
  <meta property="og:image:height" content="630">
</head>
AI suggestion (context-aware)
Generating personalised suggestion…
High schema Fail priority 62/100 −100 pts Medium · ~45m

JSON-LD structured data present

No JSON-LD scripts found.

Generic best practice

Add structured data (JSON-LD) so search engines understand your content type. Schema can trigger rich results — stars, prices, FAQs — that increase click-through rate.

Code fix
Before:
<!-- no JSON-LD -->
After:
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Page title",
  "author": {"@type": "Person", "name": "Author name"},
  "datePublished": "2026-01-01"
}
</script>
AI suggestion (context-aware)
Generating personalised suggestion…
Medium technical Warning priority 66/100 −40 pts Easy · ~15m

Canonical URL present

No canonical link tag found.

Location in HTML
Line 1 · html > head
>    1  <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/2a65768255d6b625-s.p.d19752fb.woff2" as="font" crossorigin="" typ…
     2                      sticky top-0
Generic best practice

Add a canonical link to prevent duplicate-content issues. It tells search engines which URL is the authoritative version of this page.

Code fix
Before:
<head>
  <!-- no canonical -->
</head>
After:
<head>
  <link rel="canonical" href="https://www.clinicdermatech.com/cd-lush">
</head>
AI suggestion (context-aware)
Generating personalised suggestion…
Medium page speed Warning priority 64/100 −43 pts Medium · ~45m

PageSpeed performance score

Score 57/100 — improve.

Generic best practice

Open Lighthouse in Chrome DevTools or PageSpeed Insights — the report lists specific opportunities ranked by impact.

AI suggestion (context-aware)
Generating personalised suggestion…
Medium page speed Warning priority 64/100 −40 pts Medium · ~45m

First Contentful Paint

Needs improvement: 2.85s.

Generic best practice

First Contentful Paint should be under 1.8s. Inline critical CSS, defer non-critical CSS/JS, and use a CDN.

AI suggestion (context-aware)
Generating personalised suggestion…
Medium images Warning priority 63/100 −40 pts Easy · ~15m

Images have dimensions

44/52 images have explicit dimensions.

Location in HTML
Line 6 · div.cd-lush-root > div.sticky:nth-of-type(3) > div.relative > div.flex > a.h-13 > img.w-full
     5                      bg-[#341A21] text-white z-24!
>    6                  "><div class="relative w-full z-50 py-1"><div class="flex justify-between items-center"><a class="h-13 lg:h-auto max-w-[100px] md:max-w-[120px] lg:max-w-[100px] 2xl:max-w-[120px] cursor-pointer shrink-0" href="/"><img alt="c…
     7   The staff kavita Shrivastav was humble and professional<span>...</span><span class="cursor-pointer text-lightBrown font-semibold text-nowrap">Read More</span></p></div></div></div></div><div class="swiper-slide px-0! pb-6 md:pb-8"><div cla…
Generic best practice

Set explicit width/height on every <img> to prevent Cumulative Layout Shift. Browser reserves the box before the image loads.

Code fix
Before:
<img src="photo.jpg" alt="...">
After:
<img src="photo.jpg" width="800" height="600" alt="...">
AI suggestion (context-aware)
Generating personalised suggestion…
Medium content Warning priority 62/100 −50 pts Medium · ~45m

E-E-A-T: Expertise

Moderate:

Generic best practice

Show expertise: author bio with credentials, citations to reputable sources, in-depth coverage of the topic, technical accuracy.

AI suggestion (context-aware)
Generating personalised suggestion…
Medium content Warning priority 62/100 −50 pts Medium · ~45m

E-E-A-T: Trustworthiness

Moderate:

Generic best practice

Add trust signals: clear contact info, privacy policy, terms of service, customer reviews, security badges, real photos of team/location.

AI suggestion (context-aware)
Generating personalised suggestion…
Medium meta Warning priority 59/100 −60 pts Trivial · ~5m

OpenGraph title present

Missing <meta property="og:title">.

Location in HTML
Line 1 · html > head
>    1  <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/2a65768255d6b625-s.p.d19752fb.woff2" as="font" crossorigin="" typ…
     2                      sticky top-0
Generic best practice

Add og:title for social-media link previews. Without it, shared links fall back to the page <title>, which may not be ideal for Facebook/LinkedIn cards.

Code fix
Before:
<head>
  <!-- no og:title -->
</head>
After:
<head>
  <meta property="og:title" content="Your social-friendly title">
</head>
AI suggestion (context-aware)
Generating personalised suggestion…
Medium meta Warning priority 59/100 −60 pts Trivial · ~5m

OpenGraph description present

Missing <meta property="og:description">.

Location in HTML
Line 1 · html > head
>    1  <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/2a65768255d6b625-s.p.d19752fb.woff2" as="font" crossorigin="" typ…
     2                      sticky top-0
Generic best practice

Add og:description so links shared on Facebook/LinkedIn show a preview blurb. Falls back to meta description if missing, but a tailored one converts better.

Code fix
Before:
<head>
  <!-- no og:description -->
</head>
After:
<head>
  <meta property="og:description" content="Punchy social-share blurb, 90-150 chars.">
</head>
AI suggestion (context-aware)
Generating personalised suggestion…
Medium page speed Warning priority 59/100 −50 pts Easy · ~15m

Compression enabled

No gzip/brotli content-encoding header.

Generic best practice

Enable gzip or Brotli compression on your server. Typically cuts text payload by 70-80% — easy LCP win.

AI suggestion (context-aware)
Generating personalised suggestion…
Medium images Warning priority 59/100 −60 pts Medium · ~45m

Modern image formats

No images use webp/avif.

Generic best practice

Convert images to WebP or AVIF — typically 25-50% smaller than JPEG/PNG with no visible quality loss. Use <picture> for fallback.

Code fix
Before:
<img src="photo.jpg">
After:
<picture>
  <source type="image/avif" srcset="photo.avif">
  <source type="image/webp" srcset="photo.webp">
  <img src="photo.jpg" alt="...">
</picture>
AI suggestion (context-aware)
Generating personalised suggestion…
Medium content Warning priority 58/100 −50 pts Hard · ~120m

E-E-A-T: Experience

Moderate:

Generic best practice

Demonstrate first-hand experience: original photos, personal anecdotes, before/after results, screenshots from the actual product/service.

AI suggestion (context-aware)
Generating personalised suggestion…
Medium content Warning priority 58/100 −50 pts Hard · ~120m

E-E-A-T: Authoritativeness

Moderate:

Generic best practice

Build authoritativeness: links from respected sites in your niche, mentions in industry publications, About page detailing your expertise.

AI suggestion (context-aware)
Generating personalised suggestion…
Medium ssl security Warning priority 54/100 −40 pts Easy · ~15m

HSTS header present

Missing strict-transport-security header.

Generic best practice

Add Strict-Transport-Security header so browsers refuse HTTP for your domain after the first visit. Bumps SSL Labs grade to A+.

Code fix
Strict-Transport-Security: max-age=31536000; includeSubDomains
AI suggestion (context-aware)
Generating personalised suggestion…
Medium content Fail priority 53/100 −70 pts Medium · ~45m

Readable prose

Flesch reading ease 26.5 — very difficult.

Generic best practice

Simplify your prose. Shorter sentences (15-20 words), smaller words (1-2 syllables), more paragraph breaks. Target 8th-grade reading level for a general audience.

AI suggestion (context-aware)
Generating personalised suggestion…
Medium geo Warning priority 48/100 −50 pts Medium · ~45m

Content provides clear answers

Moderate (5/10).

Generic best practice

Lead each section with a direct, citable answer to the question users would ask. AI engines (ChatGPT, Perplexity) cite the clearest, most specific sentences.

AI suggestion (context-aware)
Generating personalised suggestion…
Medium geo Warning priority 48/100 −50 pts Medium · ~45m

High factual density

Moderate (5/10).

Generic best practice

Add concrete facts — numbers, dates, percentages, named sources. Vague prose doesn't get cited; specific data does.

AI suggestion (context-aware)
Generating personalised suggestion…
Medium geo Warning priority 48/100 −50 pts Medium · ~45m

Structured for AI extraction

Moderate (5/10).

Generic best practice

Add bulleted lists, sub-headings, definitions, and TL;DR sections. AI engines prefer clearly structured content for extraction.

AI suggestion (context-aware)
Generating personalised suggestion…
Medium geo Warning priority 48/100 −50 pts Medium · ~45m

Cites authoritative sources

Moderate (5/10).

Generic best practice

Cite authoritative external sources (links, references). Pages that cite reputable sources are themselves cited more often.

AI suggestion (context-aware)
Generating personalised suggestion…
Medium headings Warning priority 45/100 −50 pts Easy · ~15m

Heading hierarchy

Heading levels skipped 2 times.

Generic best practice

Headings should descend logically: H1 → H2 → H3, no jumps. Skipping levels (H1 → H3) breaks accessibility tools and confuses crawlers.

Code fix
Before:
<h1>Page Title</h1>
<h3>Section</h3>  <!-- skipped H2 -->
After:
<h1>Page Title</h1>
<h2>Section</h2>
<h3>Subsection</h3>
AI suggestion (context-aware)
Generating personalised suggestion…
Low links Warning priority 43/100 −50 pts Easy · ~15m

Descriptive anchor text

23% of anchor texts are generic ("click here", etc.).

Generic best practice

Replace generic anchor text ("click here", "read more") with descriptive phrases containing the target page's keywords. Anchors are a strong relevance signal.

Code fix
Before:
<a href="/laptops">click here</a>
After:
<a href="/laptops">programming laptops review</a>
AI suggestion (context-aware)
Generating personalised suggestion…
Low meta Warning priority 40/100 −60 pts Trivial · ~5m

Twitter card present

Missing <meta name="twitter:card">.

Location in HTML
Line 1 · html > head
>    1  <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/2a65768255d6b625-s.p.d19752fb.woff2" as="font" crossorigin="" typ…
     2                      sticky top-0
Generic best practice

Add a twitter:card meta tag to control how Twitter renders shared links. Use "summary_large_image" with an og:image for the best preview.

Code fix
Before:
<!-- no twitter:card -->
After:
<meta name="twitter:card" content="summary_large_image">
AI suggestion (context-aware)
Generating personalised suggestion…
Low ssl security Warning priority 39/100 −40 pts Trivial · ~5m

X-Content-Type-Options

Missing x-content-type-options header.

Generic best practice

Add X-Content-Type-Options: nosniff so browsers honour the Content-Type and don't MIME-sniff for malicious files.

Code fix
X-Content-Type-Options: nosniff
AI suggestion (context-aware)
Generating personalised suggestion…
Low ssl security Warning priority 32/100 −40 pts Medium · ~45m

CSP header present

Missing content-security-policy header.

Generic best practice

Add a Content-Security-Policy header to block XSS by whitelisting allowed script/style sources.

Code fix
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'
AI suggestion (context-aware)
Generating personalised suggestion…
Fail Title tag present
title_present
No <title> tag was found in <head>.
Fix: Add a unique, descriptive <title> tag.
Actual: missing
Expected: present
Fail Meta description present
meta_description_present
No meta description found.
Fix: Add a compelling 120–160 character meta description.
Actual: missing
Expected: present
Warning OpenGraph title present
og_title_present
Missing <meta property="og:title">.
Fix: Add the og:title meta tag for rich social previews.
Actual: missing
Expected: present
Warning OpenGraph description present
og_description_present
Missing <meta property="og:description">.
Fix: Add the og:description meta tag for rich social previews.
Actual: missing
Expected: present
Warning OpenGraph image present
og_image_present
Missing <meta property="og:image">.
Fix: Add the og:image meta tag for rich social previews.
Actual: missing
Expected: present
Warning Twitter card present
twitter_card_present
Missing <meta name="twitter:card">.
Fix: Add the twitter:card meta tag for rich social previews.
Actual: missing
Expected: present
Pass Viewport meta tag present
meta_viewport_present
Viewport meta tag present.
Actual: width=device-width, initial-scale=1
Pass Charset meta tag present
meta_charset_present
Charset declared.
Pass H1 tag present
h1_present
Found 1 H1.
Actual: 1 H1
Pass Single H1 tag
h1_count
Exactly one H1.
Actual: 1
Pass H1 has reasonable length
h1_length
H1 length 41 chars.
Actual: 41 chars
Pass Sufficient H2 tags
h2_count
8 H2 tags — good content structure.
Actual: 8
Warning Heading hierarchy
heading_hierarchy
Heading levels skipped 2 times.
Fix: Maintain logical heading order (h1 → h2 → h3, no jumps).
Actual: 2 skips
Fail JSON-LD structured data present
schema_json_ld_present
No JSON-LD scripts found.
Fix: Add structured data (Organization, WebSite, BreadcrumbList).
Actual: 0 scripts
Skipped JSON-LD is valid JSON
schema_valid_json
No JSON-LD to evaluate.
Skipped Recommended schema types used
schema_recommended_types
No JSON-LD to evaluate.
Skipped No deprecated schema types
schema_no_deprecated
No JSON-LD to evaluate.
Skipped No restricted schema types
schema_no_restricted
No JSON-LD to evaluate.
Info Microdata or RDFa present
schema_microdata_present
No microdata. JSON-LD is preferred — this is informational only.
Actual: 0
Warning Canonical URL present
canonical_present
No canonical link tag found.
Fix: Add <link rel="canonical" href="..."> to prevent duplicate indexing.
Actual: missing
Skipped Canonical self-references
canonical_self_referencing
No canonical to evaluate.
Pass Page is indexable
robots_meta_indexable
No noindex directive.
Actual: (not set)
Pass HTML lang attribute
lang_attribute_present
<html lang="en"> declared.
Actual: en
Pass HTML5 doctype
doctype_html5
HTML5 doctype declared.
Pass Favicon present
favicon_present
Favicon declared.
Pass HTTP status 2xx
http_status_ok
Server returned 200.
Actual: 200
Pass Response time acceptable
response_time_ok
Fetched in 267 ms.
Actual: 267 ms
Pass robots.txt accessible
robots_txt_found
robots.txt found.
Pass robots.txt does not block
robots_txt_no_block
robots.txt does not block this page.
Pass sitemap.xml accessible
sitemap_xml_found
Sitemap found at https://www.clinicdermatech.com/sitemap.xml.
Actual: https://www.clinicdermatech.com/sitemap.xml
Pass Sitemap referenced
sitemap_referenced
Sitemap referenced from robots.txt.
Pass Page served over HTTPS
ssl_https
Served over HTTPS.
Actual: https
Pass TLS handshake succeeds
ssl_valid
TLS handshake succeeded.
Actual: clinicdermatech.com
Pass HTTP redirects to HTTPS
http_redirects_to_https
HTTP requests redirect to HTTPS.
Warning HSTS header present
hsts_header_present
Missing strict-transport-security header.
Fix: Add strict-transport-security for hardened security posture.
Actual: missing
Warning CSP header present
csp_header_present
Missing content-security-policy header.
Fix: Add content-security-policy for hardened security posture.
Actual: missing
Warning X-Content-Type-Options
x_content_type_options
Missing x-content-type-options header.
Fix: Add x-content-type-options for hardened security posture.
Actual: missing
Warning PageSpeed performance score
pagespeed_score
Score 57/100 — improve.
Fix: Investigate Lighthouse opportunities.
Actual: 57/100
Expected: ≥ 80
Fail Largest Contentful Paint
lcp_within_threshold
Poor: 10.5s.
Fix: Improve to ≤ 2.5s.
Actual: 10.5s
Expected: ≤ 2.5s
Pass Cumulative Layout Shift
cls_within_threshold
Within good threshold (0).
Actual: 0
Warning First Contentful Paint
fcp_within_threshold
Needs improvement: 2.85s.
Fix: Aim for ≤ 1.8s.
Actual: 2.85s
Expected: ≤ 1.8s
Pass Time To First Byte
ttfb_within_threshold
Within good threshold (0.29s).
Actual: 0.29s
Info Interaction to Next Paint
inp_within_threshold
INP is a field-only metric — not measured here.
Actual: field-only
Pass Few render-blocking resources
render_blocking_resources
No render-blocking resources detected.
Warning Compression enabled
gzip_or_brotli
No gzip/brotli content-encoding header.
Fix: Enable gzip or Brotli on your server.
Pass Healthy internal link count
internal_link_count
15 unique internal links.
Actual: 15
Pass No broken internal links
no_broken_internal_links
All 10 sampled internal links return success.
Actual: 0/10
Pass External links safe
external_links_safe
All external _blank links use rel=noopener.
Actual: 3 external
Warning Descriptive anchor text
descriptive_anchor_text
23% of anchor texts are generic ("click here", etc.).
Fix: Use descriptive anchor text containing target keywords.
Actual: 8/35 generic
Pass Images have alt text
images_alt_present
All 52 images have alt attribute (empty alt OK for decorative).
Actual: 0/52 missing
Pass Below-fold images lazy
images_lazy_loaded
42/52 images use loading="lazy".
Actual: 42 lazy
Warning Modern image formats
images_modern_formats
No images use webp/avif.
Fix: Adopt WebP/AVIF — typically 25-50% smaller than JPEG/PNG.
Warning Images have dimensions
images_have_dimensions
44/52 images have explicit dimensions.
Fix: Add width/height to all <img> tags to prevent CLS.
Pass Sufficient word count
word_count
873 words — substantive content.
Actual: 873 words
Fail Readable prose
readability
Flesch reading ease 26.5 — very difficult.
Fix: Aggressively simplify prose for general audience.
Actual: 26.5
Expected: ≥ 60
Warning E-E-A-T: Experience
eeat_experience
Moderate:
Fix: Strengthen Experience signals on this page.
Actual: 5/10
Expected: ≥ 7
Warning E-E-A-T: Expertise
eeat_expertise
Moderate:
Fix: Strengthen Expertise signals on this page.
Actual: 5/10
Expected: ≥ 7
Warning E-E-A-T: Authoritativeness
eeat_authority
Moderate:
Fix: Strengthen Authoritativeness signals on this page.
Actual: 5/10
Expected: ≥ 7
Warning E-E-A-T: Trustworthiness
eeat_trust
Moderate:
Fix: Strengthen Trustworthiness signals on this page.
Actual: 5/10
Expected: ≥ 7
Pass Viewport set for mobile
mobile_viewport
Responsive viewport configured.
Actual: width=device-width, initial-scale=1
Pass Tap targets reasonable
mobile_tap_targets
No obvious tap-target sizing problems.
Info Legible font sizes
mobile_font_size
No inline body font-size — relying on stylesheet defaults.
Actual: unknown
Pass No Flash/legacy plugins
mobile_no_flash
No legacy plugin elements.
Info hreflang tags present (if i18n)
hreflang_present
No hreflang tags. OK for monolingual sites.
Actual: 0
Skipped hreflang codes valid
hreflang_valid_codes
No hreflang to evaluate.
Skipped hreflang self-reference
hreflang_self_ref
No hreflang to evaluate.
Skipped hreflang x-default present
hreflang_x_default
No hreflang to evaluate.
Warning Content provides clear answers
geo_clear_answers
Moderate (5/10).
Fix: Improve to lift this dimension.
Actual: 5/10
Expected: ≥ 7
Warning High factual density
geo_factual_density
Moderate (5/10).
Fix: Improve to lift this dimension.
Actual: 5/10
Expected: ≥ 7
Warning Structured for AI extraction
geo_structured_for_ai
Moderate (5/10).
Fix: Improve to lift this dimension.
Actual: 5/10
Expected: ≥ 7
Warning Cites authoritative sources
geo_authoritative_sources
Moderate (5/10).
Fix: Improve to lift this dimension.
Actual: 5/10
Expected: ≥ 7