Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shoplint

Audit any Shopify storefront for speed, SEO, image, and revenue issues — no login, no API keys, just a URL.

npx shoplint yourstore.com

shoplint crawls a storefront exactly the way Google and your customers see it — the public HTML — and produces a scored, actionable report in your terminal, as JSON, or as a shareable HTML file.

  shoplint report — https://examplestore.com
  Shopify storefront · 3 pages · audit of home, product, collection
────────────────────────────────────────────────────────────
  Overall score: 68/100  grade C
────────────────────────────────────────────────────────────

  Performance  55/100 (C)
    ✖ 4 render-blocking script(s) in <head> (no async/defer)
    ▲ ~2.1 MB of JavaScript on the home page (measured 28 scripts)
    ▲ 46 external scripts on home page

  Images  72/100 (B)
    ▲ 19/64 images missing alt text on product page
    ▲ Oversized image (1,240 KB) on home page

  Installed apps & trackers
    ℹ Klaviyo — 3 script(s), ~310 KB
    ℹ Judge.me Reviews — 2 script(s), ~180 KB
    ▲ Detected apps/trackers add ~780 KB of JavaScript

  Revenue opportunities
    $ No product bundle offers detected — bundles typically lift AOV 10–30%
    $ No free-shipping threshold message detected

Why

Slow, under-optimized storefronts silently tax every visitor: worse Core Web Vitals → worse rankings → fewer sessions, and heavier pages → lower conversion. Most merchants find out only after paying an agency for an audit. shoplint gives you the same first-pass audit in thirty seconds, free.

Install

# one-off
npx shoplint yourstore.com

# or install globally
npm install -g shoplint
shoplint yourstore.com

Requires Node 18.17+.

Usage

shoplint examplestore.com                       # terminal report
shoplint examplestore.com --verbose             # include passed checks
shoplint examplestore.com --json > report.json  # machine-readable
shoplint examplestore.com --html report.html    # shareable client-ready report

The exit code is 1 if any critical issue is found, 0 otherwise — so you can run shoplint in CI and fail the build when a theme change ships a regression:

# .github/workflows/storefront-audit.yml
- run: npx shoplint yourstore.com

What it checks

Category Examples
Performance render-blocking scripts, total JS transfer size, script count, HTML weight, response time, resource hints
SEO titles & meta descriptions (presence + length), canonicals, accidental noindex, H1 structure, Open Graph tags, robots.txt, sitemap.xml
Images alt-text coverage, missing width/height (CLS), lazy loading below the fold, oversized files, legacy formats, products with no/one photo
Structured data Product schema (price/availability rich results), aggregateRating, Organization/WebSite, BreadcrumbList, invalid JSON-LD
Installed apps & trackers identifies 50+ known Shopify apps & pixels from their scripts and measures what each costs in KB
Revenue opportunities missing bundles, quantity breaks, cross-sells, free-shipping thresholds, reviews/social proof

The last two categories are informational — they never affect the score.

How it works

Every Shopify storefront exposes public, unauthenticated endpoints (/products.json, /collections.json) plus its rendered HTML. shoplint fetches the home page, one product page, and one collection page, parses them, and probes a bounded sample of assets for real transfer sizes. Nothing is scraped beyond what any browser downloads; no store credentials are ever needed.

Note on rate limits: Shopify's edge throttles unfamiliar IPs aggressively (HTTP 429). If you hit one, wait a minute and retry — audits from residential IPs are rarely throttled.

Roadmap

  • Core Web Vitals field data via the CrUX / PageSpeed Insights API
  • Theme accessibility checks (contrast, focus states, tap targets)
  • Checkout & cart friction heuristics
  • --compare mode to diff two audits (before/after a theme change)

PRs and issue reports are very welcome.

Contributing

git clone https://github.com/Outpost-Apps/shoplint
cd shoplint && npm install
npm test          # unit + e2e tests (no network needed)
node bin/shoplint.js somestore.com

Adding an app to the detector is a one-line PR in src/checks/apps.js.

License

MIT © Outpost Apps Pte. Ltd.


Built by Outpost Apps, makers of LaunchLab (cart upsells & bundles) and Snapshot (AI product photography) for Shopify.

About

Audit any Shopify storefront for speed, SEO, image, and revenue issues — no login, no API keys, just a URL.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages