What a .pkpass file is, and how to open one.
Somebody sent you a file your computer does not recognise. It is an Apple Wallet pass — signed, self-contained, and openable on more platforms than it looks. Here is where it opens, what is inside it, and why it sometimes refuses.
A .pkpass file is an Apple Wallet pass: a small signed archive holding a boarding pass, a ticket, a loyalty card or a business card. It opens natively on iPhone, iPad and Mac. On Android it opens some of the time, and on Windows it does not open at all — though on any machine you can read what is inside it, because underneath the extension it is an ordinary zip.
- It is a zip
- Rename it to
.zipand unarchive it. Nothing is encrypted; the signature proves the contents have not changed, it does not hide them. - It is signed
- Every pass is signed with a certificate Apple issued to a specific developer for a specific pass type. This is why a pass cannot be edited and re-added, and why there is no such thing as a pass made in a text editor.
- It may be live
- A pass can carry a server address and update itself for years after it was added. Whether it does depends entirely on who made it.
Where a pass opens, and where it only shows.
The distinction that matters is not whether a file opens. It is whether the thing that opens it is a wallet — something that keeps the pass, puts it on a lock screen and lets it update — or a viewer that renders it once and forgets it.
| Platform | Native support | What actually happens |
|---|---|---|
| iPhone or iPad | Yes, natively. | Tap it in Mail, Messages, Files or Safari and Wallet offers to add it. This is the only platform where a pass is fully alive: it updates over the air, shows on the lock screen, and appears when you are near a relevant place or time. |
| Mac | Yes, natively. | Double-clicking a .pkpass in Finder opens Pass Viewer, a small system app at /System/Library/CoreServices/Pass Viewer.app. It renders the pass and can hand it to the Wallet on an iPhone signed into the same Apple Account. |
| Android | Partly. | Google Wallet has imported .pkpass files since 2024, but the support is genuinely uneven: it depends on the Wallet and Play Services build, and passes it does not recognise are refused rather than degraded. Where it fails, a dedicated reader — WalletPasses, Pass2U, PassWallet — opens them reliably. |
| Windows | No, not really. | There is no first-party reader. You can see what is inside the archive (below), which is enough to read a barcode or a phone number off it, but nothing on Windows will render the pass as a pass. |
| Any browser | To look, not to keep. | A web viewer renders pass.json and the images. Ours opens the file in the browser without uploading it and checks it against Apple’s rules. Useful for inspecting a pass; it is not a wallet, and a pass opened this way is not stored anywhere. |
Checked 17 September 2026. Google Wallet’s pkpass import has rolled out gradually and by device, so treat Android as “try it, then fall back”.
Eleven files, and three of them are the pass.
This is a real pass, generated by the builder behind this site and listed straight out of the archive. Rename any .pkpass to .zip and you will see the same shape.
$ unzip -l engine_turn-storeCard.pkpass
186306 strip@3x.png
88787 strip@2x.png
23481 strip.png
1537 logo@2x.png
858 logo.png
1823 icon@3x.png
1237 icon@2x.png
605 icon.png
1407 pass.json
506 manifest.json
3248 signature
11 files
| File | What it is |
|---|---|
pass.json |
The pass itself: style, fields, colours, barcode payload, the serial number and the pass type identifier. |
manifest.json |
A SHA-1 for every other file in the archive. Change one pixel of one image and this no longer matches. |
signature |
A detached PKCS#7 signature over manifest.json, made with a certificate Apple issued for that pass type identifier. |
icon.png, logo.png |
At 1x, 2x and 3x. Which images a pass needs depends on its style. |
strip.png |
On a store card or coupon, the one large image Wallet renders sharp. Present here because this pass is a store card. |
Four failures, and which end each one is at.
Nearly every “this pass will not open” is one of these, and three of the four are the sender’s problem rather than the recipient’s.
- It downloads as a
.zip, or as a file with no icon - The server sent the wrong content type. A pass has to be served as
application/vnd.apple.pkpass; served asapplication/ziporoctet-stream, iOS will not recognise it and hands it to the Files app instead. This is a fault at the sender’s end, not yours. - “Safari cannot download this file”
- Usually the same content-type problem, and occasionally a redirect chain that loses the header on the last hop.
- It opens, and Wallet refuses to add it
- The signature does not validate. Either the archive was modified after signing — which breaks
manifest.json— or the signing certificate has expired. An expired certificate does not remove passes already in a Wallet; it only stops new ones being added. - It adds, then never changes again
- Over-the-air updates need a
webServiceURLand anauthenticationTokeninpass.json, plus a server answering Apple’s update endpoints. A pass without those is a snapshot, and most passes in the wild are snapshots.
The rest of it.
Is a .pkpass file safe to open?
A pass cannot execute anything. It is JSON, PNGs and a signature, and Wallet will not add one whose signature does not validate against a certificate Apple issued. The judgement to make is about the contents — a barcode or a link in a pass can point anywhere — rather than about the file.
Can I open a .pkpass on Android?
Often. Google Wallet has imported pkpass files since 2024, but support varies by device and build. If Google Wallet refuses it, a dedicated reader such as WalletPasses or Pass2U will open it.
How do I open a .pkpass on Windows?
You cannot render it as a pass in Wallet; there is no first-party reader. Our .pkpass viewer shows the fields and images in any browser without uploading the file, or you can rename it to .zip and open the archive.
Can I edit a pass and add it again?
No. Every file is hashed in manifest.json and that manifest is signed, so any edit invalidates the signature and Wallet refuses the pass. Changing a pass means re-issuing it from whoever holds the signing certificate.
Why did my pass stop updating?
Live updates require a webServiceURL and an authenticationToken inside pass.json and a server still answering on the other end. Most passes never carried them, and some that did belong to services that have since shut down.
What makes a business card a good use of this format?
A pass sits in an app already on the phone, opens with no signal, and — if it was built to update — changes in place when the details behind it change. A card that is a pass does not go stale in its holder’s pocket, which is the failure mode of every other kind of business card.
More on Apple Wallet business cards
Start with Apple Wallet business cards: Build one, share it, and fix it when it will not open. Written from the passes we sign every day.
- Apple Wallet pass not updatingGuide
- An Apple Wallet business card without an appGuide
- Apple Wallet pass field limitsGuide
- Can an Apple Wallet pass be animated?Guide
- Add a business card to Google WalletGuide
- Add a business card to Apple WalletGuide
- Apple Wallet pass image sizesGuide
- Apple Wallet pass developer guide
- .pkpass viewerFree tool
- Google Wallet vs Apple Wallet passes
- A business card with no app to install
A card that arrives as one of these.
Cardr issues your business card as a signed Apple Wallet pass. It opens with no signal, needs no app at the other end, and updates itself when your details change.