Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Glossary

SD-JWT

SD-JWT (Selective Disclosure JSON Web Token) is a standardized data format for creating cryptographically signed verifiable credentials that allow a holder to selectively disclose specific claims to a verifier.
Chainscore © 2026
definition
DECENTRALIZED IDENTITY STANDARD

What is SD-JWT?

SD-JWT (Selective Disclosure JSON Web Token) is an IETF standard for creating digitally signed credentials that allow holders to selectively reveal specific claims while preserving the integrity of the original issuer's signature.

An SD-JWT is a JSON Web Token (JWT) extended with a mechanism for selective disclosure. It allows an issuer to create a credential containing multiple claims, where the holder can later choose to reveal only specific pieces of information to a verifier, without disclosing the entire credential. This is achieved by replacing the values of selected claims with cryptographic digests, while the actual values are sent separately in a disclosure array. The verifier can recompute the digests to confirm the disclosed data matches the signed token, ensuring data integrity and origin authenticity.

The core cryptographic construction uses hash functions and digital signatures. For each claim meant to be selectively disclosable, the issuer creates a disclosure, which is a structured array containing a salt, the claim name, and the claim value. This array is hashed, and the resulting digest is placed into the JWT's payload. The original disclosures are given to the holder. When presenting the credential, the holder sends the signed JWT and only the disclosures for the claims they wish to reveal. The verifier hashes each provided disclosure and checks that the result matches a digest in the JWT, proving the data is part of the original, unaltered credential.

SD-JWT is a foundational technology for user-centric identity and verifiable credentials (VCs), enabling privacy-preserving interactions. Common use cases include age verification (proving over 21 without revealing birthdate), proof of membership, or KYC processes where only necessary attributes are shared. It addresses key limitations of standard JWTs, which require all-or-nothing disclosure. The standard is formally defined in IETF RFCs and is designed to be interoperable across different ecosystems and trust frameworks, forming a critical component of the SSI (Self-Sovereign Identity) stack.

etymology
ORIGINS AND SPECIFICATION

Etymology & Standardization

This section details the origin, formal specification, and standardization journey of the SD-JWT (Selective Disclosure JSON Web Token) framework, which enables privacy-preserving credential exchange.

The term SD-JWT is an initialism for Selective Disclosure JSON Web Token. It was developed to address a critical limitation in standard JSON Web Tokens (JWTs), which are inherently non-selectively disclosable; presenting a JWT reveals all claims within it. The 'Selective Disclosure' component refers to the core cryptographic mechanism that allows a holder to reveal only specific, necessary claims from a credential while keeping the rest cryptographically hidden, enabling data minimization.

The technical foundation of SD-JWT is specified in the IETF (Internet Engineering Task Force) draft titled "Selective Disclosure for JWTs (SD-JWT)". This draft, a collaborative effort by security and identity experts, defines the data model, the format for creating disclosure arrays, and the hashing mechanism used to bind disclosed data to the signed JWT payload. It standardizes the process for an issuer to create the token, a holder to manage and selectively disclose it, and a verifier to cryptographically validate the presented claims and the integrity of the undisclosed ones.

Standardization under the IETF is a key factor in SD-JWT's adoption, ensuring interoperability across different vendors and ecosystems, such as OpenID for Verifiable Credentials (OIDC4VC). The framework is explicitly designed to be cryptography-agile, supporting various JSON Web Signature (JWS) algorithms and hash functions. This formal, vendor-neutral specification distinguishes SD-JWT from proprietary solutions and establishes it as a fundamental building block for verifiable credentials and decentralized identity.

key-features
SD-JWT

Key Features

Selective Disclosure JSON Web Tokens (SD-JWTs) are a cryptographic standard for issuing and presenting verifiable credentials with granular data control.

01

Selective Disclosure

The core innovation of SD-JWT is enabling a holder to reveal only specific claims from a credential. The issuer signs a disclosure array containing all claims, but the presenter can choose which elements to share, proving authenticity without exposing the full dataset. This is achieved using cryptographic hashes and digests.

02

Holder Binding

Prevents unauthorized presentation of a credential. The issuer can embed a key binding JWT (KB-JWT) that cryptographically ties the credential to a specific holder's public key. During presentation, the holder must sign with the corresponding private key, proving they are the legitimate subject of the claims.

03

