ETag Weak vs Strong
Reads an ETag header value and says whether it is weak, carrying the W/ prefix and meaning semantic equivalence, or strong, meaning byte-for-byte equality.
Tipo
—
What that W/ prefix on an ETag means
You are chasing a 304 that never fires, or one that fires when it should not, and you noticed some ETags come back as "a1b2c3" while others come back as W/"a1b2c3". The difference is not cosmetic: it decides which conditional requests the server can honor. Paste the value from the header and the page tells you whether that ETag is strong or weak, or whether the format is off spec.
The rule comes from RFC 9110. An ETag is a quoted string, optionally prefixed with W/ using a capital W, and that prefix is case sensitive. Strong means byte-for-byte equality. Weak means the resource is semantically the same even though the bytes changed. That is exactly why compression layers tend to downgrade a strong ETag to a weak one: the content is unchanged, the representation is not.
The practical consequence shows up in conditional requests. If-None-Match, the ordinary 304 path, uses weak comparison and accepts either kind. If-Range and If-Match require strong comparison, so with a weak ETag a resumed download starts over instead of continuing where it stopped. If you derive the ETag from a hash of the bytes you send, go strong; if you derive it from a row version in the database, weak is the honest choice. The check reads only the pasted text.
Frequently asked questions
Can I write the prefix as lowercase w/?
Does it make sense to send both ETag and Last-Modified?
Does the tool compute the ETag for my file?
Related Tools
Cache-Control Parser
Read a Cache-Control header and show each directive (max-age, no-cache, public, immutable, stale-while-revalidate) with explanation.
Accept-Charset Header Parser
Breaks an Accept-Charset header into charsets and q-values and ranks them by preference. The header is deprecated; today's clients simply assume UTF-8.
HTTP Status Code Lookup
Type any HTTP status code from 100 to 511 and read its official reason phrase, across the informational, success, redirect, client and server error ranges.
Accept-Encoding Header Parser
Splits an HTTP request header such as gzip, deflate, br;q=1.0 into codings ranked by q value, assuming q=1 whenever the parameter is missing.
HTTP Accept Header Content Negotiation Matcher
Paste a client Accept header and the comma-separated media types a server offers to see which one wins and at what q value. Exact types and */* only.
HAR Viewer
Read pasted HAR (HTTP Archive) and list requests with method, status, URL and time.