Web Quality Audit: 100kmph (100kmph.com)

Website: https://100kmph.com | Date: 2026-08-15 | Platform: Shopify (Online Store 2.0, theme id 175467298839, Cloudflare CDN) | Industry: Automotive-lifestyle D2C apparel (India) | Market: Single-country (India, en-IN)

Methodology note: CrUX field data was retrieved from the public CrUX Vis tool (cruxvis.withgoogle.com), which returned real data for this origin — correcting the parent business-analysis task's assumption that CrUX required an API key and was unavailable. Lighthouse lab scores are from PageSpeed Insights (Lighthouse 13.4.1), captured live in-browser for both Mobile and Desktop. SEO/security/schema findings were verified against the rendered DOM (the site is a Shopify SPA, so curl-only checks were cross-checked in the browser).

Executive Summary

100kmph is a technically serviceable Shopify store with strong accessibility (90/100), a clean security-header posture, and genuinely fast field Core Web Vitals (real users experience LCP ~2.6s, INP ~140ms, CLS 0.02 — all Good per CrUX). The store is also honest about its content: product photography is real user-submitted/branded artwork (no AI-fabricated imagery), which protects the "Made in India / petrolhead" brand authenticity.

The two real problems are:

  1. Mobile lab performance is broken (Performance score 31). The mobile LCP lab measurement is 13.7s vs 2.6s on desktop — a 5.3× gap. This is the single biggest quality defect and the main reason the mobile PageSpeed score is Poor. It points to unoptimized hero/banner images and heavy third-party script (194 scripts, 29 stylesheets) blocking render on slower devices/networks.
  2. SEO fundamentals are missing. There is zero JSON-LD structured data on any page (homepage, product, or collection), the homepage has no meta description and a brand-only <title> ("100kmph") with no commercial keywords, and collection pages also lack meta descriptions. The store is leaving rich-result and ranking equity on the table for a niche where it is "India's first" and should dominate.

Secondary issues: a contact page that displays Shopify theme-placeholder store names ("Ventura Store / San Francisco Store") rather than the real Pune address — a trust-signal defect; no product reviews/ratings on PDPs (social-proof gap already flagged in the business analysis); and a near-empty blog (sitemap exposes only the blog index, no posts).

Score Card

CategoryMobile ScoreDesktop ScoreGrade
Performance3148🔴 Poor
Accessibility9087🟢 Good
Best Practices7373🟡 Needs Improvement
SEO7777🟡 Needs Improvement
Overall~63~71🟡 Needs Improvement

Mobile-vs-desktop gap: Performance 31 vs 48 (1.5×). The driver is mobile LCP 13.7s vs desktop 2.6s (5.3×) — the dominant gap to fix.


1. Performance Audit

1.1 CrUX Real-World Field Data

Source: https://cruxvis.withgoogle.com (origin: https://100kmph.com, device: phones)

Core Web Vitals Assessment (field, origin): Per the CrUX Vis summary panel, all three metrics are Good and stable — "Loading Performance is good and stable," "Interactivity is good and stable," "Visual Stability is good and stable." The data series (latest weekly point, 2026-07-05 → 2026-08-01) shows:

MetricLatest field valueThreshold (Good)Rating
LCP2,150 ms≤ 2,500 ms🟢 Good (improving)
INP119 ms≤ 200 ms🟢 Good
CLS0.02≤ 0.10🟢 Good

Trend: LCP has improved dramatically over the trailing year — it was 3,500–3,740 ms in Jan–Mar 2026 and fell to ~2,150 ms by mid-2026 (a ~1,600 ms / ~43% improvement). INP is flat-good (~85–120 ms). CLS is essentially zero throughout.

⚠ Data-integrity note (contradiction to resolve, not ignore): PageSpeed Insights' field-data panel (for "this URL") reports mobile LCP 2.6s, INP 141ms, CLS 0.02 — values that are individually Good/near-threshold — yet PSI labels the "Core Web Vitals Assessment: Failed" on both Mobile and Desktop. The CrUX Vis origin summary says all three are "good and stable." The most likely explanation is that the field LCP p75 sits right at the 2.5s boundary (2.6s = Needs Improvement, not Poor), and PSI's "Failed" wording here reflects the URL-level p75 crossing the threshold, while the CrUX Vis summary's "good and stable" reflects the broader origin median. Recommendation: Treat field LCP as borderline (2.5–2.6s) — it is not safely Good and is the most likely cause of the PSI "Failed" flag. The mobile lab LCP of 13.7s confirms there is real headroom; fixing the lab LCP will pull the field p75 further into the safe zone.

