# App preview (video) upload

Use App Store Manager to upload and transfer app preview videos to **App Store Connect** (Standard Store Listing & Custom Product Page) — across all your supported languages and device sizes.

{% hint style="info" %}
App previews are only supported for **App Store Connect**. Google Play does not support direct video file uploads — see Google Play promo video at the bottom of this page for details.
{% endhint %}

App previews follow the same locale detection and slot logic as [screenshots](/documents/edit-translate-and-upload/screenshot-and-asset-upload.md). The key differences are file format, resolution rules, and the per-device preview limit imposed by App Store Connect.

### 1. Before you start

Assets are stored for **180 days** on Basic and Premium plans before automatic deletion. This does not affect your live store listings. Uploads can take up to **1.5 hours** to complete. Business customers receive prioritized processing.

{% hint style="warning" %}
Uploading **overwrites** existing store listing data. Always review your localized assets in the manager before starting a transfer.
{% endhint %}

Required permissions

**App Store Connect** — [a valid API key must be configured ](/documents/access/app-store-connect-access.md)in your App Store Manager account settings.

### 2. App Previews (drag & drop)

App Store Manager handles both images and videos. Drop video files into App Peview page — the Smart Recognition Engine identifies locale, slot, and device resolution using the same rules as for screenshots.

**What you can do:**

* Drag in single video files, multiple files, or entire folder structures
* Reorder previews by dragging within a slot
* Manually assign any unrecognized files that land in "Uncategorized"
* Replace individual positions — uploading to Position 2 only affects that slot; all others stay as-is

{% hint style="info" %}
A **"Remove all first"** toggle is currently in development. For now, replacement is position-based only.
{% endhint %}

<figure><img src="/files/7OY0Uy39c3FeWHCYDDSD" alt=""><figcaption><p>Upload videos with App Store Manager</p></figcaption></figure>

How the Smart Recognition Engine works

When you drop files, the engine runs three checks in order:

**Step 1 — Language detection**

The engine first tries to identify the locale from your folder structure, then falls back to the filename if no match is found.

**Folder path scan (primary):** Every folder segment in the path is checked left to right. The first segment that matches a known locale code or alias is used.

**Filename fallback:** If no folder matches, the filename is split at `-`, `_`, or spaces and checked against the same alias list.

The following aliases are recognized. Short two-character aliases (e.g. `de`, `en`) only match when the entire folder segment or filename part is an exact match — they are never matched as substrings.

| Locale    | Recognized aliases                                                            |
| --------- | ----------------------------------------------------------------------------- |
| `ar-SA`   | `arabic`, `ar`, `ar-sa`, `ara`, `عربي`, `saudi`                               |
| `ca`      | `catalan`, `català`, `catalonia`                                              |
| `cs`      | `czech`, `cz`, `cesky`, `čeština`, `czechia`                                  |
| `da`      | `danish`, `dk`, `dansk`, `denmark`                                            |
| `de-DE`   | `german`, `deutsch`, `de`, `de-de`, `deu`, `ger`                              |
| `el`      | `greek`, `gr`, `ελληνικά`, `greece`                                           |
| `en-AU`   | `en-au`, `australian`, `australia`                                            |
| `en-CA`   | `en-ca`, `canadian-english`                                                   |
| `en-GB`   | `en-gb`, `british`, `uk`, `england`, `united-kingdom`                         |
| `en-US`   | `english`, `en`, `en-us`, `eng`, `us`, `american`                             |
| `es-ES`   | `spanish`, `español`, `espanol`, `es`, `es-es`, `spa`, `castilian`            |
| `es-MX`   | `es-mx`, `mexican`, `mexico`                                                  |
| `fi`      | `finnish`, `suomi`, `finland`                                                 |
| `fr-CA`   | `fr-ca`, `quebec`, `canadian-french`                                          |
| `fr-FR`   | `french`, `français`, `francais`, `fr`, `fr-fr`, `fra`                        |
| `he`      | `hebrew`, `il`, `עברית`, `israel`                                             |
| `hi`      | `hindi`, `हिन्दी`, `india`                                                    |
| `hr`      | `croatian`, `hrvatski`, `croatia`                                             |
| `hu`      | `hungarian`, `magyar`, `hungary`                                              |
| `id`      | `indonesian`, `bahasa`, `indonesia`                                           |
| `it`      | `italian`, `italiano`, `ita`                                                  |
| `ja`      | `japanese`, `jp`, `jpn`, `nihongo`                                            |
| `ko`      | `korean`, `kr`, `kor`, `hangul`                                               |
| `ms`      | `malay`, `my`, `melayu`, `malaysia`                                           |
| `nl-NL`   | `dutch`, `nl`, `nl-nl`, `nederlands`, `holland`, `netherlands`                |
| `no`      | `norwegian`, `nb`, `norsk`, `norway`                                          |
| `pl`      | `polish`, `polski`, `poland`                                                  |
| `pt-BR`   | `portuguese`, `português`, `pt`, `pt-br`, `brazilian`, `brazil`               |
| `pt-PT`   | `pt-pt`, `portugal`                                                           |
| `ro`      | `romanian`, `română`, `romania`                                               |
| `ru`      | `russian`, `rus`, `русский`                                                   |
| `sk`      | `slovak`, `slovenčina`, `slovakia`                                            |
| `sv`      | `swedish`, `se`, `svenska`, `sweden`                                          |
| `th`      | `thai`, `ไทย`, `thailand`                                                     |
| `tr`      | `turkish`, `türkçe`, `turkey`                                                 |
| `uk`      | `ukrainian`, `ua`, `українська`, `ukraine`                                    |
| `vi`      | `vietnamese`, `vn`, `tiếng việt`, `vietnam`                                   |
| `zh-Hans` | `chinese`, `zh-hans`, `zh-cn`, `simplified`, `mandarin`, `chinese-simplified` |
| `zh-Hant` | `zh-hant`, `zh-tw`, `traditional`, `chinese-traditional`, `taiwan`            |

