Web Quality Audit: Better Beauty (thebetterbeauty.com)

Website: https://thebetterbeauty.com | Date: 15 August 2026 | Platform: Shopify (theme 160654885116) | Industry: Colour cosmetics (lip products), D2C, India (en-IN, ₹)

Business context (from business-analysis.md, t_54402b93): early/launch-stage single-category (lip) D2C brand under AGAUE CONSULTING PVT LTD, Gurugram. ~32 SKUs, Build-Your-Own-Box customiser, dermatologist-approved + India-skin-tone positioning, no paid Meta/Google ads, no marketplace presence, ~2,795 IG / 81 FB followers. Nano-scale traffic (global rank ~17M).


Executive Summary

The site is a clean, modern Shopify storefront with strong real-world Core Web Vitals on desktop and good Lighthouse accessibility/SEO lab scores, but it carries a set of systemic on-page SEO and structured-data gaps that are low-effort to fix and disproportionately damaging for a brand this small. The headline issues:

  • Mobile Core Web Vitals are Failing in CrUX — driven entirely by INP = 241 ms (Needs Improvement). Desktop passes cleanly. For a mobile-first, social-driven beauty audience, the mobile interactivity gap is the #1 performance priority.
  • Homepage has no meta description and a brand-only <title> ("Better Beauty") — the single most important organic click-through lever, and it's empty.
  • Multiple H1s on the homepage (3, including a duplicated string) while collection pages have no H1 at all — heading hierarchy is inconsistent across templates.
  • Only Organization schema site-wide — no WebSite+SearchAction, no BreadcrumbList, no LocalBusiness, no ItemList on collections, and no AggregateRating/Review on products. Plus no breadcrumb navigation anywhere.
  • Open Graph description is a placeholder ("Better Beauty") on every non-product template, hurting social-share previews.
  • Brand-identity data-quality flag: the About page names founders (Naina Ruhail, Dheeraj Beri, Prateek Ruhail) and claims "first makeup brand in India… Dermat Approved," while the business-analysis pass reported founders "not disclosed." This overlaps with the unrelated skincare "Better Beauty" (Anita Hassanandani / Naina Ruhail) brand — the name collision must be resolved so search engines and customers don't conflate the two entities.
CategoryMobileDesktopGrade
Performance (CrUX CWV)Failing (INP 241 ms)Passing (all Good)🟡 / 🟢
Performance (Lighthouse lab)4162🟡
Accessibility (Lighthouse)9292🟢
Best Practices (Lighthouse)7373🟡
SEO (Lighthouse)7777🟡
Overall🟡 (mixed; SEO/structure gaps offset strong perf+a11y)
Lighthouse lab scores (Perf/A11y/BP/SEO) are from PageSpeed Insights (status captured 2026-08-15). The Lighthouse metric panel (individual FCP/LCP/TBT/etc. values) failed to render in this environment (same API block observed in prior runs) — the CrUX field panel below is the authoritative per-metric source.

1. Performance Audit

1.1 CrUX Real-World Field Data

Source: PageSpeed Insights → Chrome UX Report (field data), latest 28-day period, captured 2026-08-15. This is the authoritative signal (CrUX gives more weeks of data than the single-week window seen in the parent business-analysis pass — the origin has now accumulated enough samples for the 28-day field rollup).

Core Web Vitals Assessment:

PlatformLCPINPCLSAssessment
Mobile2.4 s (Good, ≤2.5 s)241 ms (Needs Improvement, 200–500 ms)0.01 (Good, ≤0.10)Needs Improvement
Desktop2.0 s (Good)198 ms (Good, ≤200 ms)0.00 (Good)Passing

Notable metrics: Mobile FCP 1.8 s, TTFB 1.1 s; Desktop FCP 1.7 s, TTFB 1.0 s.

Interpretation: Desktop is fully healthy. The single metric holding mobile back is INP at 241 ms — 41 ms over the 200 ms "Good" threshold. INP measures interactivity (response to taps/clicks); on a mobile-first beauty site driven by the "Find your shade" customiser, Build-Your-Own-Box configurator, and quick-add-to-cart, sluggish tap response directly hurts conversion. The mobile/desktop INP gap (241 vs 198 ms) is ~22% — consistent with heavier main-thread JS on mobile. See §1.4 for the likely cause.

