Web Quality Audit: Rynox Gear

Website: https://rynoxgear.com | Date: 2026-08-27 | Platform: Shopify (theme id 143951331395, "REBUY" variant) | Industry: Motorcycle protective gear, luggage & accessories (D2C + retail + dealer)

Business context: rynoxgear.com is a Mumbai-based, bootstrapped manufacturer (founded 2012) serving a strongly mobile-first Indian audience — 85.3% phone / 13.5% desktop / 1.1% tablet per CrUX. 103 SKUs / 818 variants, median variant ₹5,200. Shopify storefront fronted by Cloudflare. See business-analysis.md for the full company baseline. Audit priorities below are weighted for a mobile-dominant, safety-credibility-driven commerce brand.

Executive Summary

Rynox Gear has a solid real-world performance foundation (CrUX Core Web Vitals all "Good and stable" on phone) and strong baseline SEO hygiene (self-canonical, keyword-rich titles/meta, full Open Graph, healthy sitemaps, active review schema). However, Lighthouse lab scores are poor on mobile — Performance 30/100 — driven by heavy render-blocking CSS/JS (the homepage ships 158 scripts and 27 stylesheets) and unoptimized hero imagery. The gap between field ("Good") and lab (LCP 63.5s mobile) means repeat, warm-cache visitors are fine, but cold first-touch visitors on mid-range Android (the overwhelming majority of this audience) get a slow, janky first paint.

Structured data is present but incomplete: Product JSON-LD is missing offers/price/availability (no price rich-result eligibility) and the brand name is inconsistent ("rynoxgears" vs Organization "Rynox Gear"). Collection pages still carry the Shopify default meta description ("Quality and Practical Solutions"), the single most common, highest-ROI fix. Content recency is a brand risk — the blog froze in March 2022.

CategoryMobile ScoreDesktop ScoreGrade
Performance30~30 (lab LCP 10.1s = Poor)🔴
Accessibility8282🟡
Best Practices5050🟡
SEO8585🟢
Overall (avg)6262🟡
Note: PageSpeed Insights rendered identical category-score values for the mobile and desktop panels (30/82/50/85). Desktop lab metrics were captured separately and are materially better than mobile on some measures (FCP 1.0s vs 3.7s) but still Poor on LCP (10.1s) — so Desktop Performance is also graded 🔴. The mobile-first audience (85%) makes the mobile grade the operative one.

1. Performance Audit

1.1 CrUX Real-World Field Data

Core Web Vitals Assessment: Passing on phone (and, per the identical desktop panel, passing widely). All three metrics meet the "Good" threshold and are rated "good and stable" by CrUX Vis.

Source: CrUX Vis, origin https://rynoxgear.com, latest period 2026-07-26 → 2026-08-22 (40 weekly snapshots extracted; first 2025-10-26 → 2025-11-22, last 2026-07-26 → 2026-08-22).

MetricLatest (phone)Threshold GoodRating12-mo trend
LCP2,081 ms≤ 2,500 ms🟢 GoodImproving: 2,195 ms → 2,081 ms
INP164 ms≤ 200 ms🟢 GoodRising but safe: 143 ms → 164 ms
CLS0.01≤ 0.10🟢 GoodRock-steady at 0.01
FCP(field FCP not extracted; lab 3.7s mobile)≤ 1,800 ms
TTFB(lab ~392 ms server processing per server-timing)≤ 800 ms🟢

Interpretation: Real users experience a fast, stable site. INP has crept up ~21 ms over the year (143→164 ms) but remains comfortably Good. The foundation is sound — optimisation effort should target first-touch cold-cache lab performance and conversion UX, not fixing a broken CWV baseline.

1.2 Core Web Vitals (Lighthouse Lab Data)

Source: PageSpeed Insights, 2026-08-27. "Passed" CWV Assessment (field) vs poor lab metrics.

