morekits.com
Content ToolsNEWImage ToolsNEWTime ToolsHOTFinance ToolsHOTWeb & Dev ToolsUtility Tools
morekits.com

Free, privacy-first online tools for content, time, finance, and web tasks. Fast, secure, and 100% client-side.

Categories

Content ToolsImage ToolsTime ToolsFinance ToolsWeb & Dev ToolsUtility ToolsReferences

Popular Tools

Text ComparisonCompound Interest CalculatorTime ConverterWorld ClockPrepayment CalculatorNumber (Amount) to Chinese UppercaseWiFi QR GeneratorImage WatermarkLPR Interest RateCountry CodesCurrency Codes

More

TutorialsAll ToolsTagsChangelog

© 2026 morekits.com. All rights reserved.

About UsLegal & TermsContact
  1. Tutorials
  2. How to Verify Digital Signatures Online
Web & Dev Tools

How to Verify Digital Signatures Online

Verify HMAC, RSA, and ECDSA signatures over an arbitrary payload using a public key or shared secret — useful for API integrations, JWTs, and webhook debugging.

MoreKits Team
2026-01-12
4 minutes read
How to Verify Digital Signatures Online
Related tools

More utilities that pair well with this guide:

  • Parameter Signature
  • HMAC
  • Hash
  • Codec
  • Text Comparison
  • URL Parse

Why this matters

When a vendor's webhook starts failing your verification, the cause is almost always one of: wrong key, wrong algorithm, wrong canonicalization, wrong encoding. Rather than inserting console.log everywhere in your verifier, paste the message and signature into a known-good verifier and compare results. That instantly tells you whether the bug is in your code or the message itself.

Three real scenarios

Backend Engineer
Confirm a JWT signature without running the server

Paste the JWT, the public key, choose RS256/ES256/HS256, see "valid" or "invalid".

Bug isolated to handler

Security Reviewer
Audit a signed download from a vendor

Use the vendor's published RSA public key to confirm the binary signature.

Provenance verified

Integrations Lead
Verify an HMAC webhook before shipping the handler

Sign the payload with the secret, compare the result to the inbound header.

Code path validated

Walkthrough

Open the Signature verifier.

  1. 1

    Paste the message

    Use the exact bytes that were signed. For JWT, that is header.payload; for AWS Sig V4 it is the canonical string-to-sign.

  2. 2

    Paste the signature

    Hex or Base64 — pick the encoding that matches the source. The tool auto-detects common formats.

  3. 3

    Provide the key

    Symmetric: paste the secret string (or its Base64/hex). Asymmetric: paste the PEM-formatted public key.

  4. 4

    Pick the algorithm

    HS256 / HS384 / HS512 (HMAC), RS256 / RS512 (RSA-PKCS1), PS256 (RSA-PSS), ES256 / ES384 (ECDSA). The same JWT alg names also apply.

  5. 5

    Read the verdict

    "Valid" or "Invalid" with a one-line reason if invalid (algorithm mismatch, key parse error, signature length wrong).

Verify a JWT signed with HS256

Inputs

Message:    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEifQ
Signature:  L6S8LWkLzpcREMa8gxaaZbWwLNk0LgcBh6dRQpfIBrI
Key:        MyVeryLongSharedSecretValue1234567890
Algorithm:  HS256

Result

Valid signature.
Signature verification UI with message, signature, key, and algorithm fields
A single screen for HMAC, RSA, and ECDSA verification, including JWT-style inputs.

Power tips

  • Always test with the vendor's reference vectors. Most providers publish a known good message + signature pair you can paste in to confirm the tool handles their exact algorithm.
  • For JWTs, copy the header to confirm alg matches what your verifier expects. Ignore unsigned tokens (alg=none) — that is an attack vector.
  • Use PSS for new RSA designs. PKCS#1 v1.5 (RS256) is fine but the cryptographic community favors RSASSA-PSS (PS256).
  • Mind the canonical string. Subtle differences (a missing \n, lowercase header name) flip the signature. Diff against a known-working capture to find them.

Common pitfalls

Common mistake

Public key in the wrong format

PEM keys come in BEGIN PUBLIC KEY (SPKI) and BEGIN RSA PUBLIC KEY (PKCS#1). The tool accepts both, but make sure you pasted the public key (not the certificate, not the private key).

Common mistake

The signature is Base64URL but parsed as Base64

JWT signatures use Base64URL (no padding, -_ alphabet). Set the input encoding accordingly or strip the difference manually.

Common mistake

Algorithm name mismatch

"sha256WithRSAEncryption" in OpenSSL is the same as "RS256" in JWT. Pick the correct alias on the dropdown.

When this is the wrong tool

  • Issuing certificates belongs in OpenSSL or your CA.
  • Verifying TLS server certificates is your browser's job; the chain validation logic is far more involved than a single signature check.
  • Code-signing platform binaries (Windows Authenticode, Apple Developer ID) needs platform-specific tooling.

FAQ

Can I verify a Stripe / GitHub webhook here?

Yes. Use HS256 (HMAC-SHA-256), the secret from your dashboard, the raw body string, and the header value as the signature. The result tells you whether the request was tampered with.

Does it support Ed25519?

Ed25519 verification is on the roadmap. For now use a CLI like openssl pkeyutl -verify.

Is my key sent to a server?

No. WebCrypto runs locally; keys never leave the browser process.

Next steps

  1. Compute the HMAC side of the equation in the HMAC generator.
  2. Hash a payload separately if your protocol layers HMAC on top of a body hash with the Hash generator.
  3. Decode JWT segments with the Encode/Decode tool before pasting the message into the verifier.

Ready to try it out?

Jump straight into the tool and see it in action.