JWT iat Claim Is a String – Fix a Non-Numeric Issued-At Time

Local only

Inspect an iat claim that is valid JSON text but not a numeric JWT NumericDate.

93 chars · 1 line

120 chars · 10 lines

Algorithm: HS256Signature not verifiedTime status: Not evaluated (no numeric exp/nbf)iat claim: Invalid NumericDate (expected number)

JWT NumericDate issue

How to fix a JWT iat claim encoded as a string

A quoted iat value does not break JSON decoding, but it is not treated as a numeric issued-at timestamp. The decoder preserves the string in the payload and omits the Issued detail rather than silently coercing claim types. This tool is free to use. No account or payment is required.

Last updated

What you can do here

  • Browser-local JWT decoding
  • Strict three-segment validation
  • Canonical Base64URL checks
  • Header and payload JSON validation
  • Expiration status details
  • No signature verification claims

Steps

  1. Inspect whether the decoded iat value is surrounded by quotes.
  2. Correct token generation so iat is emitted as a JSON number.
  3. Reissue the token rather than changing signed payload bytes manually.

Claim types are preserved during decoding

The decoder does not guess that numeric-looking strings are timestamps. This makes type mistakes visible instead of hiding them behind automatic coercion.

String iat versus numeric iat

The string remains in JSON but does not create an Issued detail.

String claim

"iat":"1700000000"

Numeric claim

"iat":1700000000

Common questions

Frequently asked questions

Is a string iat invalid JSON?

No. It is valid JSON, which is why the token can decode successfully.

Why not parse numeric-looking strings automatically?

Silent coercion would change claim types and could hide issuer bugs.

Does iat by itself prove when the server created the token?

Only after the token has been verified and accepted under your issuer policy.

Debugging a specific JWT issue? Browse JWT troubleshooting.