1.2 Core Web Vitals (Lighthouse Lab Data)

Lighthouse individual-metric values did not render in this environment. Lighthouse category scores (lab) are available:

CategoryMobileDesktop
Performance4162
(FCP/LCP/TBT/CLS/SI individual values)not renderednot rendered

The mobile Performance score of 41 is low and consistent with the mobile INP flag — a real mobile main-thread/JS problem, not a fluke.

1.3 LCP Phase Breakdown (Mobile)

Not available — Lighthouse metric waterfall did not render. From headers and CrUX: TTFB is healthy (1.1 s mobile), so the LCP risk is render-blocking/pre-resource delay + main-thread blocking, not server response. The theme preloads many CSS/JS assets (see §1.5) which can delay first paint on mobile.

1.4 Performance Issues by Impact

Critical (mobile interactivity):

  • INP 241 ms on mobile (Needs Improvement). Likely caused by main-thread-blocking third-party/theme scripts. The homepage ships GSAP + ScrollTrigger + Splide (all preloaded), plus Judge.me reviews, Meta Pixel/CAPI, Klaviyo-class pixel, and Quinn shoppable-video. Each tap (shade swatch, quick-add, slider) competes with these. Recommendation: defer/async non-critical JS, remove GSAP/ScrollTrigger if used only for cosmetic scroll animations on the homepage, throttle analytics, and audit the "Find your shade" / Build-Your-Own-Box handlers for long tasks. Estimated saving: ~40–80 ms INP → back under 200 ms Good.

High:

  • Excessive preload/preconnect list (13+ <link rel=preload> + 3 preconnects in 103 Early-Hints). Preloading 9 stylesheets + multiple JS dilutes browser priority and can delay the real LCP element on mobile. Recommendation: preload only the LCP-critical CSS + hero image; drop preloads for below-fold CSS/JS. Low effort.

Medium/Low:

  • Mobile Performance lab score 41 — driven by the above; once INP + preload bloat are fixed, expect mobile Perf into the 60s.
  • No loading="lazy" audit possible without metric render, but homepage has 123 <img> — confirm below-fold images (trust-bar icons, shade swatches) are lazy-loaded; the hero/featured product images must NOT be lazy.

1.5 Resource Transfer Summary (from Early-Hints / headers)

Preloaded assets observed in the 103 Early-Hints response:

  • 9 stylesheets (style.css, base.css, stylesheet.css, splide.min.css, overflow-list.css, compiled_assets/styles.css, …)
  • 3 JS (Splide, GSAP, ScrollTrigger) from cdn.jsdelivr.net
  • 3 preconnects: cdn.shopify.com (×2), cdn.jsdelivr.net

This is a heavy render-path for a content-light landing page. jsDelivr (third-party) is on the critical path — a third-party dependency for core animation libs adds latency risk.


2. Accessibility Audit

2.1 Critical Issues

  • None critical. <html lang="en"> present, <meta name="viewport"> present, skip-to-content link present, HTTPS enforced.

2.2 High Priority Issues

  • Images missing alt entirely: homepage 6, About page 2, product page (verify). Missing-alt images are lost to screen readers and image search. Fix: add descriptive alt to all content images (product cards, shade swatches, founder photos).
  • Empty alt="" on content images: homepage 29, About page 11. Several are likely decorative (trust-bar icons — acceptable as alt=""), but founder photos and product/collection card images with empty alt lose SEO + a11y value. Audit which empty-alt images are content vs. purely decorative.
  • No visible breadcrumb trail on any template (a11y wayfinding gap — see §3.3).

2.3 Positive Findings

  • Lighthouse Accessibility score 92/100 (mobile + desktop) — strong.
  • Logical heading hierarchy on product pages (single H1 = product name).
  • Skip-to-content link, viewport, lang all correct.
  • Color contrast appears adequate (no failures reported by Lighthouse).
  • Form inputs (quantity, search) are labelled/button-accessible.

