Skip to content

Free tool

Open Badges validator

Check an Open Badges 2.0 assertion or a 3.0 verifiable credential. Paste the JSON, upload a baked badge or enter a URL, and see, field by field, what the specification expects and what your badge is missing.

Open Badges 2.0 & 3.0Runs in your browserNo sign-up
or drop a baked PNG/SVG anywhere
Try:

Built for the open standards

Both versions

It tells 2.0 assertions from 3.0 verifiable credentials and checks each against its own specification.

Stays in your browser

Your badge is read on your own machine. Nothing is uploaded, stored or logged.

Reads baked badges

Drop in a PNG or SVG with the badge baked in, and it pulls the assertion out for you.

How it works

How to validate an Open Badge, in three steps

  1. 01

    Add your badge

    Paste the JSON or signed JWS of an assertion or credential, drop in a baked PNG or SVG badge image, or enter the URL where the badge is hosted.

  2. 02

    Read the report

    The validator finds the version, 2.0 or 3.0, and checks every field the specification asks for, including the BadgeClass and Issuer a 2.0 badge links to. Each result names its field.

  3. 03

    Fix and check again

    Errors break the badge, warnings are worth a look. Fix them in your issuing tool, paste the new JSON and run it again.

What it checks

Every field the specification asks for, in both versions

The validator reads the @context and type to tell the version, then runs that version's rules.

Open Badges 2.0

Assertions, BadgeClasses and Issuer profiles, embedded or linked.

  • The https://w3id.org/openbadges/v2 context
  • Assertion id, recipient, badge, verification and issuedOn
  • Recipient type, identity and hashed flag
  • Hashed identities in the sha256$… form
  • Hosted or signed (JWS) verification
  • BadgeClass name, description, image, criteria and issuer
  • Issuer id, name, url and email
  • Linked BadgeClass and Issuer, fetched and checked
  • ISO 8601 dates, expiry and revocation

Open Badges 3.0

OpenBadgeCredential and AchievementCredential, W3C Verifiable Credentials.

  • The W3C Verifiable Credentials context first, Open Badges 3.0 second
  • VerifiableCredential and OpenBadgeCredential types
  • Credential id, issuer, validFrom and credentialSubject
  • Issuer Profile id, type, name, url and email
  • validFrom and validUntil (and the VC 1.1 names)
  • Subject id or identifier, and its Achievement
  • Achievement id, name, description and criteria
  • Embedded proof or VC-JWT, credentialStatus and credentialSchema
  • EndorsementCredential, Achievement and Profile files

Common errors

Open Badges errors, and how to fix them

The problems the validator finds most often, in the words it reports them.

Missing "verification"
An Open Badges 2.0 assertion must say how to confirm it. Add "verification": { "type": "hosted" } and host the assertion at its id URL, or sign it and use "signed".
"hashed" is true, but the identity is not a hash like "sha256$…"
When "hashed" is true, the identity is the algorithm, a dollar sign, then the hex hash of the email plus the salt. A plain email there means "hashed" should be false.
"issuedOn" should be an ISO 8601 date-time
Write dates like 2026-01-31T00:00:00Z. A date such as 31/01/2026 or a Unix timestamp will fail in most readers.
"@context" must include the W3C Verifiable Credentials context
An Open Badges 3.0 credential is a W3C Verifiable Credential. Put https://www.w3.org/ns/credentials/v2 first in "@context", then the Open Badges 3.0 context.
"issuanceDate" is the VC 1.1 name
Verifiable Credentials 2.0 renamed "issuanceDate" to "validFrom" and "expirationDate" to "validUntil". Rename them to match the current Open Badges 3.0 context.
"credentialSubject" is missing "achievement"
Every Open Badges 3.0 credential names what was earned. Add an "achievement" with a type of "Achievement", an id, a name and criteria.
The subject needs an "id" or at least one "identifier"
An Open Badges 3.0 credential must say who earned it. Give credentialSubject an "id" (like a did:) or an "identifier" list with a hashed email.
Could not fetch that URL
Many badge hosts block requests from other websites. Open the link in a new tab, copy the JSON and paste it into the validator instead.

2.0 vs 3.0

Open Badges 2.0 and 3.0, side by side

Open Badges 3.0 rebuilds the badge as a W3C Verifiable Credential. The same ideas carry new names.

Open Badges 2.0Open Badges 3.0
Data modelOpen Badges JSON-LDW3C Verifiable Credential
Main objectAssertionOpenBadgeCredential
What was earnedBadgeClassAchievement
Issued dateissuedOnvalidFrom
ExpiryexpiresvalidUntil
VerificationHosted URL or signed JWSEmbedded proof (Data Integrity or JWT)
Revocationrevoked flag or revocation listcredentialStatus

FAQ

Validator questions, answered

Issuing badges yourself? Hyperstack issues Open Badges 2.0 on every plan and signed Open Badges 3.0 on selected plans.

See digital badges

Open the Open Badges validator, then paste the badge JSON, upload the baked badge image or enter its URL. The validator tells whether it is Open Badges 2.0 or 3.0 and lists every error and warning, field by field.

Your next cohort deserves better than a PDF

Set up in minutes, send your first credentials today, and only pay once you grow past 20 recipients a year.

Or open a live sample credential