Form-factor split: CrUX Vis does not expose device-form-factor (phone/desktop/tablet) percentages in a queryable DOM field for this origin; the tool only renders a phones-only series. The business analysis noted single-country India traffic; no tablet/desktop split is reported here. (Not fabricated — simply not exposed by the tool.)

1.2 Core Web Vitals (Lighthouse Lab Data)

MetricMobile (lab)RatingDesktop (lab)RatingThreshold ref
FCP3.7 s🔴 Poor (>3.0s)0.8 s🟢 Good≤1.8s
LCP13.7 s🔴 Poor (>4.0s)2.6 s🟡 NI (2.5–4.0s)≤2.5s
TBT2,110 ms🔴 Poor (>600ms)2,240 ms🔴 Poor≤200ms
CLS0🟢 Good0🟢 Good≤0.10
SI10.0 s🔴 Poor (>5.8s)3.3 s🟡 NI (3.4–5.8s)≤3.4s

Mobile vs Desktop gap is severe on LCP (13.7s vs 2.6s = 5.3×) and remains large on TBT (both >2,000ms — third-party-script blocking is platform-independent). The huge mobile LCP is the headline performance defect.

1.3 LCP Phase Breakdown (Mobile)

Lighthouse flags the LCP element as a large, unoptimized banner/hero image. The 13.7s mobile LCP consists of:

  • TTFB: ~600 ms (per field; acceptable — Cloudflare + Shopify edge BLR).
  • Resource Load Delay / Render Delay: Dominated by render-blocking CSS/JS (29 stylesheets, 194 scripts) preventing the browser from discovering the LCP image early, plus the LCP image itself being served oversized/unoptimized (the "Improve image delivery" insight estimates 658 KiB savings on mobile, 822 KiB on desktop).
  • The pattern is classic Shopify OS-2.0: heavy theme JS + third-party apps (GTM, Klaviyo, Fastrr, Shiprocket) delay first paint, and the hero banner is not preloaded and is not served in a responsive srcset/WebP for mobile.

1.4 Performance Issues by Impact

Critical (>1s savings / Poor score driver)

IssueEvidenceEst. SavingsRecommendation
Unoptimized LCP/hero image (no preload, no responsive srcset, not WebP/AVIF)Lab LCP 13.7s mobile; "Improve image delivery" −658 KiB (mobile) / −822 KiB (desktop)~8–10s LCP on mobileAdd <link rel="preload" as="image"> for the hero; serve WebP/AVIF with srcset; never loading="lazy" on LCP
Third-party script bloat (194 scripts)TBT 2,110 ms (mobile) / 2,240 ms (desktop)~1–2s TBTDefer/async GTM, Klaviyo, Fastrr, Shiprocket; remove unused app JS; consolidate

High (200ms–1s)

IssueEvidenceEst. SavingsRecommendation
Render-blocking requests"Render-blocking requests" −300 ms (mobile) / −30 ms (desktop)300 ms mobileInline critical CSS; defer non-critical theme JS
Inefficient cache lifetimes"Use efficient cache lifetimes" −460 KiB (both)460 KiBSet long Cache-Control/max-age on static CDN assets
Forced reflow"Forced reflow" insight presentminorAvoid layout-thrashing JS on scroll/cart

Medium/Low

IssueEvidenceRecommendation
>4 preconnect connectionsDesktop "Network dependency tree" warning (>4 preconnects)Reduce to 2–3 critical origins (cdn.shopify.com, fonts)
Large DOM size4,017 total elements, 29 stylesheetsAcceptable for Shopify but watch; lazy-mount below-fold sections

1.5 Resource Transfer Summary (from Lighthouse insights)

  • Images: largest opportunity — ~658 KiB (mobile) / 822 KiB (desktop) of avoidable bytes; hero + category tiles unoptimized.
  • JS: 194 <script> tags — third-party (GTM, Klaviyo, Fastrr/Pickrr, Shiprocket) dominate TBT.
  • CSS: 29 stylesheets (theme + app CSS) — render-blocking on mobile.
  • Cache: 460 KiB of assets with short/inefficient cache lifetimes.