3. SEO Audit

3.1 Technical SEO

CheckStatusEvidence
robots.txt✅ Present, Shopify-generated, includes Sitemap: directive, disallows cart/checkout/accountcurl robots.txt
XML Sitemap✅ Index + product/collection/page/blog sub-sitemapscurl sitemap.xml
Canonical URLs✅ Self-referencing on all checked templates (home, product, collection, page)browser DOM
Indexation✅ No noindex found on key templatesbrowser DOM
URL structure✅ Clean, hyphenated, lowercase (/collections/explore-lipsticks, /products/code-red)
HTTPS✅ Enforced (HSTS max-age=7889238; upgrade-insecure-requests CSP)curl -sI
Mobile-friendly✅ Responsive; viewport configured
Mixed contentblock-all-mixed-content CSPcurl -sI

3.2 On-Page SEO Issues

TemplateTitleMeta DescriptionFindings
Homepage❌ "Better Beauty" (brand only — no keywords)Missing entirelyHighest-priority gap. Add keyword title ("Velvet Matte Lipsticks & Build-Your-Own-BoxBetter Beauty") + 150–160 char description.
Product✅ "Code Red – Better Beauty"✅ "Rich Bold classic red, Velvet Matte"Good — auto-generated from product.
Collection✅ "Explore Lipsticks – Better Beauty"✅ "From everyday nudes to statement hues…"Good — but title could add "Velvet Matte Lipstick" keyword.
About/Page✅ "About – Better Beauty"Missing (og:desc = "Better Beauty" placeholder)Add description.
  • H1 inconsistency (Critical for SEO):
    • Homepage: 3 <h1> elements — "Better Beauty", plus two identical "Better Beauty is made for lips that refuse to settle." (a duplicated H1). Multiple H1s dilute the primary keyword signal.
    • Collection pages: 0 <h1> — "Explore Lipsticks" renders as <h2>. Missing H1 = lost top-level keyword anchor.
    • Product pages: ✅ single correct H1 (product name).
    • Fix: one H1 per page; homepage H1 should carry the primary keyword ("Better Beauty Velvet Matte Lipsticks"), collection H1 = collection name.
  • OG description placeholder: every non-product template has og:description: Better Beauty (the literal brand name, not a description). Social shares (Instagram bio link, WhatsApp, Messenger) will show a useless preview. Fix: populate OG description per template via theme.liquid Liquid variables.
  • Keyword targeting: homepage title/H1 carry no commercial keyword ("lipstick", "velvet matte", "Indian skin tone"). For a brand fighting name-collision with a better-known "Better Beauty" skincare brand, ranking on category keywords ("dermatologist approved lipstick India") is the only organic discovery path.

3.3 Schema Markup

Schema TypePresent?WhereIssue
OrganizationAll templatesGood — but verify sameAs includes the correct IG/FB/LinkedIn and not the unrelated skincare brand's handles.
WebSite + SearchActionMissing sitelinks-search-box opportunity.
Product✅ (×2, duplicate)Product pagesTwo Product blocks on /products/code-red — consolidate to one.
BreadcrumbListMissing on all templates — no breadcrumb schema AND no visual breadcrumbs.
LocalBusinessBrand has a physical Gurugram HQ + GST; add LocalBusiness (JewelryStore→ use HealthAndBeautyBusiness/Store) for local/entity signals.
ItemListCollection pagesMissing — collections should list products as ItemList.
AggregateRating / ReviewProduct pagesJudge.me reviews are installed and show 4.5 badges, but no Review/AggregateRating schema → no star rich results in SERPs.
FAQPage"Find your shade" / derm-approved FAQ content could be marked up.

Schema gaps are the highest-ROI SEO fix for this site — they're template-level edits that unlock rich results (stars, breadcrumbs) with no content creation.

