Before each session. Make sure the iPhone is unlocked, brightness is at 50% or higher, and the phone is charging in portrait orientation (not lying flat). StandBy interrupts uploads — confirm it's off in device setup.
What Upload is
Upload is a content publishing mode for already-logged-in TikTok accounts:
- takes the next media file from the configured folder
- (optionally) adds music from a list of links
- (optionally) sets a description (4 sources to pick from)
- walks through the full TikTok upload flow
- waits for the video to process
- marks the file as used (move to
used/or delete) - moves on to the next account
When to use it
- Accounts already logged in, TikTok installed — you just need to publish at a steady pace
- You want to automate posting on a schedule or in a cycle
- Content is ready and lives locally (videos or photos for carousels)
If TikTok has to be installed first, the account logged in, the proxy switched — that's Seeding, not Upload. Upload only works with already-logged-in accounts and an installed TikTok.
Two content types
The template has a Content Type — Video / Carousel toggle. One template is locked to one type.
| Type | What gets published | Music |
|---|---|---|
| Video | One video file (mp4 / mov / m4v / avi / mkv) | Optional |
| Carousel | A series of photos (1–35 items, jpg / png / heic) | Required for carousels |
Template setup
In the UI: Templates → create template → Run Mode = Upload.
The template is built from cards: Content, Music, Description, Publishing, Gallery, Debug. Each card is covered below.
"Content" card — content source
For Video
| Field | What it controls |
|---|---|
| Video Folder | Absolute path to the video folder |
| Video Order | Sequential (by name, natural sort) or Random |
| Move to 'used' | After publishing, move the video into a used/ subfolder (on by default) |
| Delete after upload | Delete the file after publishing (takes priority over "Move to used") |
Supported extensions: .mp4, .mov, .m4v, .avi, .mkv.
For Carousel
| Field | What it controls |
|---|---|
| Photo Folder | Absolute path to the photo folder |
| Each subfolder = one carousel | If on: each subfolder = one carousel. If off: photos get sliced into flat blocks of "Photos per carousel" |
| Photos per carousel | How many photos per carousel in flat mode (1–35) |
| Move to 'used' / Delete after upload | Same rules as for videos |
Supported extensions: .jpg, .jpeg, .png, .heic. For folder layout details see the Folder structure guide.
"Music" card — background music
When it's required
- For carousels music is required (TikTok requirement). Without music, the thread will fail.
- For videos music is optional.
Fields
| Field | What it controls | Default |
|---|---|---|
| Add music | Toggle music on/off | off |
| Music links | List of track links, one per line | empty |
| Adjust volume | Toggle volume adjustment | off |
| Music volume | Music volume 0–100 | 10 |
| Video volume | Original audio volume 0–100 | 50 |
| Search results wait time | Seconds to wait after the track search | 3 |
Accepted link formats
- Full TikTok link:
https://www.tiktok.com/music/track-name-7123456789012345 - Deeplink:
snssdk1233://music/detail/7123456789012345 - Just the ID:
7123456789012345
How to get a link: in TikTok open the track → Share → Copy link.
Business accounts. TikTok for Business blocks licensed music (Disney, majors). On a business account only "Recommended sounds" / "Commercial Sounds" are visible. The app detects this automatically and skips music and volume steps. On such accounts prefer commercial-only links or turn off the Add music toggle.
How a track is picked
From the full list, the app picks one randomly per publication. If a link is broken (track removed / not found) — it tries the next one. When all links are exhausted — it publishes without music and returns to the TikTok home screen.
"Description" card
Dedicated guide: Set Description — covers the 4 sources (text / file / json / sidecar), file formats, and pitfalls.
In short:
| Source | When to pick |
|---|---|
| Text | One-or-two variants for all posts, separated by ; directly in the template |
| TXT file | 10+ simple captions in an external .txt |
| JSON file | Need titles (for carousels) or strict sequential order |
| Sidecar | Each media file has its own unique caption |
For videos the title is ignored — TikTok has no Title field for videos. For carousels the title is filled in if non-empty.
Limit: 2200 characters. Hashtags and mentions go directly inside the description text:
"My caption #travel @user".
"Publishing" card — publication parameters
| Field | What it controls | Default |
|---|---|---|
| Publications per account | How many publications one account makes per pass. 0 = no limit, until content runs out | 1 |
| Pause between publications | Pause between publications on the same account (if Publications per account > 1), in seconds | 0 |
| Wait after publish | Pause after returning to the home screen — the video is still uploading in the background, in seconds | 360 |
Wait after publish is critical. The video is still uploading in the background after Post is tapped. If you switch off TikTok / move to the next account too quickly, the publication gets stuck in "Posting…" and never reaches the feed.
Rule of thumb: 1 minute per 50 MB of file size + a buffer for slow proxy. For a 100 MB video over VPN, set 360–600 seconds.
"Gallery" card — device gallery handling
iPhone stores TikTok-uploaded media in its photo gallery. Options:
| Field | What it does | Default |
|---|---|---|
| Clear before upload | Delete ALL photos/videos from the device gallery before uploading new content | off |
| Delete after upload | Delete the just-published media from the gallery | off |
For carousels we recommend turning Clear before upload on — otherwise old photos blend with new ones during gallery selection, and TikTok will assemble the wrong carousel.
During cleanup iOS shows a system dialog "Allow … to delete N photos?" — the app accepts it automatically.
"Debug" card — diagnostics
| Field | What it does |
|---|---|
| Save screenshots | Save screenshots at each automation step into debug_screenshots/ for error analysis and support bundles |
On by default — critical for support. Disk is auto-managed: cleaned at > 7 days or > 1 GB (oldest first).
What's set in the thread, not the template
Some parameters live in the Threads → Add Configuration tab:
| Field | Where it lives | What it controls |
|---|---|---|
| Account List | Thread config | List of accounts to publish on |
| Devices | Thread config | One or more devices |
| Proxy | Thread config | None / Manual / Stash / Happ / System |
| Cyclic Upload | Thread config | Looped run (after going through all accounts — start over) |
| Pause between accounts | Thread config | Seconds to wait between accounts |
| Pause between cycles | Thread config | Minutes to wait between cycles |
| Reupload Cycles | Thread config | How many times to re-publish the same content across new cycles |
| Schedule | Thread config | Scheduled run (tied to the target region's time zone) |
Double-publish protection across multiple devices
You can safely run 5–25 devices off the same content folder — the app coordinates them through a hidden .publish_history.json file next to the media, and each file goes to TikTok exactly once. Don't delete that file manually — already-published content may otherwise get re-uploaded.
Common errors
| Symptom | Cause | Solution |
|---|---|---|
| "TikTok not installed" | No TikTok on the device | Install TikTok via App Store, restart. Upload doesn't install — that's Seeding's job |
| "No content" at start | Folder empty or all files already published | Add files or delete .publish_history.json |
| "Outdated client app" | Clout App on the iPhone is older than required | On the Devices page, reinstall Clout App via Xcode |
| Publications stuck in "Posting…" | "Wait after publish" too small | Push to 360–600 sec for large files over VPN |
| Carousel uses the wrong photos | Old photos in the device gallery | Turn on Clear before upload in the Gallery card |
| Music not picked up on a business account | TikTok Business blocks licensed music | Use commercial tracks or turn off Add music. Business accounts are auto-detected |
| Caption truncated | > 2200 characters | Trim it; see the Set Description guide |
| One file goes to multiple devices | Wiped or corrupt .publish_history.json | Don't delete it manually; let the app rebuild it. Make sure the folder is the same across devices |
| Thread fails on "Edit Profile did not load" | Multi-device + slow proxy + missing settle | A short settle pause is already built in — check the device-recovery logs |
| "Proxy error" | Proxy not assigned / unreachable / dropped | Check Stash API / Happ / System VPN profile |
Recommended presets
"Safe stream on 1 device, 3 accounts"
Content: Video, Move to used = on
Music: on, 3–5 links
Description: TXT file, 20–30 variants
Publications per account: 1
Wait after publish: 360 sec
Gallery: Delete after upload
Pause between accounts: 60 sec
Cyclic Upload: off
"Carousels at a calm pace"
Content Type: Carousel
Photo Folder: subfolders, Each subfolder = one carousel = on
Music: on (required for carousels)
Description: Sidecar (content.json in each subfolder), fallback = none
Publications per account: 1
Wait after publish: 480 sec (photos process slower)
Gallery: Clear before upload = on (required for carousels)
Cyclic Upload: off
"Multi-device stream from one folder"
Content: Video, Move to used = on
Description: JSON file with 200+ variants, content_order = random
Music: on, 10+ links (so the track rotates)
Publications per account: 1
Wait after publish: 420 sec (slow-proxy buffer)
Pause between accounts: 30 sec
Reupload Cycles: 0
Cyclic Upload: on
Pause between cycles: 30 minutes
.publish_history.json guarantees one file goes to exactly one device.
"Upload configured correctly" checklist
- Template created with Run Mode = Upload
- Content Type picked: Video or Carousel
- Absolute path to media folder set
- Files in the folder are in supported formats (video/photo extensions from the list)
- Move to used on (so the same file isn't reused)
- For carousels: Music on and filled; Clear gallery before upload on
- Description configured for the right source (see the Set Description guide)
- Wait after publish ≥ 240 sec (or higher for large files / slow proxies)
- Accounts in Account List already logged into TikTok on the device
- TikTok installed on the device (Upload doesn't install it)
- (Optional) proxy attached
- (Optional) schedule
Related guides
- Folder structure — folder layout for Upload (videos, carousels in subfolders or flat).
- Set Description — captions in detail (text / file / json / sidecar).
- Account warm-up — warm-up mode that runs before Upload.