Web Quality Audit: Planet Paaduks
Website: https://www.planetpaaduks.in/ | Date: 2026-08-27 | Platform: Shopify (Motech/Minimog-style theme) | Industry: Sustainable / Vegan footwear D2C (India)
Context: audit supplements the exhaustive e-commerce business analysis (business-analysis.md) for the same brand. Mobile-first audience — 90.4% of traffic is phone, 9.6% desktop (CrUX form factors, 2026-07-26 → 2026-08-22).
Executive Summary
Planet Paaduks is a competent Shopify store with solid technical SEO fundamentals (single canonical, valid HTTPS, working sitemap of 332 URLs, good Best-Practices/SEO Lighthouse scores) but it is held back by two serious, business-critical problems:
- A site-wide age-verification modal ("Are you 18 years old or older?") overlays every page — including the homepage, collections, and product pages. For an open-footwear brand this is unjustified conversion friction that blocks first paint, interposes a dead-end ("No, I'm not") for a large share of visitors, and risks suppressing the LCP element. This is the single highest-impact issue in the audit.
- Catastrophic mobile Largest Contentful Paint — 18.7s in Lighthouse lab (vs. 2.5s "Good"), driven by a render-blocking, JS-injected,
loading="lazy"hero/slider image and a heavy app/theme JS+CSS stack (212 scripts, 32 stylesheets on the homepage). Real-user CrUX LCP is "Needs Improvement" at 3,233ms.
The store also shows the classic Shopify SEO gaps: many collection/policy/blog-listing pages have no meta description and no og:image, and the hero image is served as JPEG rather than WebP/AVIF. None of these are fatal, but together they cap organic reach and social CTR.
| Category | Mobile Score | Desktop Score | Grade |
|---|---|---|---|
| Performance | 60 | 85 | 🔴 / 🟡 |
| Accessibility | 84 | 84 | 🟡 |
| Best Practices | 88 | 88 | 🟡 |
| SEO | 85 | 85 | 🟡 |
| Overall (avg) | 79 | 86 | 🟡 |
Mobile vs desktop performance gap = 25 points (1.4×). The gap is driven entirely by LCP: desktop LCP 2.1s (Good) vs mobile 18.7s (lab). Real-user mobile LCP (3.2s) is far better than lab but still Needs Improvement.
1. Performance Audit
1.1 CrUX Real-World Field Data
Source: Chrome User Experience Report via CrUX Vis, origin https://www.planetpaaduks.in, as of 2026-08-22 (latest 28-day period, phones).
Core Web Vitals Assessment (mobile/phone): Needs Improvement. LCP is in "Needs Improvement"; INP and CLS are "Good."
| Metric | Latest Value | Threshold (Good / Poor) | Rating |
|---|---|---|---|
| LCP | 3,233 ms | ≤2,500 / >4,000 | 🟡 Needs Improvement |
| INP | 172 ms | ≤200 / >500 | 🟢 Good |
| CLS | 0.05 | ≤0.10 / >0.25 | 🟢 Good |
Trend (8-week, latest first): LCP improved from ~3,493ms (early June) to 3,038ms (mid-July) then drifted back to 3,233ms. INP is stable Good (~170–204ms). CLS is excellent (0.01–0.05) after a Q1 cleanup that removed large layout shifts. The mobile CWV assessment is "Loading Performance needs improvement but is regressing" per CrUX Vis — the LCP improvement seen in June–July is reversing.
Form factors (confirmed in business analysis): Phone 90.4% / Desktop 9.6% / Tablet 0.0%. Strongly mobile-first — all performance work must prioritize the phone experience.
1.2 Core Web Vitals (Lighthouse Lab Data)
Source: PageSpeed Insights, report 2026-08-27 5:10 PM UTC, Lighthouse 13.4.1, emulated Moto G Power (mobile) / desktop.
| Metric | Mobile | Rating | Desktop | Rating |
|---|---|---|---|---|
| First Contentful Paint (FCP) | 4.8 s | 🔴 Poor (>3.0s) | 0.9 s | 🟢 Good |
| Largest Contentful Paint (LCP) | 18.7 s | 🔴 Poor (>4.0s) | 2.1 s | 🟢 Good |
| Total Blocking Time (TBT) | 80 ms | 🟢 Good | 50 ms | 🟢 Good |
| Cumulative Layout Shift (CLS) | 0.00 | 🟢 Good | 0.057 | 🟢 Good |
| Speed Index (SI) | 6.5 s | 🔴 Poor (>5.8s) | 1.9 s | 🟢 Good |
The 18.7s mobile LCP is the dominant issue. Lab is worse than field because Lighthouse throttles to Slow-4G and the hero image is both render-blocking and lazy-loaded. Desktop LCP (2.1s) is comfortably Good — confirming the problem is mobile-specific (render-blocking JS/CSS + unoptimized hero).
1.3 LCP Phase Breakdown (Mobile, inferred)
Lighthouse lists Render-blocking requests — Est. savings 450ms and Use efficient cache lifetimes — Est. savings 1,446 KiB as the top insights. The homepage sends 14+ rel="preload" CSS links and 212 <script> tags (32 stylesheets). The hero slider image (slider_item_F3CXfk) is fetched with loading="lazy" — a contradiction that defers the LCP element until after onload, inflating LCP by seconds. The pre-resource-delay pattern is present: the LCP element cannot even be discovered until theme JS + Flickity + multiple app bundles execute.
1.4 Performance Issues by Impact
Critical (>1s savings)
- Lazy-loaded LCP/hero image — The first
<main>image usesloading="lazy"on the homepage AND collection pages. Never lazy-load the LCP element. Evidence:document.querySelector('main img').loading === "lazy"; PSI est. LCP impact. Fix: setloading="eager"+fetchpriority="high"+<link rel="preload" as="image">on the hero. Savings: multi-second LCP reduction. - Render-blocking CSS/JS — 14 preload CSS links + 212 scripts; theme + 6+ Shopify apps (GoKwik, Releasit COD, Zipcode Restrictor, BlueCart upsell, WhatsApp Chat, Flickity). Evidence: PSI "Render-blocking requests — 450ms." Fix: inline critical CSS, defer non-critical app JS, use
defer/async, collapse redundant preloads to ≤4.
High (200ms–1s)
- Unoptimized hero/collection images (JPEG, no WebP/AVIF) — Hero served as
.jpg(e.g.zen_banner.jpg?width=2000), nofm=webp. Evidence: hero src format.jpg; PSI "Improve image delivery — 327 KiB." Fix: serve AVIF/WebP via Shopify CDN (&fm=webp/&fm=avif), responsivesrcset. - Inefficient cache lifetimes — PSI est. 1,446 KiB savable; many CDN assets lack long
max-age. Fix: confirmCache-Controlon theme/app assets. - Third-party script bloat — GoKwik SSO SDK, WhatsApp chat, BlueCart progress bar, Zipcode restrictor, Flickity all inject CSS+JS. Fix: load below-the-fold / after interaction.
Medium/Low
- Duplicated JavaScript — 12 KiB (PSI).
- Forced reflow on render (PSI diagnostic).
maximum-scale=1.0, user-scalable=0in viewport (see §2.1) — disables pinch-zoom, an accessibility + minor SEO signal.- Excessive preconnect — 6 preconnects (cdn.shopify.com ×2, unpkg, gokwik, cdnjs, cdnjs crossorigin); trim to the 2–3 that matter.
1.5 Resource Transfer Summary (homepage DOM)
- Images: 66
<img>(60loading="lazy"below fold — appropriate; 1 lazy hero — inappropriate). - Scripts: 212
<script>tags. Stylesheets: 32. iframes: 2 (likely WhatsApp chat / app embed). - Total DOM elements: 2,570 (acceptable; under the 1,500 "large DOM" soft cap is not met but not egregious).
- Total page weight: large — PSI flags ~1.4 MiB of cacheable assets.
2. Accessibility Audit
2.1 Critical Issues
user-scalable=0+maximum-scale=1.0in viewport meta — Disables pinch-zoom for low-vision users. WCAG 1.4.4 (AA) failure. Evidence:viewport: width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0. Fix: remove maximum-scale/user-scalable.- Age-gate as a dead-end for "No" users — The "No, I'm not" button offers no path forward and fully blocks the store (see §6.2). A screen-reader/keyboard user hitting the modal first has no content behind it until they choose "Yes." This is an interaction barrier, not strictly a WCAG failure, but it intercepts all assistive-tech entry.
- 3 homepage images missing
altentirely — the three banner<img>(zen_banner.jpg,Women_Sandals_Banner.jpg,Men_Slides_Banner.jpg) have noaltattribute. Evidence:img:not([alt])= 3. Screen readers announce "image" with no context; these are content/marketing banners that should carry descriptive alt.
2.2 High Priority Issues
- 23 images with empty
alt=""(decorative — acceptable IF genuinely decorative, but verify these aren't product/content images that should be indexed). On a product-led store, confirm empty-alt images are truly decorative (icons, dividers), not products. - H1 is the logo image —
document.querySelector('h1')resolves to the logo link<img alt="Planet Paaduks">. The homepage has a visible keyword heading only in slider/banner text, not a semantic H1 with the primary keyword ("vegan footwear"/"sustainable sandals"). Single H1 is good; making it keyword-bearing (or adding a visible H1) strengthens ranking. - No skip-to-content link detected (
a[href="#main"]= 0). Minor AA gap given heavy nav. - Hero image
loading="lazy"(also a perf issue) — delays first meaningful paint for AT users relying on visual load.
2.3 Positive Findings
html lang="en"present (server-drivencontent-language: en-IN). ✓<meta name="viewport">present. ✓- Logical heading hierarchy on product pages (single visible H1 = product name; proper H2/H3/h4 for features). ✓
- Buttons have descriptive
aria-label(e.g. "Decrease quantity of …", "Add to cart"). ✓ - Color contrast acceptable (no flagged failures; Lighthouse a11y = 84).
- Form inputs (size radios, quantity spinbutton) are labeled. ✓
3. SEO Audit
3.1 Technical SEO
| Check | Status | Evidence |
|---|---|---|
| HTTPS enforced | ✅ | strict-transport-security: max-age=7889238; valid cert; no mixed content (CSP block-all-mixed-content) |
| robots.txt | ✅ | Clean, includes Sitemap: directive, disallows cart/checkout/account, allows product/collection/page/blog |
| XML Sitemap | ✅ | 332 URLs: products 93, collections 143, pages 28, blogs 67 (+ agentic-discovery). All indexable templates present |
| Canonical (self-ref) | ✅ | Homepage + collection + product all self-canonical |
| Indexation | ✅ | No noindex on key templates; robots meta absent (default allow) |
| URL structure | ✅ | Readable, hyphenated, keyword-rich (/products/sko-cork-women, /collections/men) |
| Mobile-friendly | ⚠️ | Responsive + viewport present, BUT user-scalable=0 and slow mobile LCP hurt mobile-first indexing |
| Hreflang / i18n | ✅ N/A | Single locale (en-IN), .in domain, India-only. No multilingual needed |
Security headers (relevant to SEO trust + best practices): x-frame-options: DENY, x-content-type-options: nosniff, content-security-policy: frame-ancestors 'none'; upgrade-insecure-requests; block-all-mixed-content, HSTS present. No CSP script-src (uses the permissive default) and no COOP — medium best-practices gap, not SEO-blocking.
3.2 On-Page SEO Issues
Meta descriptions — partial (P0):
- ✅ Homepage (260 chars — slightly long, trim to ~155), product pages (present), blog posts, most policy pages.
- ❌ Missing on collection pages (
/collections/men— no description), and many content/policy pages:/pages/contact,/pages/conscience,/pages/b2b,/pages/bulk-gifting,/pages/allblog,/pages/reviews. These are crawlable, indexable templates with no SERP snippet — lost CTR.
Open Graph / Twitter:
- ✅ Homepage, product, blog post have OG + Twitter Card.
- ❌
og:imagemissing on collections, blog listing, and most /pages/* (verified:/collections/men,/blogs/all-blogs,/pages/contact, etc. have noog:image). Social shares render without a preview image — major CTR loss on Instagram/FB/WhatsApp (the brand's primary acquisition channels per the business analysis).
Title tags: Mostly good and keyword-bearing (homepage 63 chars "Planet Paaduks- Buy Premium Footwear Online for Men & Women"; products "Buy Sko Slingback Cork Sandals Women Brown Paaduks – Planet Paaduks"). A few thin: /pages/allblog → "AllBlog – Planet Paaduks", /pages/warranty → "Warranty Application Successful" (a thank-you page wrongly titled).
Headings: Homepage H1 = logo (keyword-less, see §2.2). Collection pages have no visible H1 — section headings ("NEW IN CORK - MEN") are H2. Add a keyword H1 per collection.
3.3 Schema Markup
| Type | Present | Notes |
|---|---|---|
| Organization | ✅ all pages | name "Planet Paaduks", sameAs socials |
| WebSite | ✅ homepage | (SearchAction not verified — check potentialAction) |
| Product | ✅ product pages | has name, url, image, description, sku, brand "Paaduks", offers (price/currency/availability) — but NO aggregateRating and NO review despite visible 4.52★ star ratings + reviews on the page |
| BreadcrumbList | ❌ | Not present on collection/product pages (visual breadcrumbs also absent) |
| Article | ✅ blog posts | present |
| LocalBusiness | ❌ | Not present — missed opportunity (Mumbai HQ, phone, email exist) |
| FAQPage | ❌ | Not present |
Key schema gaps:
- No
AggregateRating/Reviewon Product despite a visible 4.52★ rating and customer reviews → the brand is forfeiting star-rating rich results in SERPs. High impact (P2 in skill matrix, but high CTR value for a review-rich store). - No BreadcrumbList → no breadcrumb rich results; also no visible breadcrumbs on collection/product pages (UX + SEO wayfinding gap).
- No LocalBusiness → local/entity signal missed (address, geo, hours available to add).
3.4 Image SEO
- Descriptive filenames mostly present (e.g.
zen_banner.jpg,Varsha_Black_Sandals_Women). ✅ - Alt text: product images well-named; 3 banner images missing alt; 23 empty-alt to verify. ⚠️
- Format: JPEG hero, no WebP/AVIF → compress + modern format (perf + image-search). ⚠️
- Lazy-load below-fold ✅ (but hero must be eager — see §1.4).
3.5 Internal Linking
- Nav is shallow (Designer's Edit / Men / Women / Thrift Store) — no blog↔collection cross-links visible in nav. Blog posts exist (67) but aren't surfaced to product collections. Medium: add "related collection" links from blog posts; add blog to footer/nav.
- No broken internal links found in sampled templates. ✅
3.6 Keyword Targeting
- Homepage targets "premium footwear online for men & women" — generic; missing the brand's differentiator keywords ("vegan footwear", "upcycled tyre sandals", "sustainable sandals India"). Recommend: weave sustainability/vegan keywords into H1/title/meta.
- Collection titles are bare ("All Products Men") — no keyword (e.g. "Men's Vegan Sandals & Slides").
3.7 E-E-A-T Signals
- Experience/Expertise: founder story (Amit Jain, Aparajit Sangotra), "Skilled Craftsmanship" section, material transparency. ✓ (but buried — not in a prominent About page linked from nav;
/pages/conscienceexists, under-used). - Authoritativeness: press mentions cited in business analysis (YourStory etc.); not surfaced on-site. ⚠️
- Trustworthiness: phone + email + policies + reviews + 100-day warranty all visible on PDP. ✅ Strong for a D2C store.
4. International SEO
Not applicable. Single locale (en-IN), .in domain, India-only shipping, no hreflang, no localized content. No action needed. (If the brand later expands to the US/EU via marketplaces, revisit hreflang + en vs en-IN canonical strategy.)
5. Best Practices & Security
5.1 Security Headers
| Header | Value | Verdict |
|---|---|---|
| HSTS | max-age=7889238 (~3m) | ✅ present, though includeSubDomains; preload not set |
| X-Frame-Options | DENY | ✅ |
| X-Content-Type-Options | nosniff | ✅ |
| CSP | frame-ancestors 'none'; upgrade-insecure-requests; block-all-mixed-content | ⚠️ no script-src (permissive); acceptable but not strict |
| COOP / COEP | absent | ⚠️ missing (low priority) |
| X-Permitted-Cross-Domain | none | ✅ |
5.2 Modern Standards
- Valid HTML5 doctype, UTF-8 charset. ✅
- No
document.write. ✅ - No mixed content (CSP enforces). ✅
- Source maps: not exposed in sampled responses. ✅
- No CSP
script-srcmeans third-party app JS (GoKwik, WhatsApp, BlueCart) is unrestricted — minor supply-chain risk, low priority.
6. Content Quality Assessment
6.1 Image Quality & Authenticity
- No AI-generated image fingerprints detected in sampled filenames (no
Gemini_Generated_,ChatGPT_Image_,ai0_,unnamed_1). Product/banner photography uses real descriptive filenames (Varsha_Black_Sandals_Women,zen_banner.jpg). ✅ For a "handcrafted/ethical" brand, real photography is on-brand — maintain this. - Hero/collection banners are large JPEGs (width=2000) — should be AVIF/WebP for speed (see §1.4).
- Product gallery well-shot (8 angles on the sampled PDP). ✅
6.2 UX Issues (Critical)
- 🔴 Site-wide age-verification gate. Every page — homepage, collections, PDPs — renders a full-screen
position:fixed; z-index:999999modal: "Confirm your age — Are you 18 years old or older? [No, I'm not] [Yes, I am]". For open casual footwear (sandals/slides), an age gate is not legally required and is pure conversion friction:- Blocks first paint / LCP element discovery (interacts with the §1.4 LCP problem).
- "No, I'm not" is a dead-end — a visitor who clicks it (or a bot/crawler that can't) sees only "Come back when you're older" and no store.
- Adds a mandatory extra tap on a 90%-mobile audience where every tap costs conversion.
- Recommend: remove it entirely (footwear is not age-restricted in India), or if retained for compliance, make "No" route to a graceful exit and ensure the gate never wraps the LCP image / is cookie-persisted and non-blocking.
6.3 Trust Signals
- Phone, email, free-shipping, 7-day returns, 100-day warranty, "19 people viewing" social proof, reviews, secure-checkout badges all present on PDP. ✅ Strong.
- Policies (shipping/returns/warranty/privacy/ToS) linked in footer. ✅
- Missing: GST/business registration number, visible physical address (Mumbai HQ not stated on-site), founder credentials not surfaced in nav. ⚠️
6.4 Review / Social Proof
- Visible star ratings + review counts on PDPs ✅ — but not marked up as
AggregateRating/Reviewschema (see §3.3). Rich-result opportunity missed.
7. Priority Recommendations
🔴 Immediate (This Week)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 1 | Remove the site-wide age-verification gate (or make non-blocking + cookie-persisted + graceful "No" exit) | Recovers blocked LCP, removes dead-end, lifts mobile conversion | Low–Med (theme setting) |
| 2 | Fix lazy-loaded hero/LCP image → loading="eager" + fetchpriority="high" + preload | Cuts mobile LCP from 18.7s(lab)/3.2s(field) toward Good | Low (theme/IMG tag) |
| 3 | Add meta descriptions to all collection + /pages/ templates (men, women, contact, conscience, b2b, bulk-gifting, allblog, reviews) | SERP CTR on indexable templates | Low (bulk edit) |
🟡 Short-Term (This Month)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 4 | Add og:image to collections, blog listing, and all /pages/ | Social/WhatsApp share CTR (primary acquisition channel) | Low (theme liquid) |
| 5 | Defer/render-block fix app + theme JS/CSS (GoKwik, BlueCart, Zipcode, WhatsApp, Flickity) | Mobile LCP/Speed Index | Med |
| 6 | Serve hero/collection images as AVIF/WebP with srcset | Image weight, LCP | Low–Med (Shopify CDN) |
| 7 | Add Product AggregateRating + Review schema (ratings already on-page) | Star-rich-results in SERPs | Med (app/theme) |
| 8 | Add BreadcrumbList schema + visible breadcrumbs on collection/PDP | SERP breadcrumbs, UX wayfinding | Med |
| 9 | Remove user-scalable=0/maximum-scale from viewport | WCAG 1.4.4 AA, mobile a11y | Low |
| 10 | Add alt to 3 banner images; audit 23 empty-alt | Image search, screen readers | Low |
🟢 Long-Term (This Quarter)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 11 | Keyword-rich H1/title/meta on homepage + collections ("vegan/upcycled/sustainable sandals India") | Organic ranking for differentiator queries | Med |
| 12 | Add LocalBusiness + WebSite SearchAction schema; surface founder/About story in nav | Entity + E-E-A-T | Med |
| 13 | Blog↔collection internal linking; add blog to nav/footer | Link equity, discovery | Med |
| 14 | Trim preconnects to 2–3; set strict CSP script-src; add COOP | Best practices/security | Low |
| 15 | Add FAQPage schema to top FAQ/content pages | FAQ rich results | Low–Med |
Summary Score Card
| Category | Score | Grade |
|---|---|---|
| Performance (Mobile) | 60/100 | 🔴 |
| Performance (Desktop) | 85/100 | 🟡 |
| Accessibility | 84/100 | 🟡 |
| Best Practices | 88/100 | 🟡 |
| SEO | 85/100 | 🟡 |
| Content Quality | ~80/100 | 🟡 (real photography ✅; age-gate ❌; schema gaps) |
| UX | ~55/100 | 🔴 (age-gate blocks all pages) |
| Overall | ~79/100 | 🟡 |
Bottom line: Technically sound Shopify store with good hygiene (HTTPS, sitemap, canonical, schema on key pages) but two conversion-critical defects — a site-wide age gate and a lazy/render-blocked mobile hero — plus standard Shopify SEO omissions (meta descriptions + og:image on non-product templates, missing rating/breadcrumb schema). Fixing #1–#3 this week addresses the bulk of the business impact.
Sources (every data point cited)
- CrUX field CWV + form factors: CrUX Vis, origin
https://www.planetpaaduks.in, 2026-08-22 (also captured inbusiness-analysis.md§5a). LCP 3,233ms / INP 172ms / CLS 0.05 (phone). - Lighthouse lab scores + metrics: PageSpeed Insights report 2026-08-27 17:10 UTC, Lighthouse 13.4.1. Mobile 60/84/88/85; Desktop 85/84/88/85. Mobile LCP 18.7s, FCP 4.8s, SI 6.5s, TBT 80ms, CLS 0.00; Desktop LCP 2.1s, FCP 0.9s, SI 1.9s, TBT 50ms, CLS 0.057. Insights: render-blocking 450ms, image delivery 327KiB, cache lifetimes 1,446KiB, duplicated JS 12KiB.
- HTTP headers / security:
curl -sI https://www.planetpaaduks.in/(HSTS, XFO DENY, nosniff, CSP, preload links). - robots.txt / sitemap:
curlof/robots.txtand/sitemap.xml(332 URLs: 93 products, 143 collections, 28 pages, 67 blogs). - Static HTML meta/OG/schema: Python parse of homepage,
/collections/men,/products/sko-cork-women, blog post, and 10/pages/*templates. - Live DOM a11y/perf: browser console on homepage, collection, PDP — 212 scripts, 32 stylesheets, 66 images (60 lazy), 3 missing-alt + 23 empty-alt, H1=logo,
user-scalable=0viewport,m-age-verifiermodal active site-wide (position:fixed; z-index:999999), heroloading="lazy". - Product schema: static HTML parse of
/products/sko-cork-women— Product type with name/url/image/description/sku/brand(Paaduks)/offers; no aggregateRating/review.