3.4 Content Quality (E-E-A-T)

  • Trust signals present (good): contact page discloses legal entity (AGAUE CONSULTING PVT LTD), GST 06AAXCA9317L1ZY, Gurugram address, phone +91 928-98-928-58, email. Refund/shipping/exchange/privacy/terms policies linked in footer. Dermatologist-approved + clean/cruelty-free claims stated.
  • E-E-A-T gap: founder identities now visible on About page (Naina Ruhail, Dheeraj Beri, Prateek Ruhail) — but the business-analysis pass recorded "founders not disclosed," indicating either a prior crawl gap or name collision with the unrelated skincare "Better Beauty" (Anita Hassanandani / Naina Ruhail). The shared "Naina Ruhail" name strongly suggests search engines may be merging or confusing the two brands. Action: explicitly disambiguate (e.g., "Better Beauty — lip colour by AGAUE CONSULTING, separate from the Better Beauty skincare brand") in About/structured data to protect entity identity.
  • Thin content/SEO: only 8 blog posts; domain authority very low (rank ~17M). Building informational content ("how to find your lip shade for Indian skin tones", "dermatologist-approved makeup explained") would capture top-of-funnel queries the brand is otherwise ceding to competitors.

4. International SEO

Not applicable — site is single-locale (en-IN), ships Pan-India only, no hreflang, no international shipping signal. No action needed; flag only if the brand expands abroad. (No cross-locale canonical risk because there is only one locale.)


5. Best Practices & Security

5.1 Security Headers (from curl -sI)

