philiprehberger_jwt_decoder

Tests pub package Last updated

Lightweight JWT token decoder with typed claim access and expiration checking

Requirements

  • Dart >= 3.6

Installation

Add to your pubspec.yaml:

dependencies:
  philiprehberger_jwt_decoder: ^0.1.0

Then run:

dart pub get

Usage

import 'package:philiprehberger_jwt_decoder/jwt_decoder.dart';

final payload = JwtDecoder.decode(token);
print(payload.subject);    // user-123
print(payload.expiration); // 2026-04-04 12:00:00.000

Check Expiration

if (JwtDecoder.isExpired(token)) {
  print('Token has expired');
}

final remaining = JwtDecoder.timeToExpiry(token);
print('Expires in ${remaining?.inMinutes} minutes');

Clock Skew Tolerance

JwtDecoder.isExpired(token, clockSkew: Duration(seconds: 30));

Custom Claims

final payload = JwtDecoder.decode(token);
final role = payload.claim<String>('role');     // 'admin'
final level = payload.claim<int>('level');      // 5

API

Method Description
JwtDecoder.decode(token) Decode a JWT and return its payload
JwtDecoder.isExpired(token, {clockSkew}) Check if a token has expired
JwtDecoder.timeToExpiry(token) Get remaining time until expiration
JwtPayload.subject The sub claim
JwtPayload.issuedAt The iat claim as DateTime
JwtPayload.expiration The exp claim as DateTime
JwtPayload.issuer The iss claim
JwtPayload.claim<T>(key) Get any custom claim by key

Development

dart pub get
dart analyze --fatal-infos
dart test

Support

If you find this project useful:

Star the repo

🐛 Report issues

💡 Suggest features

❤️ Sponsor development

🌐 All Open Source Projects

💻 GitHub Profile

🔗 LinkedIn Profile

License

MIT

Libraries

jwt_decoder
Lightweight JWT token decoder with typed claim access and expiration checking.