Standard JWTs (JWS — JSON Web Signature) are signed, not encrypted. The header and payload are base64url-encoded, which is not encryption — anyone can decode them and read the claims. That’s why you should never put secrets in a JWT payload. If you need the payload confidential, use JWE (JSON Web Encryption), a different format that encrypts the payload. In practice, ~99% of JWTs in the wild are JWS. If you’re wondering whether yours are: paste one into the JWT decoder. If you see readable JSON, it’s signed-not-encrypted (JWS).
All questions