Ecommerce SEO audit

Check your product and category pages before search engines do

Online stores generate URLs faster than anyone reviews them: filters, sort orders, variants and tracking parameters all create new addresses for the same product. The pages that matter then compete with their own duplicates. SEOAST audits one product or category URL at a time and checks the signals that decide which version gets indexed and whether its content can be read.

No signup required to start — 10 audits a day without an account.

The 12 checks behind this

Each one is a check that runs, described by the engine itself. If a check changes, this page changes with it.

  • Canonical URL

    canonical

    Presence of <link rel="canonical">, whether its href is absolute in the markup, whether it resolves to the audited URL itself, and whether more than one canonical is declared. A missing or conflicting canonical lets parameter and trailing-slash variants compete with the page.

    Fixing it: Consolidates duplicate URL variants onto one address, so ranking signals stop being split.

  • Robots meta directives

    robots_meta

    Directives across meta robots, googlebot, bingbot and googlebot-news tags. A noindex or none directive fails the check outright because it removes the page from search regardless of every other signal; nofollow warns because it strips the page of its outbound crawl value.

    Fixing it: Removes a directive that keeps the page out of search regardless of its content.

  • robots.txt

    robots_txt

    The origin /robots.txt, parsed to RFC 9309: consecutive user-agent lines share a group, the most specific group wins, and the longest matching pattern decides with Allow winning ties. Fails when the audited path is disallowed for Googlebot; warns when the file is absent or declares no Sitemap. Distinct from the robots meta tag: a disallow here stops the crawl, not just the indexing.

    Fixing it: Lets crawlers read the page, so every other signal on it can be seen.

  • HTTP status

    http_status

    The status of the final response after redirects. Fails on anything outside the 2xx range, because a URL that does not answer 200 has no document to index; warns on a 2xx that is not 200. Reports not_measurable when the audit was run against supplied HTML rather than a live fetch.

    Fixing it: Gives search engines a document to index at this URL at all.

  • Redirect chain

    redirect_chain

    Every hop followed to reach the page. Fails on a loop, on any hop through plain http, and at 3 or more hops; warns above 1. Each hop costs crawl budget and adds latency for every visitor.

    Fixing it: Cuts latency for every visitor and stops crawl budget being spent on hops.

  • Title tag

    title

    Presence, length and structure of <title>. Fails when absent or empty; warns outside 15-60 characters (Google truncates around 60) or when a separator-delimited segment such as the brand name is repeated within the same title.

    Fixing it: Improves the strongest on-page relevance signal and the line people click.

  • Meta description

    meta_description

    Presence, uniqueness and length of <meta name="description">. Fails when absent or empty; warns outside 70-160 characters or when more than one description tag is present. Does not rank, but it is the copy that earns the click.

    Fixing it: Raises click-through on the ranking you already have. Does not affect ranking itself.

  • Structured data (JSON-LD)

    structured_data

    Every <script type="application/ld+json"> block: whether it parses as JSON, whether it declares an @type (walking arrays and @graph), and which types are present. A block that fails to parse is worse than no block at all, because it forfeits rich-result eligibility silently.

    Fixing it: Makes the page eligible for rich results. Eligible, not guaranteed — Google decides whether to show them.

  • Image alt text

    image_alt

    Share of <img> elements with no alt attribute at all. An explicit alt="" is counted as a deliberate decorative marker, not a defect. More than 25% of images missing alt fails; a smaller share warns. Reports not_measurable when the page has no images.

    Fixing it: Makes images usable by screen readers and eligible for image search.

  • Image dimensions (layout shift)

    image_dimensions

    Share of <img> elements missing both width and height attributes. Without intrinsic dimensions the browser cannot reserve space before the image loads, which is a direct input to Cumulative Layout Shift. Reports not_measurable when the page has no images.

    Fixing it: Reserves space before images load, improving Cumulative Layout Shift.

  • Internal linking

    internal_linking

    Anchors classified into same-site, external, same-page fragment, non-navigation (mailto:, tel:, javascript:) and href-less. Fewer than 3 internal links makes the page a crawl dead end. Reports not_measurable when the final URL could not be parsed, since there is no origin to judge "same site" against.

    Fixing it: Gives crawlers a path onward from this page and spreads authority through the site.

  • Server-rendered content

    render_dependency

    Visible text as a share of the response body, plus inline script share and server-rendered word count. Fails under 60 words alongside a script-heavy document, or below a 2% text ratio; warns below 5%. SEOAST executes no JavaScript, so this measures what a crawler sees before deciding whether to queue a rendered pass.

    Fixing it: Puts the content in the first response, where every crawler reads it, instead of behind a render pass that is neither fast nor guaranteed.

How this works in practice

Canonicals on filtered and parameter URLs

Audit a product URL with a filter or tracking parameter on the end. The canonical should be absolute and point at the clean address. If it echoes the parameter back, every shared link and every filtered view becomes a separate page in the eyes of a crawler.

Product images

Images carry most of a product page. SEOAST checks that they have alt text and that width and height are declared, because missing dimensions cause the layout to jump as the page loads.

Structured data, stated precisely

The audit reports whether your JSON-LD parses and which types it declares, for example Product, Offer or BreadcrumbList. It does not validate individual properties such as price or availability, so use Google’s Rich Results Test for that step.

What this will not do

One URL per audit. It does not crawl a catalog, validate product schema properties or read merchant feeds.

Questions

Does it audit my whole catalog?

No. One URL per audit. Test one product page, one category page and one filtered URL per template.

Does it check whether my products appear in AI shopping answers?

No. SEOAST does not query ChatGPT, Perplexity, Gemini or Google AI Overviews, and it does not track citations or produce an AI visibility score. It checks whether the page can be fetched and read, which those systems require first.

Does it work with Shopify, WooCommerce and headless stores?

Yes. It reads the HTML any storefront returns. Headless and app-based storefronts benefit most from the server-rendered content check.

  • Technical SEO audit

    Run a technical SEO audit on any URL. SEOAST checks HTTP status, redirects, HTTPS, robots.txt, the robots meta tag, X-Robots-Tag, canonicals and your XML sitemap, then ranks what to fix first.

  • Free SEO audit and website SEO checker

    Free SEO audit for any URL, no signup. SEOAST checks indexability, on-page tags, headings, structured data, server-rendered content and AI-crawler access, shows the evidence for each result and ranks the fixes.

  • SEO checklist for 2026: on-page and AI-search readiness

    An on-page SEO checklist for 2026 covering indexability, page tags, headings, structured data, server rendering and AI-crawler access. Each item is a check SEOAST runs on your URL for free.

Audit your page

No signup required to start.