Catalog/No ETag header (no conditional GET for unchanged pages)
SEO issue

Missing ETag header: enable conditional GET

An ETag lets crawlers skip unchanged pages with a 304 instead of a full download. Find pages with no ETag or Last-Modified and learn how to add one.

9845
audited sites affected

What it means

The HTTP response for this page includes no ETag header. An ETag is a content fingerprint (typically a body hash) that lets clients revalidate a page with a conditional If-None-Match request. With neither an ETag nor a Last-Modified header, this page has no cache-revalidation mechanism at all.

Why it matters

ETag and Last-Modified serve the same crawl-efficiency purpose — one by hash, one by timestamp. Either enables conditional GET: the crawler sends its stored validator and the server replies 304 Not Modified (no body) or a full 200. When both are absent the full body transfers on every crawl visit. ETag has an edge for dynamic content because it can be based on a hash of the output even when a page is regenerated per request. This is a lab-proxy from the response headers, reported as a notice.

How to fix it

  1. On Apache, FileETag generates ETags for static files by default; on Nginx they are automatic for static files.
  2. For dynamic responses, generate a hash from content-relevant data (e.g. record updated_at plus a version counter) and set it as the ETag, wrapped in double quotes per RFC 7232.
  3. Verify your CDN (Cloudflare/Fastly/CloudFront) passes through or generates ETags rather than stripping them.
  4. If implementing both headers is impractical, ship whichever is cheaper — either alone enables conditional GET.

When it's not a problem

Pages that must not be cached — real-time dashboards, payment pages, authenticated session content — should not expose ETags. A page already serving an accurate Last-Modified has an equivalent revalidation mechanism (Crawlinx reports the two independently). If a CDN sets its own ETag on the cached response Googlebot receives, the origin omitting it matters less — verify the header on the response Googlebot actually gets.

How common is it?

9845 audited sites in our corpus currently show this issue. The breakdowns below show which platforms, gatekeepers, verticals and countries are most exposed.

Breakdowns

CMS

View breakdown →

Category

View breakdown →

Related
Catalog Large DOM (over 1500 elements) slows rendering & interaction Same-host image over 100KB transferred (LCP risk) Legacy image format (jpg/png/gif) with no next-gen fallback Large HTML document Category CMS No Last-Modified header (no conditional GET for unchanged pages) Render-blocking script in <head> (no defer/async) Slow server response Same-host CSS/JS served without gzip/Brotli compression Same-host CSS file appears unminified Same-host JavaScript file appears unminified

Audit your own site — free

157 checks, internal PageRank, render-diff. No signup, results in ~30s.

Scan your site →