MetricMobileThresholdRatingDesktopThresholdRating
FCP3.7 s≤ 1.8 s🔴 Poor1.0 s≤ 1.8 s🟢 Good
LCP63.5 s≤ 2.5 s🔴 Poor (25×)10.1 s≤ 2.5 s🔴 Poor (4×)
TBT2,200 ms≤ 200 ms🔴 Poor (11×)1,710 ms≤ 200 ms🔴 Poor (8.5×)
CLS0.00≤ 0.10🟢 Good0.00≤ 0.10🟢 Good
SI42.0 s≤ 3.4 s🔴 Poor (12×)14.1 s≤ 3.4 s🔴 Poor (4×)
The 63.5 s mobile LCP is partly a Lighthouse cold-cache/throttle artifact on an extremely script-heavy Shopify theme, but the directional signal is valid: the homepage loads 158 <script> tags and 27 stylesheets before meaningful paint. Desktop LCP of 10.1 s is independently Poor and not an artifact.

1.3 LCP Phase Breakdown (Mobile)

The PSI "LCP breakdown" panel was not cleanly extractable from the DOM. Proxy evidence from the opportunity audit: Render-blocking requests = 1,980 ms estimated savings is the dominant phase — i.e., the browser cannot even discover the LCP element until CSS/JS finish. This is the classic JS-rendered Shopify pattern (pre-resource delay), confirming the fix is inline critical CSS + defer non-critical JS, not just image compression.

1.4 Performance Issues by Impact

ImpactIssueEvidenceEst. SavingsRecommendation
🔴 CriticalRender-blocking CSS/JS27 stylesheets + 158 scripts on homepage; "Render-blocking requests" opp = 1,980 ms~2.0 s LCPInline critical above-fold CSS; defer/async non-critical scripts; load theme + vendor JS lazily
🔴 CriticalUnoptimized hero/feature imagery"Improve image delivery" opp = 326 KiB; 211 images on homepage~0.3 s + bytesServe WebP/AVIF srcset; right-size hero (currently 1200×1200 OG asset used as banner); loading="lazy" below fold
🔴 HighForced reflow / layout thrash"Forced reflow" diagnostic present; TBT 2,200 ms mobileAudit theme JS (slick-carousel, jQuery UI, custom.js) for DOM writes in loops
🟡 MediumLegacy JavaScript"Legacy JavaScript" opp = 58 KiB~58 KiB + TBTAdd babel/polyfill modern targets; drop IE11-era shims
🟡 MediumFont display swap"Font display" opp = 220 ms; Google Fonts (Arvo) loaded without &display=swap enforced~0.2 sSelf-host or add &display=swap; font-display: swap in @font-face
🟡 MediumExcessive preconnect (8+)Headers show 8+ rel=preconnect (Shopify CDN, Google APIs, jsdelivr, code.jquery.com)minorTrim to 2–3 high-value hosts; the rest dilute priority

1.5 Resource Transfer Summary

CategorySignalNote
Images211 <img> on homepage; 184 on PDPHeavy imagery is core to a gear brand — optimize, don't cut
JS158 <script> tags, jQuery 3.5.1 + jQuery UI + slick + vendor.js + custom.jsPrimary performance tax
CSS27 stylesheets (theme.scss + slick + jquery-ui + app CSS)Consolidate/critical-inline
3rd-partyMeta Pixel, Google Ads, Klaviyo, Judge.me, REBUY, Pandectes, YouTube iframes (5 on HP)3 of 5 YouTube iframes errored during automated checks (playback-ID failures) — verify embeds

2. Accessibility Audit

2.1 Critical Issues

  • Multiple H1s on the homepage (4): ["", "AIR GT 4 JACKET – CE CERTIFIED CLASS A", "H2GO PRO RAIN PANTS", "HELIUM GT GLOVES"]. One is the empty logo H1; the product-slider captions are also marked H1. Screen readers and Google expect a single page-level H1. Product-slider titles should be h2 (they already are elsewhere) — fix the template so only the logo/hero is h1.
  • PDP has 2 H1s ("ADVENTO PRO PANTS" appears twice — visible + a duplicate). Collapse to one.