**Step 2 — Slot order**

Display position is read from numbers in the filename:

* **Numbers between underscores** — `en-US_2_886x1920.mp4` is placed in Slot 2
* **Direct numeric names** — `1.mp4` through `3.mp4` are placed in the corresponding slot

{% hint style="info" %}
App Store Connect allows a maximum of **3 app previews per device size per locale**.
{% endhint %}

Step 3 — Resolution detection

The target device is identified **exclusively** by the actual pixel dimensions of the video. Folder names like "iPhone 15" are ignored — only the real video frame size matters. See 3. Technical specifications below for the full list of supported dimensions.

### 3. Technical specifications

Resolution detection works by matching the exact pixel dimensions of your video files to Apple's accepted resolutions below. Note that accepted resolutions differ from device resolutions — Apple scales previews across similar device sizes.

#### General requirements

| Property             | Value                                                                       |
| -------------------- | --------------------------------------------------------------------------- |
| Max file size        | 500 MB                                                                      |
| Min duration         | 15 seconds                                                                  |
| Max duration         | 30 seconds                                                                  |
| Max frame rate       | 30 fps                                                                      |
| Default poster frame | 5 seconds                                                                   |
| Orientation          | Portrait or Landscape (Mac, Apple TV, and Apple Vision Pro: landscape only) |
| Previews per device  | Up to 3                                                                     |

#### Video formats

| Property             | H.264                                     | ProRes 422 (HQ only)                |
| -------------------- | ----------------------------------------- | ----------------------------------- |
| Target bit rate      | 10–12 Mbps                                | \~220 Mbps (VBR)                    |
| Video                | Progressive, up to High Profile Level 4.0 | Progressive, no external references |
| Audio codec          | 256 kbps AAC                              | PCM or 256 kbps AAC                 |
| Sample rate          | 44.1 kHz or 48 kHz                        | 44.1 kHz or 48 kHz                  |
| Channels             | Stereo                                    | Stereo                              |
| Supported extensions | `.mov`, `.m4v`, `.mp4`                    | `.mov`                              |

#### iPhone — accepted resolutions

Apple uses a single set of accepted resolutions scaled across multiple device sizes. If a specific size is not provided, Apple falls back to the next larger size.

| Display                                             | Accepted portrait | Accepted landscape | Fallback           |
| --------------------------------------------------- | ----------------- | ------------------ | ------------------ |
| 6.9" (iPhone Air, 16 Pro Max, 16 Plus, 15 Pro Max…) | 886 × 1920        | 1920 × 886         | —                  |
| 6.5" (iPhone 14 Plus, 13 Pro Max, 11, XR…)          | 886 × 1920        | 1920 × 886         | Falls back to 6.9" |
| 6.3" (iPhone 17 Pro, 17, 16 Pro, 16, 15 Pro…)       | 886 × 1920        | 1920 × 886         | Falls back to 6.5" |
| 6.1" (iPhone 16e, 14, 13, 12, 11 Pro, X…)           | 886 × 1920        | 1920 × 886         | Falls back to 6.5" |
| 5.5" (iPhone 8 Plus, 7 Plus, 6S Plus…)              | 1080 × 1920       | 1920 × 1080        | Falls back to 6.1" |
| 4.7" (iPhone SE 2nd/3rd gen, 8, 7, 6S…)             | 750 × 1334        | 1334 × 750         | Falls back to 5.5" |
| 4.0" (iPhone SE 1st gen, 5S, 5C, 5)                 | 1080 × 1920       | 1920 × 1080        | Falls back to 4.7" |

#### iPad — accepted resolutions

| Display                                                        | Accepted portrait         | Accepted landscape        | Fallback            |
| -------------------------------------------------------------- | ------------------------- | ------------------------- | ------------------- |
| 13" (iPad Pro M4/M5, iPad Air M2/M3)                           | 1200 × 1600               | 1600 × 1200               | —                   |
| 12.9" (iPad Pro 2nd gen)                                       | 1200 × 1600 or 900 × 1200 | 1600 × 1200 or 1200 × 900 | Falls back to 13"   |
| 11" (iPad Pro M4/M5, iPad Air 4th/5th gen, iPad mini 6th gen…) | 1200 × 1600               | 1600 × 1200               | Falls back to 13"   |
| 10.5" (iPad Pro, iPad Air 3rd gen, iPad 7th–9th gen)           | 1200 × 1600               | 1600 × 1200               | Falls back to 12.9" |
| 9.7" (iPad Pro, iPad Air, iPad mini 2–5…)                      | 900 × 1200                | 1200 × 900                | Falls back to 10.5" |

#### Google Play promo video

Google Play does not support direct video file uploads through the API. Promo videos on Google Play are managed as a **YouTube URL** per locale, set directly in the Google Play Console under the store listing. App Store Manager does not transfer video assets to Google Play.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.appstoremanager.net/documents/edit-translate-and-upload/app-preview-video-upload.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