Compact Serialization Format

SD-JWTs use a specialized, space-efficient serialization to combine multiple components into a single string. The format typically includes:

  • The Issuer-signed JWT (containing claim digests).
  • Optional Disclosures (the actual claim values).
  • Optional Key Binding JWT. This structure is designed for easy transmission in protocols like OAuth 2.0 and OpenID Connect.
04

Cryptographic Integrity

Every disclosed claim is cryptographically linked to the issuer's signature. Each claim value is hashed, and these digests are included in the signed JWT. A verifier recalculates the hash of any presented disclosure and checks it against the signed digest list, ensuring the data is tamper-proof and originated from the legitimate issuer.

06

Use Case: Identity & Age Verification

A practical application is proving age without revealing other PII. A government could issue a credential with claims for name, dateOfBirth, and address. To access an age-restricted service, the holder discloses only the dateOfBirth digest and its corresponding disclosure, proving they are over 18 without leaking their name or home address.

how-it-works
MECHANISM

How SD-JWT Works

SD-JWT (Selective Disclosure JSON Web Token) is a cryptographic protocol that enables the verifiable, privacy-preserving sharing of claims from a credential.

An SD-JWT is a digitally signed JSON Web Token (JWT) that contains a set of disclosures, which are the individual claims from a credential (e.g., name, birthdate, address). Crucially, these disclosures are not stored in plain text within the JWT itself. Instead, the issuer creates a cryptographic digest (hash) for each claim and includes only these hashes in the signed JWT payload. The actual claim values and their salts are provided to the holder in a separate, unsecured Disclosure Array. This separation of the verifiable signature from the disclosed data is the foundation of selective disclosure.

