APP STORE & GOOGLE PLAY LISTING CHECKER · RUNS IN YOUR BROWSER
Fix the listing text before the store does it for you
Paste your listing copy and see which fields are over the character limit,
how many of the 100 App Store keyword characters are wasted on spaces, repeats and
words already in your name, and which lines carry promotional claims, placeholder text or
keyword stuffing that reviewers send back.
Nothing is uploaded. Your text is checked in this browser and is not transmitted or stored.
1. Paste your listing
2. Findings
Want this as a release gate?
The CLI reads a fastlane metadata folder and exits non-zero when something would block the submission:
Get check.mjs and engine.mjs from the repo — plain Node 18+, nothing to install, no network. Exit 1 on a danger finding, 2 when the paths could not be used.
Common questions
How many characters does the App Store keyword field allow?
100 characters, comma-separated, with no need for spaces. Spaces next to commas spend characters and add nothing. Apple also matches singular and plural forms and indexes your name and subtitle separately, so repeating those words in the keyword field wastes room. This tool counts all of that and lists the characters you could win back.
What are the App Store and Google Play title limits?
Apple allows 30 characters for the app name and 30 for the subtitle; Google Play allows 30 for the title and 80 for the short description. Both stores count characters, not bytes, so an emoji or accented letter counts as one. A listing over a limit is refused at submission.
Is this a prediction of whether review will pass?
No. Limits are mechanical and reported as failures. Everything else is a heuristic drawn from each store's published metadata rules — a promotional word in a name, a repeated keyword, a mention of another platform — and is reported as a notice that says exactly what it saw. Passing every check does not mean a listing will be approved.
Is my listing text uploaded anywhere?
No. The text you paste is checked in your browser and is never transmitted or stored. The page keeps only an anonymous local count of how many times the check button was pressed, which you can switch off below.