> For the complete documentation index, see [llms.txt](https://ploegert.gitbook.io/til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ploegert.gitbook.io/til/programmy/ruby/generate-a-signed-jwt-token.md).

# Generate A Signed JWT Token

The [`jwt`](https://github.com/jwt/ruby-jwt) gem is a Ruby library for encoding and decoding JWT tokens. You can create a signed JWT with the `#encode` method by specifying a secret and a hash algorithm.

```ruby
payload = { id: 1, email: 'user@example.com' }
secret = Rails.application.credentials.secret_key_base

token = JWT.encode(payload, secret, 'HS256')
```

This will create a JWT token that contains some JWT headers, application data, and an encrypted secret that signs the data. This can be passed to and from your client app as a way of identifying and authenticating a user.

See the [`jwt-ruby` docs](https://github.com/jwt/ruby-jwt) or [jwt.io](https://jwt.io/) for more details.