2.2 High Priority Issues

  • Images missing alt (93 of 211 = 44% on homepage; 122 of 184 = 66% on PDP). The no-alt set includes nav icons (NavIcon-Jackets.png, etc.) and the hero banner (Mobile_Banner_1080_X_1920_Option_A_400x.jpg). Nav icons and the banner are content-bearing for low-vision users and image search — they need descriptive alt, not omission. (31 homepage images have alt="" — acceptable only if genuinely decorative, e.g. the base64 spacer GIFs.)
  • No ARIA attributes used anywhere on the homepage (ariaAttrs: 0). Interactive widgets (sliders, mega-menu, variant selectors) rely on native semantics only; verify keyboard operability of the product carousel and mega-nav.

2.3 Positive Findings

  • <html lang="en"> present (minor: could be en-IN to match content-language: en-IN).
  • <meta name="viewport"> present — mobile-friendly.
  • Single visible H1 hierarchy on inner pages is mostly logical.
  • aria-label on YouTube iframes present.
  • Accessibility score 82/100 — above average for a Shopify theme.

3. SEO Audit

3.1 Technical SEO

CheckStatusEvidence
robots.txt🟢 GoodReferences Sitemap:, disallows /admin, /cart/, /checkout, /account, variant/filter crawl traps; allows agents via UCP/MCP
XML Sitemap🟢 Good104 products, 123 collections, 151 pages, 9 blog posts — all indexed; sitemap.xml index present
Canonical URLs🟢 GoodSelf-referencing on homepage, PDP, collection, page (verified)
Indexation🟢 GoodNo noindex on important templates; crawlable
URL structure🟢 GoodClean hyphenated slugs (/products/rynox-advento-pants-black)
HTTPS🟢 GoodHSTS enforced; upgrade-insecure-requests; no mixed content
Mobile-friendly🟢 GoodResponsive, viewport set, 85% mobile audience
Variant param pollution🟢 Good0 ?variant= links on homepage product grid (clean)
Hreflang⚪ N/ASingle locale (en-IN), India-only D2C — correctly no hreflang needed

3.2 On-Page SEO Issues

IssueSeverityEvidenceFix
Collection pages use Shopify default meta description ("Quality and Practical Solutions")🔴 High/collections/jackets meta = "Quality and Practical Solutions" (verified via curl)Set unique, keyword-rich collection meta descriptions in admin (P0 — bulk edit)
Homepage title 64 chars, keyword-rich🟢 Good"Motorcycle Protective Gear, Luggage and Accessories – Rynox Gear"Keep
Homepage meta description 159 chars, keyword-rich🟢 Good"Premium Motorcycle Protective Gear- Riding Jackets… free shipping across India."Keep
Open Graph + Twitter Card complete🟢 Goodog:title/description/image/type/url + twitter:card=summary_large_imageKeep; verify og:image is 1200×630 (current asset is 1200×1200)
Multiple H1s🔴 HighSee §2.1Single H1 per page
Keyword targeting on collection titles🟡 MediumCollection title not keyword-optimized (could not extract; verify)Add "Motorcycle Jackets Online – Rynox Gear" style titles

3.3 Schema Markup

TypePresentStatus
Organization (homepage)✅ name, logo, url, sameAs (IG/FB/X/YT)⚠️ Missing telephone, email, address, foundingDate
WebSite (homepage)OK
Product (homepage ×3, PDP ×2 split blocks)⚠️ Missing offers/price/availability in both blocks → no price rich result
AggregateRating (PDP)✅ 4.67 / 3 reviewsOK — star rich result eligible
BreadcrumbListVisual breadcrumbs exist on PDP but no structured data
LocalBusinessRecommended (Mumbai HQ + 5 Exclusive Stores)
FAQPage / ArticleBlog frozen since 2022; add Article schema if revived

