AWS SigV4 Canonical Request Preview
Build the Signature Version 4 canonical request from method, URI, query string, host and x-amz-date to debug 403 SignatureDoesNotMatch errors.
Canonical Request
—
The canonical request behind an AWS signature
AWS Signature Version 4 does not sign the request directly: it first assembles a canonical form, a text holding the method, path, parameters, headers and body digest in a fixed order and format. That text is what goes into the calculation. When a signature does not match, the problem is almost always in building that canonical form rather than in the cryptography.
Fill in the fields and the page shows the resulting canonical text. It is for comparing against what your library produces — AWS reports the canonical form it computed inside the invalid-signature error message, and comparing the two line by line locates the divergence in seconds.
Worth being clear about scope: this is a preview of the structure, with fixed signed headers and the body declared as unsigned. The complete canonical form requires normalising the path, encoding each parameter under its own rules, sorting parameters by name and headers by lowercase name, and collapsing whitespace in values. Those normalisation steps are precisely where hand-rolled implementations go wrong.
Frequently asked questions
Why does my signature not match?
What is the unsigned payload?
Does the order of signed headers matter?
Related Tools
HTML Preview
Write HTML, CSS and JavaScript and see the rendered result in real time. Isolated sandbox — no code is sent to any server.
docker-compose MySQL Generator
Generates a ready-to-use docker-compose for MySQL, with the root password, port 3306 published and a persistent volume. Pick the image tag and start the database.
docker-compose Redis Generator
Generates a ready-to-use docker-compose for Redis, publishing port 6379 with a persistent volume. Pick the image tag and spin up your local cache or broker with one command.
HTML Escape / Unescape
Escape special HTML characters (<, >, &, ", ') to HTML entities and convert entities back to text.
JSON Escape / Unescape
Escape strings for use in JSON by adding backslashes and convert JSON strings back to the original text.
e (Euler) N decimals Generator
Euler constant e = 2.71828... up to 1000 decimals. Useful for calculus, compound interest and analysis.