When a holder needs to present the credential, they perform selective disclosure. The holder chooses which specific claims to reveal (e.g., only their over-21 status from a driver's license) and sends the verifier two things: the original signed SD-JWT and only the disclosure objects for the chosen claims. The verifier then recomputes the hash of each provided disclosure and checks that it matches a corresponding hash in the signed JWT. This process proves the disclosed data is integrity-protected and originally issued by the trusted issuer, without revealing any undisclosed claims.

The protocol incorporates unique salts for each disclosure to prevent brute-force attacks and correlation. Even if the same claim value (e.g., a birthdate) is issued to multiple holders, the random salt ensures the resulting hash is unique. For binding the presentation to a specific verifier and preventing replay attacks, SD-JWT is typically used in conjunction with a Key Binding JWT (KB-JWT). The holder creates this second JWT, signed with their own private key, which includes a challenge from the verifier and the digest of the SD-JWT, cryptographically tying the entire presentation to that specific interaction.

core-components
ARCHITECTURE

Core Components of an SD-JWT

An SD-JWT (Selective Disclosure JSON Web Token) is a structured credential format that enables the holder to prove specific claims without revealing the entire document. It is composed of several distinct, cryptographically linked parts.

01

JWT (JSON Web Token)

The foundational, signed base token containing all claims in plaintext. This is the Issuer-signed credential that the Holder receives. It uses standard JWT structure with a header, payload (claims), and signature, following RFC 7519.

02

Disclosure Array

A separate array containing the data needed to create selective disclosures. Each entry is a structured object containing:

  • A salt (random value) for binding.
  • The claim name (key).
  • The claim value. These are hashed to create digests referenced in the JWT payload.
03

Selective Disclosure Digests

Cryptographic hashes of the disclosure objects, embedded within the JWT payload. To disclose a claim, the Holder presents the corresponding disclosure object, not the digest. The Verifier hashes it to match the digest in the signed JWT, proving the claim's integrity and origin.

04

Key Binding JWT (KB-JWT)

An optional, Holder-signed JWT that cryptographically binds the presentation of the SD-JWT to a specific Holder's key. This prevents presentation to a Verifier by anyone other than the legitimate Holder, adding a critical layer of presentation integrity.

05

SD-JWT VC Format

The W3C Verifiable Credentials-compatible wrapper for an SD-JWT. It packages the SD-JWT components into a standard VC proof format, enabling interoperability with broader VC ecosystems while preserving the selective disclosure capabilities.

examples
SELECTIVE DISCLOSURE JWT

Examples & Use Cases

SD-JWT enables verifiable credentials where users can share only the necessary claims, enhancing privacy and security in digital identity and access control.

01

KYC and Identity Verification

A user can prove they are over 21 without revealing their exact birthdate. The issuer signs a credential containing the user's date of birth. The user presents an SD-JWT, disclosing only a boolean claim (e.g., over_21: true) derived from the hidden date, satisfying regulatory requirements while minimizing data exposure.

02

Selective Access to User Attributes

A banking app can request specific user attributes for a loan application. The user holds a credential with name, address, credit score, and employment status. Using SD-JWT, they can disclose only their name and credit score to the lender, keeping their address and employment details private.

03

Age-Gated Services

To access an age-restricted online service, a user proves they are an adult. Their government-issued digital ID, issued as an SD-JWT, contains their full birthdate. The service's verifier requests proof of age. The user's wallet computes and discloses a cryptographic hash proving the over_18 claim is valid without leaking the underlying date.

04

Healthcare Data Portability

A patient needs to share specific medical history with a new specialist. Their electronic health record, issued as an SD-JWT by their primary care provider, contains allergies, medications, and past procedures. The patient can selectively disclose only their relevant allergy information to the new doctor, maintaining control over their sensitive medical data.

05

Verifiable Employee Credentials

An employee needs to prove their employment status to a vendor for a corporate discount. Their employer issues a credential with employee ID, department, salary, and start date. The employee generates a presentation disclosing only the department and a valid_employee boolean, providing necessary proof without sharing confidential salary information.

COMPARISON

SD-JWT vs. Other Credential Formats

A technical comparison of key architectural and functional characteristics across major verifiable credential formats.

Feature / CharacteristicSD-JWT (IETF Draft)W3C Verifiable Credential (JWT-VC)W3C Verifiable Credential (Data Integrity / LD-Proofs)AnonCreds

Core Data Model

JSON-based, selective disclosure

JSON-based, JWT encoding

JSON-LD based, linked data

CL-Signatures, credential schema

Cryptographic Primitive

JWT with SHA-256 hashes for disclosures

JWS (JSON Web Signature)

Linked Data Proofs (e.g., Ed25519Signature2020)

CL-Signatures (Camenisch-Lysyanskaya)

Selective Disclosure

Presentation Unlinkability

Holder binding required

Signature Suites / Algorithms

Any JWA algorithm (e.g., ES256)

Any JWA algorithm

Multiple suites (e.g., EdDSA, ECDSA)

BBS+ signatures for CL-Signatures

Standardization Body

IETF

W3C

W3C

Hyperledger Foundation / DIF

Typical Issuance Size (for 10 claims)

< 2 KB

~1.5 KB

~3-5 KB

~2-3 KB

Holder Binding Mechanism

Key Binding JWT (optional)

Embedded proof (subject id)

Embedded proof (subject id)

Link secret

security-considerations
SD-JWT

Security & Privacy Considerations

SD-JWTs (Selective Disclosure JSON Web Tokens) introduce specific cryptographic and architectural patterns to enhance privacy and security in verifiable credential exchange.

01

Selective Disclosure via Disclosures

The core privacy mechanism. An SD-JWT contains disclosures—separate JSON objects that hold the actual claim values and a salt. The issuer sends these alongside the JWT. The holder can then selectively reveal only the necessary disclosures to a verifier, proving possession without exposing the entire credential. This prevents data minimization violations and limits correlation.

02

Holder Binding & Key Proof

Prevents token replay by binding the credential to a specific holder. After receiving the SD-JWT, the holder must create a Key Proof (e.g., JWT, CWT, or an embedded signature) using a private key they control. The verifier checks this proof to ensure the presenter is the legitimate holder authorized by the issuer, a critical defense against token theft.

03

Cryptographic Integrity with Hashes

Ensures data cannot be tampered with. Claim values in disclosures are hashed (using SHA-256). These digests are embedded in the JWT payload. A verifier recomputes the hash of the presented disclosure and matches it against the digest in the signed JWT. This cryptographically verifies the issuer's signature on the digest and thus the integrity of the revealed claim.

04

Blind Issuance & Unlinkability

Enhances privacy between issuer and verifier. Using blind signatures, an issuer can sign a credential without seeing its final values (blind issuance). Furthermore, the hashes in the SD-JWT are unique per issuance. This creates issuer unlinkability, meaning the issuer cannot later correlate which specific credential was presented to a verifier.

05

Auditing & Non-Repudiation

Provides a verifiable audit trail. The issuer's signature on the SD-JWT provides non-repudiation—they cannot deny issuing the credential. The structure allows auditors to verify that all presented disclosures correctly hash to the signed digests, ensuring the verification process was executed correctly without requiring access to the raw claim data.

06

Implementation Risks & Best Practices

Common pitfalls include:

  • Salt Management: Weak or reused salts can enable brute-force attacks to uncover undisclosed claims.
  • Key Proof Validation: Failing to properly validate the holder's key proof enables replay attacks.
  • Claim Name Privacy: The JWT may still leak claim names; use indexed disclosures to hide them.
  • Complexity: The multi-component structure increases implementation complexity and attack surface.
ecosystem-usage
SD-JWT

Ecosystem & Adoption

SD-JWT (Selective Disclosure JSON Web Token) is a standardized format for creating and presenting cryptographically verifiable credentials with granular privacy controls. It enables the holder to selectively disclose only specific claims from a credential, minimizing data exposure.

01

Core Mechanism

An SD-JWT combines a signed JWT with disclosure objects for each claim. The issuer signs the JWT, which contains the digests of all claims. The holder receives the full set of disclosures but can choose to share only the digests for the claims they wish to reveal, allowing the verifier to cryptographically confirm their authenticity without seeing the raw data.

03

Primary Use Cases

  • Decentralized Identity (SSI): Core component of W3C Verifiable Credentials, enabling user-controlled identity.
  • Regulatory Compliance: Facilitates GDPR 'data minimization' and privacy-by-design principles.
  • On-Chain Verification: Used in DeFi and DAOs for proving attributes (e.g., KYC status, accreditation) without revealing full identity documents.
04

Holder Binding & Key Proof

To prevent credential replay, SD-JWT supports holder binding. The presentation includes a Key Proof JWT (like cnf or jkt), signed by the holder's private key, which cryptographically binds the credential to the specific presenter. This proves the holder is in possession of the credential and the corresponding private key.

06

Comparison to ZK Proofs

While both enable privacy, SD-JWT and zero-knowledge proofs (ZKPs) differ. SD-JWT provides selective disclosure of pre-defined, issuer-signed claims. ZKPs can prove complex statements (e.g., 'age > 18') about hidden data without revealing the underlying claims. They are often complementary technologies in advanced credential systems.

SD-JWT

Common Misconceptions

Selective Disclosure JSON Web Tokens (SD-JWTs) are a powerful standard for privacy-preserving verifiable credentials, but their unique architecture often leads to misunderstandings about their security, functionality, and relationship to other technologies.

No, an SD-JWT is a specialized, multi-part token format built on top of the JWT standard to enable selective disclosure, whereas a standard JWT is a single, monolithic token. An SD-JWT consists of a JWT containing the issuer's signed claims, a separate Disclosure array containing the plaintext data and cryptographic hashes, and an optional Key Binding JWT for holder binding. The critical difference is that a verifier can cryptographically verify only the specific claims the holder chooses to reveal from the disclosure array, without seeing or needing to trust the holder with the entire original signed payload.

SD-JWT

Frequently Asked Questions (FAQ)

Selective Disclosure JSON Web Tokens (SD-JWTs) are a privacy-enhancing standard for verifiable credentials. These FAQs address common developer questions about their structure, use, and implementation.

A Selective Disclosure JSON Web Token (SD-JWT) is a W3C/IETF standard for creating digitally signed credentials that allow the holder to selectively reveal specific claims to a verifier, without disclosing the entire credential. It works by combining a signed Issuer-signed JWT containing all claims (in a hashed, non-readable form) with separate, plaintext Disclosure objects. The holder presents only the signed JWT and the disclosures for the claims they wish to share. The verifier can cryptographically verify the issuer's signature on the JWT and check that the hash of each presented disclosure matches a hash in the JWT, ensuring the revealed data is authentic and unaltered.

ENQUIRY

Get In Touch
today.

Our experts will offer a free quote and a 30min call to discuss your project.

NDA Protected
24h Response
Directly to Engineering Team
10+
Protocols Shipped
$20M+
TVL Overall
NDA Protected Directly to Engineering Team
What is SD-JWT? | Selective Disclosure JWT Definition | ChainScore Glossary