Zero Signup ToolsFree browser tools

Developer Tools

ETag Generator

Generate strong or weak ETag headers from any content, parse ETag values, and test If-None-Match conditional requests in your browser.

Paste the bytes the server will return. The ETag is a hash of these bytes encoded as UTF-8. Nothing leaves your browser.

63 chars

Hashing strategy

Pick a hash. Most CDNs and frameworks deterministically derive the ETag from the response bytes so that two servers serving the same content will return the same tag.

Strength

Strong tags must change if any byte of the representation changes. Pick this when bytes are stable across requests.

Generated ETag

Paste content above to generate an ETag.

Quick reference

Strong vs weak

Strong: ETag: "abc123". Weak: ETag: W/"abc123". Strong tags must change if any byte changes. Weak tags identify a semantically equivalent representation.

Quotes are mandatory

An entity-tag is an opaque ASCII string wrapped in straight double quotes. Backslash escapes do not apply: the inner string cannot contain a raw double quote or any control byte.

Weak vs strong comparison

If-None-Match uses weak comparison: same opaque value matches regardless of W/ prefix. If-Match uses strong comparison: must be strong on both sides and bytewise equal.

The wildcard *

If-None-Match: * means "match any current representation". When used with PUT/POST under If-Match: *, the request requires the resource to already exist.

Conditional GET outcome

If-None-Match weakly matches the current ETag: server returns 304 Not Modified with no body. Otherwise: server returns 200 OK with the full body and a fresh ETag.

Pair with Cache-Control

ETag is the validator for revalidation. Pair it with Cache-Control: max-age=0, must-revalidate to force a conditional GET on every request, or with a finite max-age to allow stale-while-fresh reuse.

How to use

  1. Pick a tab at the top: Generate ETag to build one from content, Parse and explain to inspect an existing header, or If-None-Match tester to predict the conditional GET outcome.
  2. In Generate mode, paste the response body, pick a hashing strategy and strong or weak, then copy the ETag header value or any of the server snippets.
  3. In Parse mode, paste an ETag header value (with or without the leading ETag: prefix) to see strong vs weak, the opaque tag, and any grammar issues.
  4. In If-None-Match tester mode, enter the server ETag and the client If-None-Match list (use commas or the wildcard *) to see whether the server should send 304 Not Modified or 200 OK.
  5. Read the Quick reference card at the bottom for a recap of strong vs weak comparison, the wildcard, and how ETag pairs with Cache-Control.

About this tool

ETag Generator and Validator is a browser-only workbench for the HTTP ETag response header and the matching If-None-Match and If-Match conditional request headers defined by RFC 9110 Sections 8.8.3 and 13.1. It covers the three jobs developers actually have when working with conditional requests. First, generate. Paste a representation, pick a hashing strategy (SHA-256, SHA-1, MD5, FNV-1a, or the Nginx-style size-mtime hex pair), pick strong or weak, and copy the ready-to-paste ETag header value plus snippets for Nginx, Apache, Express.js, Next.js Route Handlers, FastAPI, Go net/http, and Cloudflare Workers, each pre-wired with the conditional 304 short-circuit. Second, parse. Paste an ETag header line (with or without the leading header name) and the parser detects strong versus weak, extracts the opaque tag, checks the strict RFC 9110 grammar (no embedded double quotes, no control bytes, mandatory ASCII straight quotes, uppercase W/ prefix only), and silently normalizes smart curly quotes so accidental copy-paste from documentation pages still works. Third, test conditional requests. Enter a server ETag and a client If-None-Match list (with multiple tags and the wildcard * supported), and the comparator runs the RFC 9110 weak-compare for If-None-Match and the strong-compare for If-Match side by side, predicting whether the server should answer 304 Not Modified or 200 OK and printing a sample response. Useful for sizing CDN edge caches, debugging revalidation churn, teaching the difference between weak and strong validators, building deterministic ETags that match across your fleet, and verifying that your framework returns 304 when it should. Everything runs in your browser; the content you paste, the headers, and the comparison inputs never leave the tab. SHA family hashes come from the Web Crypto API, MD5 uses the bundled RFC 1321 helper, and the entity-tag grammar and comparison rules are implemented from the RFC 9110 text.

Free to use. Works in your browser. No signup, no login.

Related tools

You may also like

All tools
All toolsDeveloper Tools