JWT Tools
JWT Signer
Generate HS/RS/ES signatures, manage keypairs, and export tokens for staging environments.
Updated 2024-01-15
JWT Signer
Build HS tokens with custom claims, audience, issuer, subject, and exp/nbf/iat controls.
Custom claims (JSON)
Token
Generated token will appear here.Code samples (HS only)
Uses your current claims/secretJavaScript (jsonwebtoken)
import jwt from 'jsonwebtoken';
const payload = {
"aud": "utilz",
"iss": "utilz.io",
"sub": "user-123",
"exp": 1765177354,
"nbf": 1765173754,
"iat": 1765173754,
"role": "admin",
"scopes": [
"read",
"write"
]
};
const token = jwt.sign(payload, 'supersecret', { algorithm: 'HS256' });
console.log(token);Python (PyJWT)
import jwt
payload = {
"aud": "utilz",
"iss": "utilz.io",
"sub": "user-123",
"exp": 1765177354,
"nbf": 1765173754,
"iat": 1765173754,
"role": "admin",
"scopes": [
"read",
"write"
]
}
token = jwt.encode(payload, "supersecret", algorithm="HS256")
print(token)Go (golang-jwt/jwt/v5)
import (
"fmt"
"encoding/json"
"github.com/golang-jwt/jwt/v5"
)
var claims jwt.MapClaims
_ = json.Unmarshal([]byte(`{"aud":"utilz","iss":"utilz.io","sub":"user-123","exp":1765177354,"nbf":1765173754,"iat":1765173754,"role":"admin","scopes":["read","write"]}`), &claims)
tok := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
signed, _ := tok.SignedString([]byte("supersecret"))
fmt.Println(signed)Java (jjwt)
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import io.jsonwebtoken.SignatureAlgorithm;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.type.TypeReference;
import java.util.*;
String json = "{\"aud\":\"utilz\",\"iss\":\"utilz.io\",\"sub\":\"user-123\",\"exp\":1765177354,\"nbf\":1765173754,\"iat\":1765173754,\"role\":\"admin\",\"scopes\":[\"read\",\"write\"]}";
Map<String, Object> claims = new ObjectMapper().readValue(json, new TypeReference<Map<String, Object>>() {});
String token = Jwts.builder()
.setClaims(claims)
.signWith(Keys.hmacShaKeyFor("supersecret".getBytes()), SignatureAlgorithm.HS256)
.compact();
System.out.println(token);C# (.NET JwtSecurityToken)
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.Json;
using System.IdentityModel.Tokens.Jwt;
using Microsoft.IdentityModel.Tokens;
using System.Security.Claims;
var payload = JsonSerializer.Deserialize<Dictionary<string, object>>(@"{""aud"":""utilz"",""iss"":""utilz.io"",""sub"":""user-123"",""exp"":1765177354,""nbf"":1765173754,""iat"":1765173754,""role"":""admin"",""scopes"":[""read"",""write""]}");
var claims = new List<Claim>();
foreach (var kvp in payload)
claims.Add(new Claim(kvp.Key, kvp.Value?.ToString() ?? string.Empty));
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("supersecret"));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(claims: claims, signingCredentials: creds);
var encoded = new JwtSecurityTokenHandler().WriteToken(token);
Console.WriteLine(encoded);Rust (jsonwebtoken)
use jsonwebtoken::{encode, Header, EncodingKey, Algorithm};
use serde_json::json;
let claims = json!({
"aud": "utilz",
"iss": "utilz.io",
"sub": "user-123",
"exp": 1765177354,
"nbf": 1765173754,
"iat": 1765173754,
"role": "admin",
"scopes": [
"read",
"write"
]
});
let mut header = Header::new(Algorithm::HS256);
let token = encode(&header, &claims, &EncodingKey::from_secret(b"supersecret")).unwrap();
println!("{}", token);