Methodology
Good decisions start
with honest evidence.
A transparent guide to our sources, scoring, and the limits of public store data.
The honesty contract
- Never fabricate a number. No invented search volume, no invented difficulty, no invented rank. When a source is unreachable, the section renders as unavailable with the reason — never a substitute.
- Every rule carries a source URL and a verification date. The rulebook below was re-read from the stores' own documentation on 2026-09-07.
- Best-effort scraping is labelled best-effort. Google Play has no public search API; the first result page is parsed from the live storefront, and the depth is stated as exactly what that page renders (~30 results).
- Rank depth is store-honest. Apple searches are capped at 100 positions per term; Play ranks come from its first result page only. A deeper Play number would be fake.
- Partial is stamped partial. Fields a public page cannot show (the iOS keyword field, promotional text) are excluded from scoring, and the score is renormalised out of 100.
- Nothing ships on the generator's say-so. Every drafted recommendation passes the same validator as hand-written metadata before it is shown as valid.
The rulebook
Verified 2026-09-07. A * marks a limit enforced by the console but not quoted verbatim on the cited page — the tool enforces it and says so.
App Store — text fields
| Field | Limit | Source |
|---|---|---|
name |
30 characters | Official documentation ↗
Apple: "must be at least two characters and no more than 30 characters." |
subtitle |
30 characters | Official documentation ↗
Apple: "This can't be longer than 30 characters." |
keywords* |
100 characters | Official documentation ↗
Comma-separated. Enforced by App Store Connect on save. |
promotional_text* |
170 characters | Official documentation ↗
Editable without submitting a build. |
description* |
4000 characters | Official documentation ↗ |
whats_new* |
4000 characters | Official documentation ↗ |
Google Play — text fields
| Field | Limit | Source |
|---|---|---|
title |
30 characters | Official documentation ↗
Google: "30 character limit". |
short_description |
80 characters | Official documentation ↗
Google: "80 character limit". First text users see on the listing. |
full_description |
4000 characters | Official documentation ↗
Google: "4000 character limit". |
App Store — screenshot sizes
| Device | Portrait | Landscape |
|---|---|---|
| 6.9 — iPhone | 1320 × 2868 | 2868 × 1320 |
| 6.5 — iPhone | 1284 × 2778 | 2778 × 1284 |
| 6.3 — iPhone | 1206 × 2622 | 2622 × 1206 |
| 6.1 — iPhone | 1170 × 2532 | 2532 × 1170 |
| 5.5 — iPhone | 1242 × 2208 | 2208 × 1242 |
| 4.7 — iPhone | 750 × 1334 | 1334 × 750 |
| 4.0 — iPhone | 640 × 1136 | 1136 × 640 |
| 3.5 — iPhone | 640 × 960 | 960 × 640 |
| 13 — iPad | 2064 × 2752 | 2752 × 2064 |
| 12.9 — iPad | 2048 × 2732 | 2732 × 2048 |
| 11 — iPad | 1668 × 2420 | 2420 × 1668 |
| 10.5 — iPad | 1668 × 2224 | 2224 × 1668 |
| 9.7 — iPad | 1536 × 2048 | 2048 × 1536 |
Data retention
Jobs are pruned after 24 hours. Reports are immutable once generated. Rank history is public measurements of public store results — any visitor can see it. No accounts, no API keys, no private console data.