Cadmeo

JWT Decoder vs Base64 Encoder

Choose this if

JWT Decoder

you are looking at a token and want the claims read out, with the expiry checked against now

Choose this if

Base64 Encoder and Decoder

you have one Base64 string, or are encoding rather than decoding

How they compare

JWT Decoder compared with Base64 Encoder and Decoder, criterion by criterion
CriterionJWT DecoderBase64 Encoder and Decoder
Handles the three-part structureSplits on the dots and decodes the header and payload separatelyBetter hereTreats the whole thing as one string and fails on the dots
PaddingRestores it automatically: JWT segments drop it by conventionRestores it too, though many Base64 tools reject unpadded input outright
Claim meaningsLabels the registered claims: iss, sub, aud, exp, nbf, iat, jtiBetter hereNone. You get raw JSON and interpret it yourself
TimestampsConverts exp, iat and nbf to readable UTC dates and says whether the token has expiredBetter hereShows a ten-digit number
Breadth of useTokens onlyAny Base64 at all, and it encodes as well as decodesBetter here

Which is best for you

Use the JWT decoder when debugging authentication

An API is rejecting a token and you need to see what it actually claims. The decoder splits the segments, pretty-prints both JSON objects, explains what each registered claim means, and converts the expiry to a real date compared against your clock. Doing that with a Base64 decoder means three separate operations and mentally converting Unix timestamps.

Use the Base64 tool for everything that is not a token

Decoding a data URI, reading a Base64-encoded config value, encoding text for an email header, or checking what a particular string decodes to. It handles Unicode correctly in both directions and offers the URL-safe alphabet, which is, incidentally, exactly the alphabet a JWT uses.

The recommendation

Use the JWT decoder for tokens. You can absolutely decode the segments individually with a Base64 tool, and it is a useful thing to understand, but doing it by hand means splitting on dots, decoding twice, and converting Unix timestamps in your head, every time. The more important point is one both tools should make you aware of: decoding is not verifying. Anyone holding a JWT can read its payload, so nothing confidential belongs in one.

Frequently asked questions

Is a JWT encrypted?

No. The header and payload are Base64url-encoded, which is a transport encoding with no key. That is exactly why a plain Base64 decoder can read them. Never put anything confidential in a JWT payload. If the contents must be hidden you need JWE, which is a different specification.

Why does Base64 decoding a JWT segment sometimes fail?

Because JWT uses the URL-safe alphabet and drops the padding. Segments contain - and _ where standard Base64 has + and /, and the trailing equals signs are gone. A decoder that does not restore the padding and translate the alphabet will refuse the input.

Can either tool tell me whether a token is genuine?

Neither. Verifying a signature needs the signing secret or public key, which belongs on your server and must never be pasted into a web page. Both tools show you what a token claims; only your server can establish whether the claims are trustworthy.

Both tools