</> Web Validators

Content Negotiation Checker

Sends the same URL with five different Accept headers -- HTML, Markdown, JSON, XHTML, and */* -- and compares status, Content-Type, Vary, redirect behavior, and body content across them.

Based on: RFC 9110 — HTTP Semantics

About this validation

Sends text/html, text/markdown, application/json, application/xhtml+xml, and */* Accept headers against RFC 9110's HTTP content-negotiation semantics and compares the resulting responses. Absence of a representation (e.g. no Markdown support) is not treated as an error -- only an inconsistency is.

Protocol / standard:
Rules reviewed:
Sep 1, 2026

Standards and vendor-documented behavior can change. This reflects the source as last reviewed above, not a permanent guarantee.

What This Test Checks

Verifies that a server's Accept-based content negotiation is actually consistent: whether a claimed Markdown response is plausible Markdown (not HTML mislabeled), whether HTML and Markdown versions represent the same primary content, whether a missing Vary header could cause a cache to serve the wrong representation, and whether one representation quietly redirects somewhere the others don't.

FAQ

Is this the same as testing AI crawler User-Agents?

No. This tool changes only the Accept header while keeping a normal browser User-Agent, to test HTTP content negotiation specifically. The User-Agent Checker and AI Agent Readiness Checker separately test what happens when the User-Agent itself changes.

Is it a problem if a site doesn't support Accept: text/markdown?

No. Most sites have no Markdown representation at all, and that is not treated as an error here -- only an actual mismatch (e.g. claiming Content-Type: text/markdown while returning HTML) is flagged.

What does a missing Vary: Accept mean?

If a server genuinely returns different content based on the Accept header but doesn't declare Vary: Accept, a shared cache sitting in front of it (a CDN, a proxy) may serve the wrong representation to a different client.