Product schema detail (PDP): Two JSON-LD blocks — block A has brand: "rynoxgears" + sku: "RX-PT-ADVNTPRO-BK/BK-DB-2XL" but no offers; block B has aggregateRating but no brand/offers/price. Net result: no price or availability in Product structured data, and a brand-name inconsistency ("rynoxgears" lowercase vs Organization "Rynox Gear") that fragments entity signals. Add a single consolidated Product block with brand.name: "Rynox Gear", offers (price/priceCurrency/availability), sku, image, aggregateRating.

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

SignalStatusNote
Experience🟢Rider-founded narrative (About Us), #ProjectRAID, Dakar association
Expertise🟢CE Class AA/A, D3O, in-house R&D claims; Crash Replacement Program
Authoritativeness🟡Strong social (151K IG) but no press/awards schema; blog stale
Trustworthiness🟡Phone + address published; email not published (support form only); policies in footer
Content recency🔴Blog last updated March 2022 — 4+ years stale; kills Discover eligibility & community SEO

4. International SEO

Not applicable — the store is a single-locale (en-IN) India-only D2C operation with no localized subdirectories or hreflang. This is the correct configuration for the current business; do not add hreflang. If international D2C shipping launches (a noted business-analysis opportunity), then stand up /en-in/, /en-us/, etc. with proper hreflang + self-canonical.


5. Best Practices & Security

5.1 Security Headers

HeaderValueAssessment
HSTSmax-age=7889238 (~91 days)🟡 Missing includeSubDomains + preload
X-Frame-OptionsDENY🟢
X-Content-Type-Optionsnosniff🟢
CSPblock-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests🔴 No script-src directive — cannot mitigate XSS; no object-src 'none'
X-XSS-Protection1; mode=block🟢 (legacy, harmless)
COOP/COEPabsent🟡 Not set

Recommendation: Add a real CSP with script-src (nonce/hash-based, allowing cdn.shopify.com, jsdelivr, code.jquery.com, ajax.googleapis.com, Meta/Google pixels) and object-src 'none'. Upgrade HSTS to max-age=31536000; includeSubDomains; preload.

5.2 Modern Standards

  • No document.write / synchronous XHR observed; valid HTML5 doctype; UTF-8 declared. ✅
  • 27 stylesheets / 158 scripts — excessive (best-practices tax; contributes to TBT). 🟡
  • Source maps (.map) not confirmed leaked — verify in production. 🟡
  • 5 YouTube iframes on homepage; 3 returned playback-ID errors during automated checks (may be region/embed-restriction, not a code defect) — spot-check on real devices. 🟡

6. Content Quality Assessment

6.1 Image Quality & Authenticity

  • No AI-generated image signatures detected (no Gemini_Generated_Image_, ChatGPT_Image_, ai0_.png, unnamed_1.png patterns in sampled filenames). Product/lifestyle imagery appears to be real photography on cdn.shopify.com — appropriate for a manufacturer brand where authenticity is a differentiator. ✅
  • Hero/banner and nav-icon alt text is missing (see §2.2) — a real accessibility + image-search gap on an imagery-led catalog.

6.2 UX Issues

  • Mobile-first but heavy: 85% phone audience served a 158-script homepage — first-touch LCP is Poor in lab. Prioritize mobile render-path.
  • Blog frozen 2022: dead content engine for a community brand.
  • No visible size/fit tool, loyalty programme, or checkout EMI (from business analysis) — conversion, not quality, gaps; noted for context.

7. Priority Recommendations

🔴 Immediate (This Week)

#IssueImpactEffort
1Unique meta descriptions on all 123 collections (replace "Quality and Practical Solutions" default)SERP CTR on category pagesLow — bulk edit
2Consolidate Product JSON-LD: add offers/price/availability + fix brand to "Rynox Gear"Price + star rich resultsMedium — theme edit
3Inline critical CSS + defer non-critical JS (27 stylesheets / 158 scripts)Mobile LCP/TBT (1,980 ms saving)High — theme refactor
4Single H1 per page (homepage 4→1, PDP 2→1)Heading/SEO clarityLow — template

🟡 Short-Term (This Month)

