Back to tools
Client-side pkpass viewer

Free pkpass viewer and validator

Drop in an Apple Wallet .pkpass file to view the pass, decode its package, validate common PassKit issues, and inspect the rendered preview. Everything runs locally in your browser.

New Supports iOS 27 poster passes and featured actions

Drop a .pkpass file here

Open this pkpass viewer online and the ZIP package is decoded on your device. No upload required.

No pass to hand?

What this pkpass validator checks

A .pkpass file is a signed ZIP package. This pass decoder focuses on the files and fields that are quickest to inspect while building, debugging, or reviewing an Apple Wallet pass.

Rendered pass preview
Required pass.json fields
Barcode format and message
Image assets and file names
Manifest SHA-1 hash checks
Signature and endpoint checks
iOS 27 poster layout and fallback
Featured actions and new barcode formats

Updated for iOS 27

iOS 27 poster passes, featured actions and new barcodes

At WWDC26 Apple added a poster layout for loyalty and membership passes, buttons under the pass, and four barcode formats. This tool checks all of them, and previews a pass the way iOS 27 shows it and the way older iPhones show its fallback.

Poster Generic style

posterGeneric

A full-bleed layout for loyalty and membership cards: artwork behind the whole pass, a primary logo at the top left, one header field, up to four primary fields on a frosted panel, and one footer field. It needs iOS 27, so keep a generic or storeCard dictionary beside it for older iPhones.

Featured actions

featuredActions

Up to two buttons under any pass, such as View Offers and Rewards, Order Delivery or Pickup, Book an Appointment, Call or Go to Location. Each has an identifier, a type and a url. Go to Location takes an Apple Maps place ID in placeIdentifier instead.

Four new barcode formats

PKBarcodeFormatEAN13

EAN-13, Code 39, Codabar and ITF (PKBarcodeFormatEAN13, PKBarcodeFormatCode39, PKBarcodeFormatCodabar, PKBarcodeFormatI2of5). iOS 26 and earlier can't show them, so put a QR or Code 128 entry after them in the barcodes array.

New field groups

additionalInfoFields

additionalInfoFields appear in an Additional Info section below the pass, which suits a list of rewards. footerFields sit at the bottom of the poster, and Wallet only shows the first one.

Poster image sizes

Sizes from Apple's Pass Builder. Wallet scales the artwork to the pass height, which crops roughly 6% off each side, so keep text and stamps away from the edges and out of the area behind the barcode.

File Size @2x px @3x px
artwork.png 358 × 448pt, exact 716 × 896 1074 × 1344
primaryLogo.png Up to 126 × 30pt 252 × 60 378 × 90
secondaryLogo.png Up to 135 × 12pt 270 × 24 405 × 36

A poster pass.json with a fallback

iOS 27 renders posterGeneric. iOS 26 and earlier ignore it, and the featured action, and render the storeCard.

{
  "formatVersion": 1,
  "passTypeIdentifier": "pass.com.example.loyalty",
  "serialNumber": "7f3c9a2e-member-1042",
  "teamIdentifier": "ABCDE12345",
  "organizationName": "Example Cafe",
  "description": "Example Cafe loyalty card",
  "backgroundColor": "rgb(58, 19, 8)",
  "foregroundColor": "rgb(255, 255, 255)",
  "barcodes": [
    { "format": "PKBarcodeFormatQR", "message": "1042", "messageEncoding": "iso-8859-1" }
  ],
  "posterGeneric": {
    "headerFields": [{ "key": "stamps", "label": "Stamps", "value": "6/10" }],
    "primaryFields": [
      { "key": "member", "label": "Member", "value": "Jane Doe" },
      { "key": "next", "label": "Next reward", "value": "4 stamps" }
    ],
    "additionalInfoFields": [
      { "key": "reward", "label": "10 stamps", "value": "Free coffee" }
    ]
  },
  "storeCard": {
    "headerFields": [{ "key": "stamps", "label": "Stamps", "value": "6/10" }],
    "secondaryFields": [
      { "key": "member", "label": "Member", "value": "Jane Doe" },
      { "key": "next", "label": "Next reward", "value": "4 stamps" }
    ]
  },
  "featuredActions": [
    { "identifier": "offers", "type": "viewOffersRewards", "url": "https://example.com/rewards" }
  ]
}

