Google Wallet vs Apple Wallet passes.
The rules for each platform’s pass, row by row, with every number generated from the modules our own pass builders obey and each source linked.
Apple Wallet takes a signed .pkpass file the holder opens; Google Wallet takes an object you write to Google and a signed save link. The rules differ in every row below: image sizes, field layout, text length, barcode types and how a saved pass updates.
- Apple
- A signed file. Images in points, at three scales. Fields by style.
- An object held by Google. Images in pixels. Template rows.
- Dated
- Read 12 October 2026, from each platform’s docs.
The two wallets, rule by rule.
| Apple Wallet | Google Wallet (Generic pass) | |
|---|---|---|
| What the pass is | A signed .pkpass bundle: pass.json, the images, a manifest and a signature, zipped. The file is the pass. |
A Generic class and object held by Google, written through the Wallet REST API (https://walletobjects.googleapis.com/walletobjects/v1). Your server never ships a file. |
| How the holder saves it | Opens the file (from Safari, Mail or Messages) and Wallet adds it. | Opens a save link, https://pay.google.com/gp/v/save/<jwt>, carrying a JWT signed RS256 by your service account, with aud “google” and typ “savetowallet”. |
| Logo | Allotted 160 × 50 pt (“in most cases it should be narrower”): 160 × 50 px @1x, 320 × 100 px @2x, 480 × 150 px @3x. | At least 660 × 660 px, 1:1, PNG. Google masks it into a circle: leave it square, with a full-bleed background colour. |
| Icon | 29 × 29 pt: 29 × 29 px @1x, 58 × 58 px @2x, 87 × 87 px @3x. Required. | Not part of the Generic pass rules quoted here. |
| The wide image | strip.png, sharp, by style: store card and coupon 375 × 144 pt, event ticket 375 × 98 pt. Store card: 375 × 144 px @1x, 750 × 288 px @2x, 1125 × 432 px @3x. |
The hero image, recommended 1032 × 812 px (about 5:4), shown full width under the data fields. |
| Other images | Thumbnail 90 × 90 pt, background 180 × 220 pt (blurred by Wallet), footer 286 × 15 pt; which ones a pass may carry depends on its style. | None beyond the logo and the hero in the rules quoted here. |
| Fields on the front | Up to 3 header, 1 primary, 4 secondary and 4 auxiliary fields; boarding passes 2 primary and 5 auxiliary. Store cards, coupons and generic passes with a square barcode get 4 secondary and auxiliary fields combined. | Template rows of one, two or three items each: “at least one element and we recommend to use at most two”. An empty item is not shown, and a row with every item empty disappears. |
| Text length | No character count in the rules quoted here. Wallet truncates a row rather than wrapping it: we measured about 42 characters across one row (our measurement, not Apple’s). | Card title under 47 characters, header under 88. |
| Links | On the back of the pass, in back fields. | Up to 4 URIs in the links module. |
| Barcodes | PKBarcodeFormatQR, PKBarcodeFormatAztec, PKBarcodeFormatPDF417, PKBarcodeFormatCode128. Square: PKBarcodeFormatQR, PKBarcodeFormatAztec. |
QR_CODE, AZTEC, PDF_417, CODE_128, CODE_39, CODABAR, DATA_MATRIX, EAN_8, EAN_13, ITF_14, UPC_A, TEXT_ONLY. Rotating barcodes: QR_CODE, PDF_417 only. |
| Updating a saved pass | The pass carries a webServiceURL and token; Wallet registers the device, your server sends an empty push through APNs, and Wallet downloads the new signed pass. The protocol. |
Write the changed object through the REST API, and the saved pass shows the change. An object cannot be deleted, only expired. |
| What you need to issue | A Pass Type ID and its certificate, created in an Apple Developer account by its Account Holder or an Admin (Apple). Apple’s membership pages give what an account costs. | An issuer account in the Google Pay & Wallet Console and a Google Cloud service account. New accounts start in demo mode, issuing only to testers, until publishing access is granted. Google’s onboarding page states no fee. |
Apple’s figures from the PassKit Package Format Reference; Google’s from its brand guidelines, template and web docs and the BarcodeType reference. Read 12 October 2026. Each figure is generated from the module our own pass builders obey.
Cardr builds both passes from the same card: the Apple pass to pass-spec.js and the Google pass to spec.js, the two modules this table is generated from.
The full Apple Wallet pass guide · Check a .pkpass in your browser
Two wallets, answered.
Can one pass work in both wallets?
No. Apple Wallet takes a signed .pkpass file; Google Wallet takes an object you write to Google and a save link. You build each from the same data, but they are two different things with two different sets of rules.
Does Google Wallet open a .pkpass?
It is not the format Google Wallet issues. What happens when a .pkpass is opened on Android depends on the app; what a .pkpass file is covers which platforms open one.
Which images do I need for each?
Apple: an icon, always, plus the images the pass style allows, at @1x, @2x and @3x. Google’s Generic pass: a square logo at least 660 px, and a hero image if you use one, recommended 1032 × 812 px.
How long can a Google Wallet card title be?
Under 47 characters, and the header under 88, per Google’s brand guidelines.
Need a pass of your own rather than a spec? Make a free Cardr: a signed Apple Wallet business card in about a minute.