DevToolsForYou

JWT Encoder and Decoder in C# / .NET — Code Examples

JWT Encoder and Decoder in C# / .NETUse the online tool →

JSON Web Tokens (JWTs) are a compact, URL-safe format for transmitting claims between parties. A JWT has three Base64url-encoded parts separated by dots: header, payload, and signature. Here is how to sign, verify, and decode JWTs in each language.

C# uses the System.IdentityModel.Tokens.Jwt NuGet package. JwtSecurityTokenHandler handles both signing and validation.

C# / .NET
// NuGet: System.IdentityModel.Tokens.Jwt
//        Microsoft.IdentityModel.Tokens
using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Microsoft.IdentityModel.Tokens;

var secret = "my-secret-key-32-bytes-long!!!";
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

// Sign (encode)
var token = new JwtSecurityToken(
    issuer: "my-app",
    audience: "my-users",
    claims: [
        new Claim("user_id", "42"),
        new Claim("name", "Alice"),
        new Claim("role", "admin"),
    ],
    expires: DateTime.UtcNow.AddHours(1),
    signingCredentials: creds
);
string tokenStr = new JwtSecurityTokenHandler().WriteToken(token);
Console.WriteLine(tokenStr);

// Verify and decode
var handler = new JwtSecurityTokenHandler();
var validationParams = new TokenValidationParameters {
    ValidateIssuerSigningKey = true,
    IssuerSigningKey = key,
    ValidateIssuer = true,  ValidIssuer   = "my-app",
    ValidateAudience = true, ValidAudience = "my-users",
    ClockSkew = TimeSpan.Zero, // strict expiry
};
var principal = handler.ValidateToken(tokenStr, validationParams, out _);
Console.WriteLine(principal.FindFirst("name")?.Value); // Alice
Notes & gotchas
  • Set ClockSkew = TimeSpan.Zero to enforce strict token expiry; the default allows 5 minutes of drift.
  • The SymmetricSecurityKey requires at least 128 bits (16 bytes) for HS256; use 256 bits (32 bytes) for a comfortable security margin.
  • In ASP.NET Core, use AddAuthentication().AddJwtBearer() to integrate JWT validation into the middleware pipeline.
Try it in your browser

Need to jwt encode/decode without writing code? The JWT Encoder and Decoder runs entirely in your browser — paste your input and get the result instantly. No signup, no install, no data sent to a server.

Open JWT Encode/Decode
JWT Encoder and Decoder in other languages