Web Quality Audit: Powerlook (powerlook.in)
Website: https://www.powerlook.in/ | Date: 2026-08-27 | Platform: Shopify (D2C, theme id 154876117242, CDN Cloudflare) | Industry: Men's fast-fashion / streetwear Business context (from business-analysis.md): 95.2% phone / 4.8% desktop traffic (CrUX), ~618K monthly visits, 1,606 SKUs, ₹399–₹2,499 price tier, 12+ stores, unfunded/bootstrapped, competitors Bewakoof/Snitch/Souled Store. Mobile is the entire game — every performance and UX finding below should be read through that lens.
Executive Summary
Powerlook's SEO and accessibility foundations are strong (SEO 92, Accessibility 93), and its real-world mobile Core Web Vitals are genuinely improving — INP collapsed from ~1,900 ms (May) to ~300 ms (Aug) after what looks like a major JS/interactivity fix. But two things pull the site down hard:
- Mobile performance in the lab is severe (Lighthouse Performance = 20/100). On an emulated Moto G / slow-4G run the homepage ships an 8.3 MB payload, executes 18 s of JavaScript, and records a 46.2 s LCP. The field (real-user) numbers are far better (LCP 2.6 s, INP 311 ms) but still Needs Improvement — LCP is a hair over the 2.5 s "Good" threshold and INP is well over 200 ms.
- Best Practices score is only 54/100, driven almost entirely by a weak HSTS policy (91-day max-age, no
includeSubDomains, nopreload) and a permissive CSP that has noscript-srcdirective.
The single most valuable on-page fix is the blog section, which has no meta description and a 10-character <title> ("Style Tips") — a classic Shopify template gap that forfeits search visibility on 29 blog posts. The homepage also carries three <h1> elements, which dilutes the primary keyword signal.
| Category | Mobile Score | Desktop Score | Grade |
|---|---|---|---|
| Performance | 20 | lab run failed (PSI backend timeout) — field: Passing (desktop only) | 🔴 / — |
| Accessibility | 93 | 93 (shared template) | 🟢 |
| Best Practices | 54 | 54 (shared template) | 🟡 |
| SEO | 92 | 92 (shared template) | 🟢 |
| Overall | — | — | 🟡 (Needs Work) |
Mobile vs Desktop gap: Desktop is 4.8% of traffic and its field CWV Pass. The mobile Performance score (20) is ~4.5× worse than desktop's effective experience. All performance effort must be mobile-first.
1. Performance Audit
1.1 CrUX Real-World Field Data (Chrome UX Report via CrUX Vis, origin https://www.powerlook.in, phones)
Core Web Vitals Assessment (phones): Needs Improvement. Latest 28-day window (2026-07-26 → 2026-08-22):
- LCP: 2,608 ms — Needs Improvement (threshold Good ≤ 2,500 ms; Poor > 4,000 ms). Just 108 ms over Good.
- INP: 302 ms — Needs Improvement (threshold Good ≤ 200 ms; Poor > 500 ms).
- CLS: 0.01 — Good (threshold Good ≤ 0.10).
Trend (this is the good news): the phone experience improved dramatically over the summer:
| Period | LCP | INP | CLS |
|---|---|---|---|
| 2026-05-31 → 06-27 | 3,228 ms | 1,886 ms | 0.01 |
| 2026-06-28 → 07-25 | 3,603 ms | 784 ms | 0.05 |
| 2026-07-05 → 08-01 | 3,492 ms | 427 ms | 0.05 |
| 2026-07-19 → 08-15 | 2,725 ms | 300 ms | 0.01 |
| 2026-07-26 → 08-22 | 2,608 ms | 302 ms | 0.01 |
INP improved 6.2× (1,886 → 302 ms) and LCP 19% (3,228 → 2,608 ms) in ~12 weeks. Whatever shipped in June/July (likely deferred/reduced JS, hydration fix) worked. The remaining gap is small and closing.
Desktop (field): PageSpeed Insights reports Core Web Vitals Assessment Passed for desktop. (Desktop is 4.8% of traffic, so low business priority.)
1.2 Core Web Vitals — Lighthouse Lab Data (mobile, Lighthouse 13.4.1, Moto G Power, slow 4G)
| Metric | Lab Value | Threshold Good | Rating |
|---|---|---|---|
| FCP | 6.8 s | ≤ 1.8 s | 🔴 Poor |
| LCP | 46.2 s | ≤ 2.5 s | 🔴 Poor (18× Good) |
| TBT | 2,810 ms | ≤ 200 ms | 🔴 Poor (14× Good) |
| CLS | 0.157 | ≤ 0.10 | 🔴 Needs Improvement |
| Speed Index | 17.3 s | ≤ 3.4 s | 🔴 Poor (5× Good) |
Read this carefully. The lab LCP of 46 s is an emulated slow-4G artifact on a 2.3 MB HTML document + 8.3 MB of subresources, not what real users on 4G/5G experience (field LCP is 2.6 s). But the direction is right: the page is massively over-weight for a mobile-first audience, and the lab test is a stress signal that the site will feel broken on weak networks (the exact rural/value buyers Powerlook targets at ₹399 price points). The Performance score of 20/100 is the headline number to fix.
1.3 LCP Phase Breakdown (mobile, lab)
The Lighthouse "LCP breakdown" insight was captured but not fully expanded; the dominant contributors are unambiguous from the diagnostics:
- Render-blocking requests: Est. savings 1,810 ms — CSS/JS loaded before first paint.
- Reduce unused JavaScript: Est. savings 1,645 KiB — theme + app bundle (MoEngage, Flits wishlist, Whatmore shoppable video, custom multi-JS loader) ships code that isn't used on the homepage.
- Avoid enormous network payloads: Total size 8,292 KiB (8.3 MB).
- Minimize main-thread work: 39.2 s; Reduce JS execution time: 18.0 s; 20 long tasks found.
Net: the LCP element is discovered late because render-blocking CSS/JS must finish first, and then a mountain of third-party + theme JS keeps the main thread busy (TBT 2,810 ms), delaying render.
1.4 Performance Issues by Impact
🔴 Critical (mobile, > 1 s savings / Core-Web-Vitals failure)
- Render-blocking CSS/JS — 1,810 ms estimated savings. Homepage inlines/loads vendor.css, theme.css, custom.css, basic.css, section-slideshow.css, notify-me-button.css as
rel=preloadthen blocking. Inline critical above-the-fold CSS; defer the rest. - Unused JavaScript — 1,645 KiB. Theme + 4+ app scripts (MoEngage SDK, Flits, Whatmore, multi-loader). Lazy-init MoEngage/Whatmore below fold; remove dead app code.
- Total payload 8.3 MB / HTML 2.3 MB. Compress, tree-shake, and split. For a ₹399 T-shirt buyer on patchy 4G, this is a bounce risk.
- Reduce JS execution 18 s / main-thread 39 s. Directly causes the 2,810 ms TBT and the field INP of 302 ms.
🟡 High
- Preconnect overuse — > 4
preconnectconnections (Lighthouse warning). Keep to 2–3 critical origins (cdn.shopify.com, cdn.moengage.com). Trim the duplicate Shopify preconnects. - Inefficient cache lifetimes — 847 KiB savings. Static assets not cached long enough; set long
Cache-Controlon versioned Shopify CDN assets. - Image delivery — 493 KiB savings. Serve AVIF/WebP with
srcset; ensure the hero/slideshow image is notloading="lazy". - CLS 0.157 (lab). Layout-shift culprits present (likely late-loading images/slideshow without reserved dimensions). Reserve space for above-fold media.
- DOM size 5,437 elements (from a 2.3 MB HTML doc). Trim theme sections / lazy-render below-fold rails.
1.5 Resource Transfer Summary (mobile lab)
- Total: ~8.3 MB. Images dominate (493 KiB optimizable), JS is the execution bottleneck (1,645 KiB unused), CSS render-blocks (1,810 ms).
- Third parties: MoEngage (CDP/analytics), Flits (wishlist), Whatmore (shoppable video), Shopify WPM — each adds main-thread cost.
2. Accessibility Audit
Score: 93/100 (🟢 Good). Strong baseline — html lang="en", viewport present, 0 images missing alt (160 images, 18 have empty alt for genuinely decorative elements — acceptable), single logical heading flow on PDP/PLP, form labels present, skip-to-content link present.
2.1 Critical Issues
- None.
2.2 High Priority Issues
- Three
<h1>elements on the homepage (Powerlooklogo,POPULAR CATEGORIES,THE SALE YOUR CART MANIFESTED). Multiple H1s and skipped heading levels dilute the primary-keyword signal for both SEO and screen-reader navigation. Promote only the hero/brand concept to<h1>; demote section titles to<h2>. - Contrast: Lighthouse flags at least one foreground/background pair below 4.5:1. Verify promo-bar / footer text contrast.
2.3 Positive Findings
lang="en"set; viewport configured (mobile-first indexing safe).- 0 images without
alt; decorative images correctly usealt="". - Skip-link, labelled form controls, and ARIA on interactive widgets present.
- PDP/PLP maintain a clean single-
<h1>hierarchy.
3. SEO Audit
Score: 92/100 (🟢 Strong). Product and collection templates are well-optimized. The gaps are concentrated in the homepage heading structure and the blog template.
3.1 Technical SEO
| Check | Status | Evidence |
|---|---|---|
| robots.txt | ✅ | Properly disallows /cart /checkout /account; references Sitemap:; allows crawl of products/collections |
| XML Sitemap | ✅ | Index present (products×2, pages, collections, blogs, agentic_discovery). 1,606 products, 118 collections, 29 blog posts |
| Canonical | ✅ | Self-referencing on homepage, PDP, PLP (verified) |
| HTTPS | ✅ | Enforced (HSTS present); no mixed content (CSP block-all-mixed-content) |
| Mobile-friendly | ✅ | Responsive; viewport set; 95% mobile traffic confirms parity |
| URL structure | ✅ | Clean, hyphenated, keyword-rich (/collections/t-shirts-full-sleeves-t-shirts-for-men) |
3.2 On-Page SEO Issues
- 🔴 Blog template gap (High):
/blogs/style-tipshas no meta description and a 10-character<title>("Style Tips"). With 29 blog posts this forfeits SERP CTR and keyword targeting. Fix: unique, keyword-rich title (50–60 chars) + 150–160 char meta description per post; set a blog-default template. - 🟡 Homepage meta description is fine (158 chars, keyword-rich) — note: an earlier regex pass misread it as truncated; browser-DOM verification confirms the full description is present and correct. No action needed.
- 🟡 Title tag: Homepage title
Powerlook - Buy Trendy Men's Fashion & Clothing Online in India(63 chars) is good. PDP/PLP titles (50–60 chars, keyword + brand) are exemplary. - 🟡 Open Graph:
og:title/og:site_name/og:typepresent, butog:descriptionandog:titleare generic ("Powerlook") on the homepage (verified in DOM). PDP/PLP have rich OG. Add a homepage-specific OG description for social-share previews. Twitter Card (summary_large_image) is set.
3.3 Schema Markup (JSON-LD)
Strong and comprehensive. Detected via browser DOM (not curl, which misses JS-injected JSON-LD):
- Homepage:
Organization(with PostalAddress, ContactPoint, founders asPerson),WebSite+SearchAction(sitelinks search box eligible),WebPage,MerchantReturnPolicy,ItemList(product rail). - PDP:
Product+AggregateRating+Offer/OfferShippingDetails+Brand+FAQPage(Q&A) +BreadcrumbList+ProductGroup. Excellent — star-rating rich results and FAQ snippets are eligible. - PLP:
CollectionPage+BreadcrumbList+ItemList(products) +Organization. - No missing critical schema types for an e-commerce site.
localizationcookie andcontent-language: en-INare set.
3.4 Content Quality (E-E-A-T)
- Experience/Expertise: "Manufacturing Details" block (Powerlook Apparels Pvt Ltd, Goregaon address) and About-page founder story provide real provenance. Own-manufacturing claim is a genuine differentiator vs reseller D2C rivals.
- Authoritativeness: 822K Instagram, press (YourStory/ANI/Sugermint), but no structured PR/award markup and low review volume (30 Trustpilot).
- Trustworthiness: Phone (+91 9696333000), email, 12+ store addresses, returns/refund, privacy, membership all present and linked in footer. ✅
4. International SEO
Not applicable / low priority. The site is India-only (content-language: en-IN, no international shipping, single locale). No hreflang is correct here — adding it would be wrong. No action needed. (If Powerlook later expands to global/diaspora shipping, revisit with hreflang + localized URLs.)
5. Best Practices & Security
Score: 54/100 (🟡 Weak). The low score is almost entirely security-header and modern-standards related, not functional bugs.
5.1 Security Headers (from curl -sI)
| Header | Current | Assessment |
|---|---|---|
| HSTS | max-age=7889238 (~91 days) | 🔴 Too weak. Should be max-age=31536000; includeSubDomains; preload (1 year + subdomains + preload list). Fails Lighthouse "Uses strong HSTS policy." |
| X-Frame-Options | DENY | ✅ |
| X-Content-Type-Options | nosniff | ✅ |
| CSP | block-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests | 🟡 No script-src directive → fails "Ensure CSP is effective against XSS attacks." Add a script-src allowlist (Shopify requires cdn.shopify.com, *.shopify.com, plus app/CDP domains). |
| COOP | not present | 🟡 Missing Cross-Origin-Opener-Policy: same-origin (Lighthouse flags). |
| X-Permitted-Cross-Domain-Policies | none | ✅ |
5.2 Modern Standards
- ✅ Valid HTML5 doctype, UTF-8 charset, no
document.write. - 🟡 Uses deprecated APIs (1 warning) and 6 third-party cookies — typical for a Shopify + CDP (MoEngage) stack; monitor for the 3P-cookie deprecation timeline.
- 🟡 Browser errors logged to console (Lighthouse "Issues" panel) — worth a dev pass to clear.
- ✅ No source maps leaking; no mixed content.
6. Content Quality Assessment
6.1 Image Quality & Authenticity
- No AI-generated images detected in filenames (checked initial HTML image set; 0 matches for Gemini_Generated / ChatGPT_Image / Picsart-AiImageEnhancer / ai0_ / unnamed_1 patterns). Product/lifestyle photography appears real (own-manufacturing brand — authenticity intact, no artisan-brand mismatch).
- 18 decorative images use
alt=""(correct). 0 content images missing alt.
6.2 Trust Signals
- ✅ Phone, email, 12+ store addresses, returns (10-day), privacy, shipping all present.
- ✅ On-site star ratings visible on PDPs (e.g., 5.0 / 4.0 on hero products) and marked up with
AggregateRating. - ⚠️ Low external review volume (30 Trustpilot, 3.9/5) — not a site-quality defect but a CRO/trust gap noted in the business analysis.
6.3 UX Issues
- Homepage heading pollution (3× H1) — see §2.2.
- No breadcrumb navigation visibly rendered on the homepage (expected — breadcrumbs belong on PDP/PLP, where
BreadcrumbListschema is present ✅). - Store locator, track-order, contact, membership all linked in header/footer — navigation is complete.
7. Priority Recommendations
🔴 Immediate (This Week)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 1 | Fix blog template meta description + title (/blogs/style-tips and all 29 posts: no meta desc, 10-char title "Style Tips") | Recovers organic visibility on blog content | Low (theme template) |
| 2 | Collapse homepage to a single <h1> (logo + 2 section headings currently H1) | Clearer keyword signal for SEO + screen readers | Low (Liquid edit) |
| 3 | Strengthen HSTS to max-age=31536000; includeSubDomains; preload | Clears the biggest Best-Practices penalty; security | Low (Cloudflare/header config) |
🟡 Short-Term (This Month)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 4 | Add script-src CSP directive (allowlist Shopify + app/CDP domains) | Clears XSS-efficacy audit; security | Low–Med |
| 5 | Defer/inline critical CSS, eliminate render-blocking (1,810 ms savings) | Direct LCP/FCP improvement on mobile | Med |
| 6 | Lazy-init / tree-shake third-party JS (MoEngage, Flits, Whatmore, multi-loader; 1,645 KiB unused) | Cuts 18 s JS execution, 2,810 ms TBT | Med |
| 7 | Serve AVIF/WebP + srcset; don't lazy-load hero (493 KiB image savings) | LCP + payload | Med |
| 8 | Add homepage-specific OG description (currently generic "Powerlook") | Better social-share CTR | Low |
| 9 | Trim preconnect to 2–3 origins; add COOP: same-origin | Perf + Best-Practices | Low |
🟢 Long-Term (This Quarter)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 10 | Cut total payload (8.3 MB → target < 3 MB) via code-splitting, app consolidation, DOM-size reduction (5,437 → < 1,500) | Sustains mobile CWV in Good; protects value-segment buyers | High |
| 11 | Reserve dimensions for above-fold media to kill lab CLS (0.157) | Visual stability | Med |
| 12 | Long-cache versioned CDN assets (847 KiB savings) | Repeat-visit speed | Low |
| 13 | Add FAQ/Article schema to blog posts; pursue PR/award markup | Rich results, authority | Med |
| 14 | Clear console errors + deprecated-API warning | Best-Practices hygiene | Low |
Summary Score Card
| Category | Score | Grade |
|---|---|---|
| Performance (Mobile, Lighthouse) | 20/100 | 🔴 Poor |
| Performance (Mobile, Field/CrUX) | Needs Improvement (LCP 2.6 s, INP 302 ms, CLS 0.01) | 🟡 |
| Performance (Desktop, Field/CrUX) | Passing | 🟢 |
| Accessibility | 93/100 | 🟢 Good |
| Best Practices | 54/100 | 🟡 Weak |
| SEO | 92/100 | 🟢 Strong |
| Content Quality | — (no AI images; trust signals present) | 🟢 |
| Overall | — | 🟡 Needs Work |
Bottom line: Powerlook is well-built where it's easiest to see (SEO 92, a11y 93, rich schema, improving field CWV), but under-engineered where it hurts most for a 95%-mobile audience — the homepage ships 8.3 MB and a 20/100 mobile Performance score, and the security-header posture (HSTS 91 days, no script-src CSP) drags Best Practices to 54. Three quick wins (blog meta/title, single H1, strong HSTS) are low-effort and high-impact; the mobile payload/JS reduction is the real quarter-long project.
Sources & Evidence
- CrUX Vis (cruxvis.withgoogle.com, origin
https://www.powerlook.in) — phone CWV: LCP 2,608 ms / INP 302 ms / CLS 0.01 (2026-07-26→08-22); 12-week trend table; desktop field "Passed" per PageSpeed Insights. - PageSpeed Insights (pagespeed.web.dev, report 2026-08-27 12:04 UTC, Lighthouse 13.4.1, Moto G Power / slow 4G) — Mobile: Performance 20, Accessibility 93, Best Practices 54, SEO 92, Agentic Browsing 3/4. Lab metrics: FCP 6.8 s, LCP 46.2 s, TBT 2,810 ms, CLS 0.157, SI 17.3 s. Insights: render-blocking 1,810 ms, cache 847 KiB, legacy JS 47 KiB, image delivery 493 KiB, unused JS 1,645 KiB, unused CSS 75 KiB, payload 8,292 KiB, JS execution 18 s, main-thread 39.2 s, 20 long tasks, >4 preconnects. (Desktop Lighthouse lab run failed at Google's backend — RPC::DEADLINE_EXCEEDED — on repeated attempts; desktop field assessment is "Passed," so no desktop lab score is reported rather than guessed.)
- Browser DOM inspection (live homepage) — 5,437 elements, 268 scripts, 88 stylesheets, 160 images (0 missing alt, 18 empty alt), 3
<h1>,html lang="en", viewport set; meta description 158 chars (full, correct);og:title/og:descriptiongeneric "Powerlook" on homepage. - Browser DOM inspection (PDP
/products/black-solid-washed-baggy-fit-denim-jeans) — title 60 chars, meta desc 117 chars, single H1, full Product/BreadcrumbList/FAQ/AggregateRating schema. - Browser DOM inspection (PLP
/collections/t-shirts-full-sleeves-t-shirts-for-men) — title 51 chars, meta desc 152 chars, single H1, CollectionPage/BreadcrumbList schema. - curl (server headers
https://www.powerlook.in/) — HSTSmax-age=7889238(~91 days), X-Frame-Options DENY, X-Content-Type-Options nosniff, CSPblock-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests, COOP absent. - curl (robots.txt, sitemap.xml) — robots well-formed with Sitemap directive; sitemap index lists products×2, pages, collections, blogs, agentic_discovery.
- curl (
/blogs/style-tips) — no meta description,<title>= "Style Tips" (10 chars); 29 blog URLs in sitemap. - business-analysis.md (prior task artifact) — 95.2% phone / 4.8% desktop traffic, ₹399–₹2,499 pricing, 1,606 SKUs, competitor set, own-manufacturing model.