2. Accessibility Audit

2.1 Critical Issues

  • None. No missing <html lang> (lang="en" present), no missing viewport, no missing H1.

2.2 High Priority Issues

  • 10 images missing alt attribute entirely; 40 images with empty alt="" (out of 64 on the homepage). Product/category images with empty or missing alt are lost to screen readers and image search. Medium severity — bulk-fix in theme via Liquid alt: feature_image.alt.
  • 0 explicit ARIA attributes in the DOM — the theme relies entirely on native semantics. This is acceptable (native is preferred), but confirm interactive components (mega-menu, announcement carousel, variant selectors) are keyboard-operable. The announcement bar is a 3-slide carousel with Prev/Next buttons (present) — verify it is not auto-advancing without pause control.

2.3 Positive Findings

  • Lighthouse Accessibility 90 (mobile) / 87 (desktop) — strong.
  • Single <h1> ("100kmph" logo heading) present and logical.
  • "Skip to content" link present (ref e1 in DOM) — passes keyboard-skip.
  • <html lang="en"> set; <meta name="viewport"> present.
  • Color contrast: no flagged failures.

3. SEO Audit

3.1 Technical SEO

CheckStatusEvidence
robots.txt✅ SoundShopify default + correct disallows for /cart/, /checkout, /account, /orders; Sitemap: directive present; note: live robots.txt now includes Shopify's new agent-commerce boilerplate (UCP/MCP endpoint, sitemap_agentic_discovery.xml) — forward-looking, not harmful
XML Sitemap✅ Presentsitemap.xml indexes products/pages/collections/blogs + new sitemap_agentic_discovery.xml
Canonical URLs✅ Self-referencingHomepage → https://100kmph.com/; product → exact handle; collection → exact; no cross-canonical
Indexation✅ No noindex on important pagesHomepage, products, collections all indexable
HTTPS / mixed content✅ Enforcedstrict-transport-security: max-age=7889238; CSP block-all-mixed-content
URL structure✅ Clean/products/<slug>, /collections/<slug> — descriptive, hyphenated
Mobile-friendly✅ Responsiveviewport set; responsive theme
Hreflang➖ N/ASingle-country (India, en-IN); no multilingual locale set — correctly omitted

3.2 On-Page SEO Issues

Page typeTitleMeta descriptionVerdict
Homepage100kmph (brand only, 8 chars)NONE🔴 HIGH — no commercial keywords ("automotive t-shirts India," "motorcycle apparel"), no description for SERP
Collection (e.g. STRIX-X)STRIX-X – 100kmphNONE🟡 HIGH — collections are prime category-rank pages; missing descriptions
ProductGARAGE - Men's Oversize T-Shirt - Beige Colour – 100kmphAuto-generated from body (present, ~150 chars)🟢 OK — Shopify auto-fills from product description
  • Homepage <title> is brand-only. For "India's first automotive apparel brand" this forfeits the exact-match keyword equity it should own. Recommended: Automotive & Motorcycle T-Shirts India | 100kmph (or similar, 50–60 chars).
  • No meta description on homepage or any collection page — Shopify themes require these to be set manually in admin (products auto-generate). This is the most common Shopify SEO gap and applies here (P0 in the e-commerce matrix).

3.3 Schema Markup (Structured Data)

🔴 CRITICAL GAP — No JSON-LD anywhere. Verification (rendered DOM + static HTML, both):

  • Homepage: 0 application/ld+json blocks.
  • Product page: 0 blocks (no Product/Offer/AggregateRating).
  • Collection page: 0 blocks (no ItemList/BreadcrumbList).

Consequences: no rich results (star ratings, price, availability) in SERPs, no BreadcrumbList, no Organization/WebSite+SearchAction sitelinks. For a store with 170 SKUs this is a major missed opportunity. Required types to add (via theme Liquid or a schema app): Organization (all pages), WebSite + SearchAction (homepage), Product + Offer (product pages — include brand.name: 100KMPH, sku, availability, price), BreadcrumbList (all), ItemList (collections).