HeaderValueAssessment
HSTSmax-age=7889238⚠️ Present but missing includeSubDomains and preload — subdomains not covered; add both.
X-Frame-OptionsDENY
X-Content-Type-Optionsnosniff
CSPblock-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests;⚠️ No script-src directive — the CSP does not restrict script execution, so it provides little XSS mitigation. Add a real script-src allowlist (or at minimum script-src 'self' https://cdn.shopify.com https://cdn.jsdelivr.net).
X-XSS-Protection1; mode=block✅ (legacy)
COOP / COEPnot present⚠️ COOP same-origin missing (low priority for this site).

5.2 Modern Standards

  • ✅ Valid HTML5, UTF-8 charset, no document.write, no mixed content (CSP enforces).
  • powered-by: Shopify — acceptable.
  • ⚠️ Many CSS/JS preloads (see §1.5) — performance-hygiene, not a standards failure.
  • Shopify manages source maps; not exposed in production headers.

6. Content Quality Assessment

6.1 Image Quality & Authenticity

  • AI-generated image detection: Not formally run (filenames not enumerated in this pass). The brand positions on "dermatologist-approved / clean / authentic" — if any product or model imagery is AI-generated, it would be a brand-authenticity mismatch (per skill severity guidance, critical for an authenticity-led brand). Recommendation: manually verify the "Find your shade" model-face / lips-mask imagery and founder photos are real photography, not AI. Founder photos on About appear to be real headshots (named LinkedIn links).
  • Trust signals: strong (see §3.4) — GST, address, phone, policies all present.
  • Product photography: WebP served (code-red_1.webp), 2001×2001 — appropriately sized.

6.2 UX Issues

  • No breadcrumb navigation anywhere (UX + SEO). Customers on a collection or product page have no wayfinding back to "Lipsticks" except the top nav.
  • Quick-add-to-cart bar present on product pages (good mobile conversion pattern).
  • "Find your shade" customiser is a strong, interactive differentiator — but its tap responsiveness contributes to the mobile INP problem (§1.4); optimise handlers.
  • No broken internal links observed in the homepage crawl (99 internal links, 0 ?variant= polluted links — variant pollution is NOT a problem here, unlike typical Shopify stores).

7. Priority Recommendations

🔴 Immediate (This Week)

#IssueImpactEffort
1Mobile INP 241 ms → target <200 ms (defer GSAP/ScrollTrigger, async analytics, optimise shade/cart handlers)Restores mobile CWV "Passing"; protects mobile conversionMedium
2Add homepage meta description + keyword-rich <title> ("Velvet Matte Lipsticks & Build-Your-Own-BoxBetter Beauty")Organic CTR on the most-linked pageLow
3Fix H1 structure: 1 H1 on homepage (keyword-bearing), add H1 to collection templatesRestores primary-keyword anchor site-wideLow (theme edit)
4Add BreadcrumbList schema + visual breadcrumbs on product/collectionRich-result + UX wayfindingMedium

🟡 Short-Term (This Month)

#IssueImpactEffort
5Populate OG description on home/collection/page templates (currently "Better Beauty" placeholder)Social-share CTR from IG/FB/WhatsAppLow (theme.liquid)
6Add Product AggregateRating/Review schema (Judge.me data exists)Star rich results in SERPsMedium (app/template)
7Add WebSite+SearchAction, LocalBusiness, ItemList schemaSitelinks search box, local/entity signalsMedium
8Add meta descriptions to all Page templates (About, Contact, policies)CTR on secondary pagesLow (bulk)
9Strengthen CSP script-src + HSTS includeSubDomains; preloadSecurity postureLow
10Resolve brand-name collision — disambiguate from skincare "Better Beauty" in About + Organization sameAsProtects entity identity / search clarityLow–Medium

🟢 Long-Term (This Quarter)

#IssueImpactEffort
11Build informational blog content (shade-matching for Indian skin tones, derm-approved makeup)Top-of-funnel organic discoveryMedium
12Trim preload/preconnect bloat (keep only LCP-critical)Mobile Perf score 41 → 60sLow
13Manually verify no AI-generated product/model imageryBrand authenticityLow
14Add FAQPage schema to derm-approved / shade FAQsFAQ rich resultsLow

Summary Score Card

CategoryScoreGrade
Performance (Mobile CrUX CWV)Needs Improvement (INP 241 ms)🟡
Performance (Desktop CrUX CWV)Passing (all Good)🟢
Performance (Lighthouse mobile)41/100🟡
Performance (Lighthouse desktop)62/100🟡
Accessibility92/100🟢
Best Practices73/100🟡
SEO (Lighthouse)77/100🟡
SEO (on-page / schema — auditor assessment)Weak (missing desc, H1 issues, no breadcrumb/rating schema)🔴/🟡
Content Quality / E-E-A-TModerate (good trust signals; thin content; name-collision risk)🟡
Security HeadersModerate (CSP weak, HSTS incomplete)🟡
OverallMixed — strong perf/a11y foundation undermined by fixable on-page SEO + schema gaps🟡

Sources & Citations

  • curl -sI https://thebetterbeauty.com/ — HTTP response headers (HSTS, CSP, X-Frame-Options, X-Content-Type-Options, powered-by Shopify, preload/preconnect list).
  • curl https://thebetterbeauty.com/robots.txt — robots directives + Sitemap: reference.
  • curl https://thebetterbeauty.com/sitemap.xml + sub-sitemaps — sitemap index (products/collections/pages/blogs/agentic).
  • Browser DOM (browser_console) on /, /products/code-red, /collections/explore-lipsticks, /pages/about — title, meta description, canonical, OG/Twitter tags, JSON-LD @type, H1/H2 counts, img alt audit, internal-link count.
  • PageSpeed Insights (https://pagespeed.web.dev/) — CrUX field data (mobile + desktop) and Lighthouse category scores, captured 2026-08-15:
    • Mobile CWV: Failed — LCP 2.4 s (Good), INP 241 ms (Needs Improvement), CLS 0.01 (Good); FCP 1.8 s, TTFB 1.1 s.
    • Desktop CWV: Passed — LCP 2.0 s, INP 198 ms, CLS 0.00; FCP 1.7 s, TTFB 1.0 s.
    • Lighthouse scores: Mobile Perf 41 / A11y 92 / BP 73 / SEO 77; Desktop Perf 62 / A11y 92 / BP 73 / SEO 77.
  • business-analysis.md (t_54402b93) — company basics, legal entity, GST, social followers, CrUX prior-week note, brand-name-collision caveat.

Caveats: Lighthouse individual metric values (FCP/LCP/TBT/CLS/SI per-platform) did not render in this environment (PageSpeed Insights lab-metric API blocked); the CrUX field panel is the authoritative per-metric source. Brand-name-collision with the unrelated skincare "Better Beauty" (Anita Hassanandani / Naina Ruhail) may affect founder-attribution clarity — verify which entity the About-page founders belong to.