Free
Free
The whole editor, every store size, every preflight rule.
Licence: use the images on your own App Store and Google Play listings, forever, with no attribution.
No account · no cardThe first full export is unwatermarked
Open it and start — no account, no card. The editor in the film is the editor you get, and it re-checks every store size your set lists as you type
Sent to be checked, never stored. No account.
Playing, not a poster. Of 7 video elements measured across 3 sites that ship one, not one had ever loaded a frame.
One set, from an empty project to a full export. Nothing above is a mock-up — it was recorded by driving the editor you can open below, and every chapter is a place you can jump to.
9 chapters · 24 seconds
Shipshot is new. There is no export counter on this page and no logo row, because there is nothing true to put in them. These come out of the codebase, and each one names what proves it.
finished starting points
9 complete sets over 16 screen layouts. Every one of them is a whole multi-screen document, not a card — and swapping a screen's layout is one click, not a redesign.
@shipshot/templates
golden renders the export is pinned against
macOS and Linux, watermarked and not. If a render moves by one pixel the build fails before you do, and the changelog says what moved and why.
apps/worker/tests/goldens*
store sizes enforced
Every slot Shipshot exports, with its exact pixels, accepted formats and count limits. The editor, the validator and the export pipeline read this one table.
@shipshot/store-rules
pixels tall, at the largest slot
The tallest file either store asks for. Precision, not popularity — it is the number the whole product is arranged around.
@shipshot/store-rules
https://developer.apple.com/help/app-store-connect/reference/screenshot-specifications/
https://support.google.com/googleplay/android-developer/answer/9866151
Neither vendor page carries a last-updated marker, so that is a calendar check by a person, not a fetch.
If a store rejects an image Shipshot exported at a size it says it supports, that is a bug. Tell us and it goes in the changelog with a date, whether or not you are paying us.
That is the only promise on this page, and it is the only kind we can make yet. Every change so far, with its date.
9 of them, and each is a whole set rather than a card — one background sweeping across every screen, headlines in the top band, devices below. Open one and it is your document.
Drawn in CSS from device geometry · no images to fail · no vendor marks
Linked targets
A set is one document with a list of targets, not one file per size that you maintain in parallel. This one lists 2: iPad 13" and Play 7" tablet. Press a chip and the screen beside it reflows — the same scene, the same layers, a different aspect — and preflight re-runs for the target you picked.
A set draws one device body, so the sizes it lists are the sizes that body is right for — which is what makes every one of them a size it is correct on. An app that ships on a phone and a tablet makes one set for each, exactly as both stores’ listings ask for them.
Errors stay at zero at every one. Warnings do not, and they are shown rather than hidden: a template still says the template’s words until you replace them, and a changed aspect lands some geometry off the whole-pixel grid. Both have named repairs and neither blocks an export.
iPad 13" · 2064×2752
0 errors15 warnings, none blocking
At listing scale
A screenshot is only ever judged next to other screenshots, at thumbnail size, in a list. Shipshot shows you the destination while you design, and refuses to export a file the store would reject.
If the headline is unreadable at thumbnail size it is unreadable everywhere — and a thumbnail row is the one view nobody else in the category will put in front of you.
Momentum
Health & Fitness
The same iPhone 6.9" scene as the rest of this page, scaled down into a results row. An illustration of the setting — neither store publishes the width it renders one at.
Nothing here is a screenshot of the editor — it is the editor, running in the light theme it actually ships with. Drag the headline. Press an arrow and it moves exactly one pixel. Press the repair and the warning clears, because the verdict beside it came from the same validator the export runs.
9 devices4 materials7 angles3 placements22 shapes6 fill kinds
Every frame on this page is drawn by the browser from published millimetre dimensions. No vendor renders, no vendor logos, no photographs. That is a deliberate position, not a shortcut — nothing here can get your listing rejected, and nothing here can fail to load.
Try the devices →X 132 px Y 287 px
W 1056 px H 380 px
Selected Headline. Drag to move it. Arrow keys nudge 1 px; hold Shift for 10 px.
iPhone 6.9" · 1320×2868
0 errors · 2 warnings · 3 rules clean
Accepted, but not idealShipshot checkdevice-contrast
Device "Tall phone"'s body is #14141a on #0d0c15 — 1.06:1, below the 3:1 floor. Its edges are lost against the background; only the device's own screen separates it.
Change the device body colour, or the background behind it, if you want the body to read as well as the device's own screen.
Accepted, but not idealShipshot checksubpixel-geometry
"Headline" lands between pixels on iPhone 6.9": y 287.4.
Snap it to whole pixels so the export does not resample its edges.
Every verdict above is this document, checked against iPhone 6.9"’s published rules as it stands. Two more rules — text overflow and asset resolution — need a live measurement and run in the editor.
Drop in a PNG or a JPEG. You get its real dimensions, the format read from its bytes rather than its extension, whether it carries alpha, which store slots it satisfies, and for the ones it fails — the rule, the number and the fix. A file that is the right size with one property wrong is told so, rather than being told it satisfies nothing. It is sent to be checked, held in memory, and never written anywhere — no account, no session, no row.
PNG or JPEG. It is read in memory, checked, and never stored.
Free is the whole editor with a bounded output, not a demo of one. Every store size is free, every preflight rule is free, and the first complete set any account exports carries no watermark.
Free
The whole editor, every store size, every preflight rule.
Licence: use the images on your own App Store and Google Play listings, forever, with no attribution.
$12.00per month
Everything in Free, unmetered, with no watermark.
Licence: use the images on your own listings and on listings you publish for a client you bill.
$29.00per month
Everything in Indie, plus the loop that tells you which set won.
Licence: use the images on your own listings and on listings you publish for a client you bill.
Not for sale yet
No. The editor opens on a real set and runs in your browser. Sign in later to keep it; nothing is re-uploaded when you do.
The full editor — every layer type, every device, every angle, every store size, every preflight rule — and one complete unwatermarked export.
They are drawn from published millimetre dimensions. No vendor logos, no photography, no trade dress, in the product or in your exports.
The registry is the single source for the editor, the validator and the exporter, and it carries the date each vendor page was last read. One change, everywhere, dated.
Yes — the same components in the same engine, pinned against stored golden renders on two operating systems. There is no second implementation to drift.
The validator holds it in memory and never writes it anywhere. There is no session and no account involved at any point.
No account, no card, no email. The first complete set you export is unwatermarked
https://developer.apple.com/help/app-store-connect/reference/screenshot-specifications/
https://support.google.com/googleplay/android-developer/answer/9866151
Read on 2026-07-25
5 releases · latest 2026-07-25