{
  "slug": "jwt-claims-diff",
  "name": "gizza-ai/jwt-claims-diff",
  "version": "0.1.0",
  "title": "JWT Claims Diff — compare two JSON Web Tokens — gizza.ai",
  "description": "Decode two JWTs offline and see exactly which claims were added, removed or changed — with human-readable expiry deltas. Nothing leaves your browser.",
  "tags": [
    "jwt diff",
    "compare jwt",
    "jwt claims diff",
    "jwt compare",
    "diff two jwts",
    "jwt token compare"
  ],
  "category": "security",
  "urls": {
    "page": "https://gizza.ai/tools/jwt-claims-diff/",
    "markdown": "https://gizza.ai/tools/jwt-claims-diff/index.md",
    "descriptor": "https://gizza.ai/tools/jwt-claims-diff/tool.json",
    "deep_link_example": "https://gizza.ai/tools/jwt-claims-diff/?left=Paste%20the%20old%20compact%20JWT%20%28header.payload.signature%29%E2%80%A6&right=Paste%20the%20new%20compact%20JWT%20to%20compare%E2%80%A6&include_header=true&indent=2"
  },
  "cli": "gizza tool jwt-claims-diff \"Paste the old compact JWT (header.payload.signature)…\" 'right=Paste the new compact JWT to compare…'",
  "tool": {
    "description": "Decode two compact JSON Web Tokens (JWTs) offline — no verification key — and report which claims were added, removed or changed between them. Claims are compared at the top level and classified as added (only in the second token), removed (only in the first) or changed (present in both with a different value). Registered time claims (exp/nbf/iat) get human-readable UTC annotations, and when both tokens carry exp the report includes the expiry delta. Set include_header=false to compare payload claims only. Output: { equal, similarity, summary:{added,removed,changed,unchanged}, payload:[{claim,kind,old?,new?,old_time?,new_time?}], header?:[…], expiry?:{…} }. Signatures are never verified. Runs locally.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "include_header": {
          "default": true,
          "description": "Also diff the JOSE header parameters (alg, typ, kid…), not just the payload claims. Default true.",
          "type": "boolean"
        },
        "indent": {
          "default": 2,
          "description": "Output indentation in spaces (1-8). Use 0 to minify. Default 2.",
          "maximum": 8,
          "minimum": 0,
          "type": "integer"
        },
        "left": {
          "description": "The first (left/old) compact JWT (header.payload.signature).",
          "type": "string"
        },
        "right": {
          "description": "The second (right/new) compact JWT to compare against the first.",
          "type": "string"
        }
      },
      "required": [
        "left",
        "right"
      ],
      "type": "object"
    }
  }
}