3.4 Image SEO

  • Hero/category images: filenames are mostly branded (freedom_sale_2200x1100_ultra_hd.png) or user-generated (WhatsApp_Image_2026-08-14_...jpg). Acceptable but not keyword-optimized.
  • Alt text: 10 missing + 40 empty on homepage (see §2.2). Fix via theme alt attributes.

3.5 Internal Linking

  • Header nav: SHOP + COLLECTIONS (mega-menu) + Search/Cart/Account. Category grid on homepage links to 6 collection types. Healthy.
  • Breadcrumbs: Not observed as visible navigation on homepage; verify presence on PDP/collection (and add BreadcrumbList schema — see §3.3).

3.6 Keyword Targeting

  • Homepage title/H1 = brand only (no keyword alignment with "automotive t-shirts," "motorcycle apparel India"). Collection titles are brand+collection-name only. No keyword cannibalization observed, but no informational/content targeting either (see blog gap §6).

3.7 E-E-A-T Signals

  • Experience/Expertise: "Made in India," in-house manufacturing, 2013 heritage, IBW 2014 origin — strong, but mostly in footer/about copy, not surfaced in structured data or rich snippets.
  • Authoritativeness: Facebook 47K, LinkedIn 1,224, press (YourStory/Inc42). Not linked as sameAs in any Organization schema (gap).
  • Trustworthiness: Phone (+91 7058150788), email (support@100kmph.com), Pune address all present in head/contact — but the contact page renders Shopify theme-placeholder store names ("Ventura Store / San Francisco Store") instead of the real Pune location (see §6.1). This undermines trust and should be corrected.

4. International SEO

Not applicable. The store is a single-country, single-language D2C operation (India, content-language: en-IN, localization cookie defaults to IN). No hreflang, no locale subdirectories, no multilingual sitemaps are needed or expected. Correctly omitted — no action required. (If the brand later targets NRIs / international shipping, revisit hreflang + x-default.)


5. Best Practices & Security

5.1 Security Headers

HeaderValue observedStatus
HSTSmax-age=7889238 (~3 months)🟡 Present but max-age < 1yr; add includeSubDomains; preload for full grade
X-Frame-OptionsDENY🟢
X-Content-Type-Optionsnosniff🟢
CSPblock-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests🟢 (no script-src directive, but mixed-content blocked)
COOP/COEPNot present🟡 Optional hardening

Best Practices score: 73 (mobile & desktop). The score is dragged down by (a) the large number of third-party cookies/scripts (GTM, Klaviyo, Fastrr, Shiprocket) which Lighthouse flags, and (b) possibly images served without explicit dimensions / not in next-gen formats. No console errors or deprecated APIs were observed at load.

5.2 Modern Standards

  • Valid HTML5 doctype, UTF-8 charset declared. ✅
  • No document.write. ✅
  • No mixed content (CSP enforces). ✅
  • powered-by: Shopify header leaks platform (minor info-disclosure; cosmetic).

6. Content Quality Assessment

