Swift implementation of JSON Web Token (JWT).


JSON Web Token

Build Status

Swift implementation of JSON Web Token.


CocoaPods is the recommended installation method.

pod 'JSONWebToken'

Swift Package Manager installation is also available with the following dependency:

import PackageDescription

let package = Package(
  name: "AwesomeProject",
  dependencies: [
    .Package(url: "", versions: Version(1,4,2)..<Version(1,5,0))


import JWT

Encoding a claim

JWT.encode(["my": "payload"], algorithm: .HS256("secret"))

Building a JWT with the builder pattern

JWT.encode(.HS256("secret")) { builder in
  builder.issuer = ""
  builder.issuedAt = NSDate()
  builder["custom"] = "Hi"

Decoding a JWT

When decoding a JWT, you must supply one or more algorithms and keys.

do {
  let payload = try JWT.decode("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.2_8pWJfyPup0YwOXK7g9Dn0cF1E3pdn299t4hSeJy5w", algorithm: .HS256("secret"))
} catch {
  print("Failed to decode JWT: \(error)")

When the JWT may be signed with one out of many algorithms or keys:

try JWT.decode("eyJh...5w", algorithms: [.HS256("secret"), .HS256("secret2"), .HS512("secure")])

Supported claims

The library supports validating the following claims:

  • Issuer (iss) Claim
  • Expiration Time (exp) Claim
  • Not Before (nbf) Claim
  • Issued At (iat) Claim
  • Audience (aud) Claim


This library supports the following algorithms:

  • None - Unsecured JWTs
  • HS256 - HMAC using SHA-256 hash algorithm (default)
  • HS384 - HMAC using SHA-384 hash algorithm
  • HS512 - HMAC using SHA-512 hash algorithm


JSONWebToken is licensed under the BSD license. See LICENSE for more info.