Running a loyalty program?

Get wallet passes like this without writing PassKit code

  • iOS 27 poster passes, with each customer's stamps drawn on the artwork
  • Featured actions such as Go to Location and Book an Appointment
  • A store card fallback for older iPhones, plus Google Wallet
  • Signing, certificates and push updates handled for you
Start free and launch your first card

Free forever plan. No credit card required.

Pkpass viewer and validator FAQ

Quick answers about viewing, decoding, and validating Apple Wallet passes.

What is a pkpass file?

A .pkpass file is an Apple Wallet pass package. It is a ZIP archive that usually contains pass.json, images, a manifest file, and a signature file.

Does this pkpass inspector upload my pass?

No. The file is opened and inspected in your browser. The pass file does not need to be sent to Leal or any server.

Can I use this as a pkpass validator?

Yes. Use it to validate a .pkpass package for common PassKit issues, missing files, manifest hash mismatches, barcode problems, and signature details before testing the pass in Apple Wallet.

Does this pkpass viewer support iOS 27 poster passes?

Yes. It detects the posterGeneric style that iOS 27 added, renders the poster face with its artwork, primary logo, header field, primary fields and barcode, and lets you switch to the fallback layout that iOS 26 and earlier show. It also checks the artwork and primaryLogo image sizes, featured actions, and the new barcode formats.

What are featured actions on an Apple Wallet pass?

Featured actions are up to two buttons Wallet shows under a pass on iOS 27, such as View Offers and Rewards, Book an Appointment, Go to Location or Call. They live in a featuredActions array in pass.json, each with an identifier, a type and a url. Go to Location takes an Apple Maps place ID in placeIdentifier instead of a url. The inspector previews them the way Wallet lays them out.

Which barcode formats does Apple Wallet support?

QR, PDF417, Aztec and Code 128 work on every iOS version. iOS 27 adds EAN-13, Code 39, Codabar and ITF (PKBarcodeFormatEAN13, PKBarcodeFormatCode39, PKBarcodeFormatCodabar and PKBarcodeFormatI2of5). Older iPhones can't show the new formats, so list a QR or Code 128 fallback after them in the barcodes array.

Is this a pkpass viewer online?

Yes. It is an online pkpass viewer that renders a preview of the pass and decodes the package in your browser, without uploading the file.

Can this tool verify the Apple signature?

Yes. It parses the PKCS#7 signature, checks it against manifest.json, validates the signer against pinned Apple WWDR certificates, and reports certificate or identifier mismatches where possible.

What files can I inspect?

Upload a .pkpass file from Apple Wallet or a PassKit build process. The tool reads common package files including pass.json, manifest.json, signature, icons, logos, strip images, and barcode fields.

How do I open a pkpass file on Windows?

Windows has no built-in pkpass reader. You have two options: use this browser-based pkpass viewer, which renders the pass and decodes the package without installing anything, or rename the file to .zip and extract it to read pass.json and the images directly. Renaming to .zip shows you the raw contents but will not render the pass.

Can I open a pkpass file on Android?

Yes. Since April 2024, Google Wallet on Android can import .pkpass files directly through the share sheet. If Google Wallet rejects a particular pass, third-party apps such as PassWallet or Pass2U read the format natively. This viewer also works in any Android browser.

What opens a pkpass file on Mac?

Double-clicking a .pkpass file on macOS opens Pass Viewer, a built-in app that renders the pass and offers to add it to Apple Wallet through iCloud, which syncs it to your iPhone and Apple Watch.

Why won't my pkpass file open on any device?

The three usual causes are a truncated or re-encoded download, an invalid PKCS#7 signature (often an expired Pass Type ID or WWDR certificate), and manifest hashes that no longer match the files because the package was modified after signing. This tool checks all three and reports which one is failing.

Do I need a pkpass opener or reader app?

Not for inspecting a pass. This tool works as a pkpass reader in any modern browser on Windows, macOS, Linux, Android, and ChromeOS. You only need a native app if you want to store the pass in a wallet, in which case use Apple Wallet on iOS or Google Wallet on Android.