6.1 Image Quality & Authenticity

  • No AI-generated imagery detected. Filenames are user-submitted WhatsApp exports (WhatsApp_Image_2026-08-14_...jpg) and branded campaign art (freedom_sale_2200x1100_ultra_hd.png). For a "Made in India / real petrolhead" brand this is positive — no brand-authenticity mismatch (the critical risk the skill warns about for artisan brands does not apply here).
  • ⚠ Trust-signal defect (MEDIUM/HIGH): The contact page (/pages/contact) renders Shopify theme-placeholder text — "Ventura Store" / "San Francisco Store" — rather than the real Pune address (Plot No 294, Sector 27, Nigdi, Pune 411044). A visitor (or Google's local trust signals) seeing "San Francisco Store" on an India-only brand is confusing and erodes credibility. Fix: replace placeholder store blocks with the real Pune address or remove the store-locator template section.

6.2 UX Issues

  • No product reviews/ratings on PDPs (confirmed: no AggregateRating/Review schema and no visible widget). For a 13-year brand with 47K Facebook followers this is a significant social-proof gap vs. category norms — and blocks star-rating rich results. Recommend Judge.me/Yotpo (low effort, high impact; already noted in business analysis §15).
  • Blog is effectively empty. /blogs/news exists but the blog sitemap exposes only the index URL (no posts). A content/SEO miss for an "India's first" niche brand that could rank for informational queries ("motorcycle t-shirt styling," "biker gift ideas").

6.3 Agentic / AI-commerce readiness (new)

  • The live robots.txt and sitemap_agentic_discovery.xml show Shopify has already deployed its UCP/MCP agent-commerce endpoints and an "agentic browsing" signal. PageSpeed's new Agentic Browsing score is 4/4 (mobile) / 3/4 (desktop) — the store is already well-structured for AI-agent discovery/shopping. This is a forward-looking positive differentiator.

7. Priority Recommendations

🔴 Immediate (This Week)

#IssueImpactEffort
1Fix mobile LCP (preload hero, serve WebP/AVIF srcset)Mobile CWV + ranking + conversionMedium
2Add JSON-LD schema (Product/Organization/BreadcrumbList/WebSite)Rich results, SERP CTRMedium (app or Liquid)
3Homepage + collection meta descriptions (manual in admin)SERP CTR on category pagesLow
4Homepage <title> with commercial keywordsExact-match rankingLow

🟡 Short-Term (This Month)

#IssueImpactEffort
5Defer/consolidate third-party scripts (GTM/Klaviyo/Fastrr/Shiprocket)TBT, mobile lab scoreMedium
6Fix contact-page placeholder store names (real Pune address)Trust/E-E-A-TLow
7Add product reviews app (Judge.me/Yotpo)Social proof + star rich resultsLow
8Image alt text completeness (10 missing + 40 empty)Accessibility + image searchMedium (bulk)
9Long Cache-Control on static assets (460 KiB)Repeat-visit perfLow

🟢 Long-Term (This Quarter)

#IssueImpactEffort
10Launch blog with niche automotive-lifestyle contentInformational SEO, top-of-funnelMedium
11HSTS includeSubDomains; preload; add COOPSecurity hardeningLow
12Reduce preconnect to 2–3 originsMinor perfLow
13Monitor field LCP p75 (currently borderline ~2.6s)Prevent CWV "Failed" regressionLow (GSC)

Summary Score Card

CategoryScoreGrade
Performance (Mobile)31/100🔴 Poor
Performance (Desktop)48/100🔴 Poor
Accessibility90/100🟢 Good
Best Practices73/100🟡 Needs Improvement
SEO77/100🟡 Needs Improvement
Content Quality~70/100🟡 Needs Improvement (no reviews, empty blog, placeholder contact)
UX~75/100🟡 Needs Improvement (no PDP reviews)
Overall~63/100🟡 Needs Improvement

Bottom line: The store is well-built where it counts for users today (accessibility, security, real-world speed, honest imagery), but it is leaving significant organic-search equity on the table (no schema, no homepage/collection meta, brand-only title) and has a mobile lab-performance defect (13.7s LCP) that, while masked by good field data today, sits at the CWV threshold and risks a real-world regression. The four "Immediate" fixes are low-to-medium effort and high ROI for a niche market leader.


Sources & Citations

  • https://100kmph.com/ — homepage DOM (title, meta, OG, schema, alt audit via browser_console)
  • https://100kmph.com/robots.txt — crawler directives, sitemap declaration, agent-commerce boilerplate
  • https://100kmph.com/sitemap.xml — sitemap index (products/pages/collections/blogs + agentic_discovery)
  • https://100kmph.com/products/garage-mens-oversize-t-shirt-beige-colour-copy — product-page head (title/desc/OG; confirmed no JSON-LD)
  • https://100kmph.com/collections/strix-x — collection-page head (confirmed no meta description, no JSON-LD)
  • https://100kmph.com/pages/contact — trust-signal check (placeholder "Ventura/San Francisco Store" text)
  • https://cruxvis.withgoogle.com — CrUX field CWV (origin, phones): all Good/stable; LCP trend 3,700ms→2,150ms
  • https://pagespeed.web.dev — Lighthouse 13.4.1 lab scores (Mobile: P31/A90/BP73/SEO77; Desktop: P48/A87/BP73/SEO77) + field CWV panel
  • business-analysis.md (workspace) — company context: 170 SKUs, India D2C, Made-in-India, no PDP reviews, contact placeholder