Know why your app would be rejected.
Upload the build you are about to submit. Verdict reports what App Review would find, with the guideline and the fix.
Drop your .ipa, .apk, .aab, zipped macOS app, or Windows .msix here
or click to choose a file. Up to 1000MB.
Analyzed in seconds. Deleted right after. Never executed.
App Store risk
Rejection likely
Trailhead 2.1.0 · com.example.trailhead
4 to resolve
You upload the build
The .ipa, .apk, .aab, zipped macOS app or .msix you were about to submit, up to 1000MB. No account, no configuration, no SDK to install.
Verdict reads it
Signatures, entitlements, manifests, permission strings, embedded SDKs and deprecated APIs. The same artifacts a reviewer's tooling opens, read as bytes and never executed.
You get the verdict
A risk score, every finding that would cost you the submission, the exact thing in your build that set it off, and the change that clears it, each cited to the rule it breaks.
What you get back
One upload. Everything a reviewer would have found.
Not a checklist you fill in. Six things the scan hands back, each one read out of the build itself.
Drop a build, get a verdict
An .ipa, .apk, .aab or .msix, straight off your disk. One score, one gate decision, and the findings behind both.
IPAMyApp.ipa48.2 MB68Needs work before submission
2 blockers6 warningsEvery finding names its rule
Not an opinion about your app. The evidence read out of the binary, and the guideline a reviewer would cite for it.
NSCameraUsageDescription is missing
Info.plist · camera entitlement present
A work order, cheapest first
Paste-ready patches ordered by the score each one recovers, so working top to bottom is the shortest route to shipping.
Fix brief · sorted by score recovered
- Add camera usage string+9
- Remove UIWebView reference+7
- Declare data collection+4
Your agent does the fixing
Verdict speaks MCP, so Claude Code or Codex can scan the build, read what is wrong, and repair it without leaving the session.
claude>scan my latest build
Uploading, then reading the report
68 · 2 blockers
Applying the fix brief
The gate stops the release
The same policy your team set, running in CI. A build that would be rejected fails the pull request instead of the review.
Release 4.2 → mainMerge blockedThe team hears about it
A scan lands or a gate fails and the channel knows, through Slack, Discord, or any webhook that takes a line of text.
#releases
Verdict works where you already do.
Nothing here is a roadmap. Every name is somewhere a scan can reach, or a build the engine can read, today.
Plugs into
- Claude Code
- Codex
- GitHub Actions
- GitLab CI
- Slack
- Discord
- Any webhook
Reads builds for
- App Store
- Google Play
- iOS
- Android
- macOS
- Windows
- Linux builds
The notices you never want to read
These are the rejections developers actually receive, paraphrased from Apple and Google's published templates. Most of them come down to a fact that was already sitting in the build, which is the whole reason this tool exists.
Your app requests access to the camera but the purpose string does not explain how the data will be used.
We were unable to review your app because it was signed with a distribution profile that is not valid for the App Store.
Your app targets an API level below the current requirement. Update targetSdkVersion before this release can be published.
Your app supports account creation but does not include an option to initiate account deletion from within the app.
Your app declares QUERY_ALL_PACKAGES without a permitted use case for broad package visibility.
Your app links against a non public API, which is not permitted on the App Store.
The data safety section does not accurately reflect the data types your app collects and shares.
Your app requests access to the camera but the purpose string does not explain how the data will be used.
We were unable to review your app because it was signed with a distribution profile that is not valid for the App Store.
Your app targets an API level below the current requirement. Update targetSdkVersion before this release can be published.
Your app supports account creation but does not include an option to initiate account deletion from within the app.
Your app declares QUERY_ALL_PACKAGES without a permitted use case for broad package visibility.
Your app links against a non public API, which is not permitted on the App Store.
The data safety section does not accurately reflect the data types your app collects and shares.
Your app uses the AdSupport framework but does not request permission through App Tracking Transparency.
The screenshots in your App Store listing do not show the app in use on the device it targets.
Your app declares a foreground service type that is not matched by a declared and permitted use.
Your app includes user generated content but does not provide a mechanism to report offensive material.
Your app requests background location access without an approved declaration for that use.
Your app unlocks features using a purchase mechanism other than in-app purchase.
We noticed your app provides the same feature set as other apps submitted to the App Store.
Your app uses the AdSupport framework but does not request permission through App Tracking Transparency.
The screenshots in your App Store listing do not show the app in use on the device it targets.
Your app declares a foreground service type that is not matched by a declared and permitted use.
Your app includes user generated content but does not provide a mechanism to report offensive material.
Your app requests background location access without an approved declaration for that use.
Your app unlocks features using a purchase mechanism other than in-app purchase.
We noticed your app provides the same feature set as other apps submitted to the App Store.
Paraphrased from published App Store Review Guidelines and Google Play policy pages. Not quotations from named developers.
Pricing
Scanning is free. Pay when you want the fixes.
Every build gets a score and a category breakdown at no cost, because a score you cannot check is worth nothing.
Free
$0forever
Every finding on every build, counted and graded. No account needed.
- Approval risk score
- Every finding counted and graded
- The policy area each one falls under
- Store listing checked
- Website check
- Submission checklist
App Pass
No subscription$49.99 one time
Pick one app. For 30 days you see every problem we find, what in your build caused it, and how to fix it. Rescan as often as you need.
- Everything in Free
- Covers one app, both its iOS and Android builds
- Rescan as many times as you want for 30 days
- Every problem named, with the Apple or Google rule it breaks
- The exact thing in your build that set it off
- Copy and paste fixes, ordered by what lifts your score most
- What changed since your last scan, so you can see a fix land
- Ask questions about your report and get answers with sources
- A written summary you can hand to Claude, Cursor or Copilot
- Fail a build automatically in CI, plus API access
One payment. Nothing renews.
Team
Save 17%$499.99 / yearly
The whole roster, paid once a year. Works out at $41.67 a month across 10 client apps, or $4.17 an app.
- Every App Pass feature, on every app, for 5 people
- 10 client workspaces, kept apart
- One dashboard: every member's scans and apps
- Slack pings when a scan lands or the gate fails
- One release policy for every member's CI gate
- Team-wide build over build comparison
- Invite by email, and teammates join by signing in
Billed once a year
Go deeper
Want to know more? Check out all the features.
The detail lives on its own pages rather than further down this one. Three places to look, depending on what you came to find out.
Still deciding? Read the questions worth asking or write to us.