The secret box is the interesting part
Verifying an HS256 token means having the symmetric key that signs every token your system issues. Typing it into a field on a web page is an odd thing to do with a credential of that weight, and people do it constantly, usually while debugging something urgent and not thinking about it at all. The token itself is already a bearer credential, but it expires. The signing key does not.
This decoder has no verification feature, so there is no field asking for a key and no moment where pasting one seems like the natural next step. That is a real reduction in capability and it is the point of the design rather than an omission.
What a decoder can honestly tell you
A JWT is three Base64url segments. The first two are plain, readable JSON - anyone holding the token can read every claim in it without any key at all. That is worth internalising, because it means a JWT is signed, not encrypted, and putting anything confidential in a claim publishes it to whoever holds the token.
So decoding answers the questions that actually come up: which issuer minted this, which subject is it for, which audience is it scoped to, and has exp already passed. The expiry check catches the single most common cause of a token being rejected, and it needs no key to perform.
Reading the token you were sent
The usual situation is that an integration is failing, someone has pasted a token into a ticket, and you need to know what is in it. That token belongs to a real session, and the fewer places it is typed the better. Decoding here happens in the page; nothing is transmitted, so the token does not acquire another copy on its way to being read.
If the answer turns out to be that the signature is wrong rather than that the claims are wrong, you need a verifier - and you should reach for one in your own code or on the command line, where the key never leaves the machine, rather than for any web page including this one.