I'm also aware of the BARE encoding, which could be used to make a much smaller and simpler token format - https://drewdevault.com/2020/06/21/BARE-message-encoding.html
Here's the problem/caveat I have with any standardized format:
Assuming I don't really care about letting the client read the metadata in the token, the only program creating and using these tokens is the server, which means all that matters is whether the server is consistent with itself. That is, standardizing the token format is not important when token contents are not intended to be public (and why should they be?)
Thus, I am inclined to use the most convenient binary encoding/decoding format that my language provides (like the haskell "binary" package).
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!