#IssueImpactEffort
5Add descriptive alt to nav icons + hero banners (44–66% currently missing)A11y + image searchMedium — bulk
6Add BreadcrumbList schema to PDP/collection (visual crumbs exist)SERP breadcrumbsMedium
7Real CSP with script-src; HSTS preloadXSS mitigationMedium
8Self-host/:swap fonts (220 ms saving); drop legacy JS (58 KiB)PerformanceLow
9Complete Organization schema (phone, email, address, foundingDate) + add LocalBusinessEntity/rich resultsLow
10og:image to 1200×630; trim preconnect to 2–3Social + perfLow

🟢 Long-Term (This Quarter)

#IssueImpactEffort
11Revive blog/content engine (frozen Mar 2022) + Article schemaDiscover/community SEOMedium
12Optimize hero imagery (WebP/AVIF srcset, lazy below-fold)LCP bytesMedium
13Add FAQPage schema to key pagesFAQ rich resultsLow
14Add <html lang="en-IN">Language precisionTrivial

Summary Score Card

CategoryScoreGrade
Performance (Mobile, Lighthouse)30/100🔴 Poor (field CWV Passing)
Performance (Desktop, Lighthouse)~30/100🔴 Poor (LCP 10.1s)
Accessibility82/100🟡 Good
Best Practices50/100🟡 Fair
SEO85/100🟢 Good
Content Quality~70/100🟡 (stale blog, alt gaps)
UX (mobile-first fit)~65/100🟡 (heavy first-touch)
Overall~62/100🟡 Fair

Bottom line: Rynox Gear's real users have a fast, stable experience (CrUX all-Good) and the site has clean technical SEO bones. The urgent work is lab performance on mobile (render-blocking JS/CSS, image delivery) and structured-data completeness (price/availability, brand consistency, breadcrumbs) — both directly tied to the 85% mobile, conversion-sensitive audience. The single highest-ROI, lowest-effort win is fixing the collection-page meta descriptions.


Citations

  • https://cruxvis.withgoogle.com/#/ — CrUX field CWV (phone): LCP 2,081 ms, INP 164 ms, CLS 0.01, "good and stable", 40 weekly snapshots 2025-10-26 → 2026-08-22; device split Phone 85.3% / Desktop 13.5% / Tablet 1.1%
  • https://pagespeed.web.dev/ — Lighthouse lab (2026-08-27): Mobile scores Perf 30 / A11y 82 / BP 50 / SEO 85; Mobile FCP 3.7s, LCP 63.5s, TBT 2,200ms, CLS 0, SI 42.0s; Desktop FCP 1.0s, LCP 10.1s, TBT 1,710ms, CLS 0, SI 14.1s; opportunities Render-blocking 1,980ms, Image delivery 326 KiB, Font-display 220ms, Legacy JS 58 KiB
  • curl -sI https://rynoxgear.com/ — Security headers (HSTS, XFO DENY, CSP block-all-mixed-content, X-CTO nosniff, X-XSS 1;mode=block), 8× preconnect, content-language: en-IN, Shopify/Cloudflare
  • curl -sL https://rynoxgear.com/robots.txt — crawl rules + Sitemap: directive
  • https://rynoxgear.com/sitemap.xml + sub-sitemaps — 104 products, 123 collections, 151 pages, 9 blogs
  • Browser DOM (homepage + PDP) — 158 scripts / 27 stylesheets; homepage 4 H1s, 93/211 imgs no-alt; PDP 2 H1s, 122/184 no-alt, AggregateRating 4.67/3, breadcrumbs present (no schema), Judge.me active; JSON-LD Organization/WebSite/Product; Organization missing contact fields; Product missing offers/price + brand "rynoxgears" inconsistency
  • curl -sL https://rynoxgear.com/collections/jackets — meta description "Quality and Practical Solutions" (Shopify default)
  • business-analysis.md (same workspace) — company baseline, 85% mobile audience, 103 SKUs, blog frozen Mar 2022, trust signals