TikTok's technical specs are similar to YouTube Shorts but with key differences: longer duration limits, stricter audio requirements (music is core to the platform), and slightly different behavior when you upload non-native formats. TikTok also has its own in-app compression that varies by device — uploading the right source quality reduces the chance of getting muddy or over-compressed results.

TikTok video specifications

Per TikTok's creator documentation:

  • Aspect ratio: 9:16 (recommended vertical). 1:1 and 16:9 are accepted but get less promotion in the For You feed.
  • Resolution: 1080 × 1920 px recommended. Minimum 720 × 1280 px (TikTok upscales and adds compression).
  • Container: MP4 or MOV (both recommended). WebM and AVI are accepted but with more re-encoding.
  • Video codec: H.264 (AVC) preferred. H.265/HEVC accepted from mobile uploads but may not be accepted via desktop.
  • Frame rate: 23.98, 24, 25, 29.97, 30, 50, or 60 fps. Constant frame rate (CFR) strongly recommended.
  • Max duration: 15 seconds (old short clips), 60 seconds (standard), up to 10 minutes via desktop upload. Carousel photo format supports 2–35 images.
  • Max file size: 287.6 MB per clip via app; 4GB via desktop.
  • Audio codec: AAC-LC preferred. MP3 accepted. Stereo 44.1 kHz or 48 kHz.
  • Audio bitrate: 192 kbps minimum recommended. 256–320 kbps for music-forward content.
  • Color space: BT.709 (standard HD). HDR content is accepted on supported devices.
SourceSituationTargetNotes
MP4 landscape (16:9)Repurposing horizontal contentMP4 vertical (9:16)Center-crop or blur-pad; 9:16 gets more FYP reach
MOV from iPhoneiPhone recorded in verticalMP4MOV works but MP4 has more predictable behavior; transcode HEVC to H.264
Screen recording (MOV/MP4)App demos, tutorialsMP4Screen recordings are often VFR — convert to CFR 30fps
GIFShort loops for meme contentMP4TikTok doesn't accept GIF uploads; convert to MP4 loop first
WebMBrowser exportsMP4WebM is not reliably accepted by TikTok upload
MKV (gameplay)Repurposed gaming contentMP4MKV may contain subtitles/multiple audio tracks; strip and transcode

Conversion commands (curl + Python)

# curl — convert MOV to MP4 for TikTok
curl -X POST https://changethisfile.com/v1/convert \
  -H "Authorization: Bearer ctf_sk_your_key_here" \
  -F "file=@raw-clip.mov" \
  -F "target=mp4" \
  -o tiktok-ready.mp4
import requests
from pathlib import Path

API_KEY = "ctf_sk_your_key_here"

def convert_for_tiktok(in_path: str, out_path: str) -> None:
    """Convert video to TikTok-compatible MP4."""
    with open(in_path, "rb") as f:
        resp = requests.post(
            "https://changethisfile.com/v1/convert",
            headers={"Authorization": f"Bearer {API_KEY}"},
            files={"file": f},
            data={"target": "mp4"},
            timeout=300,
        )
    resp.raise_for_status()
    out = Path(out_path)
    out.write_bytes(resp.content)
    print(f"{out.name}: {len(resp.content) / 1e6:.1f} MB")

convert_for_tiktok("raw-clip.mov", "tiktok-ready.mp4")

For precise control over audio loudness (critical for music-forward TikToks):

# FFmpeg: convert + normalize audio to -14 LUFS (TikTok standard)
ffmpeg -i input.mov \
  -vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
  -c:v libx264 -crf 18 -preset fast \
  -c:a aac -b:a 192k -ar 48000 \
  -af loudnorm=I=-14:LRA=11:TP=-1 \
  -r 30 -vsync cfr \
  output-tiktok.mp4

Batch script: convert clip folder for TikTok

#!/usr/bin/env bash
# Usage: ./convert_tiktok_batch.sh ./raw-clips ./tiktok-ready

API_KEY="ctf_sk_your_key_here"
INPUT_DIR="${1:-.}"
OUTPUT_DIR="${2:-./tiktok-ready}"

mkdir -p "$OUTPUT_DIR"
success=0; failed=0

for vid in "$INPUT_DIR"/*.{mp4,mov,avi,mkv,wmv,webm,gif,MP4,MOV}; do
  [ -f "$vid" ] || continue
  base=$(basename "$vid" | sed 's/\.[^.]*$//')
  out="$OUTPUT_DIR/${base}.mp4"

  printf "%-50s" "Converting $(basename $vid)..."
  code=$(curl -s -o "$out" -w "%{http_code}" \
    -X POST https://changethisfile.com/v1/convert \
    -H "Authorization: Bearer $API_KEY" \
    -F "file=@$vid" \
    -F "target=mp4")

  if [ "$code" = "200" ]; then
    mb=$(du -m "$out" | cut -f1)
    echo "OK (${mb}MB)"
    ((success++))
  else
    echo "FAILED (HTTP $code)"
    rm -f "$out"
    ((failed++))
  fi
done

echo ""
echo "Results: $success OK, $failed failed — output: $OUTPUT_DIR"

TikTok-specific gotchas

  • TikTok compresses everything aggressively. Even a perfect H.264 source gets re-compressed by TikTok's servers. Upload at the highest quality you can — use CRF 18 rather than CRF 23 for better post-compression results. The extra file size is worth it.
  • Audio must be in sync before upload. TikTok doesn't fix drift on upload. VFR footage (iPhone screen recordings, some Android recordings) causes progressive sync issues. Convert to CFR 30fps before upload.
  • GIFs are not accepted. TikTok's upload UI shows an error for GIF files. Convert to MP4 loop before uploading.
  • TikTok's own sounds vs. external audio. If you add TikTok sounds in-app, the audio is managed by the platform. If your clip has licensed music baked in from a video editor, TikTok may mute or remove it. Either use royalty-free audio or TikTok's sound library in-app.
  • Desktop vs. mobile upload quality differs. TikTok's desktop upload (creator.tiktok.com) applies less aggressive compression than the mobile app. For repurposed long-form content or high-quality edits, upload via desktop.
  • Captions and text on-screen. TikTok renders captions on the bottom ~20% of the frame. If you have text overlays in your video, keep them between 15% and 80% of frame height to avoid being covered by platform UI elements.

TikTok for Business / ads specs

TikTok ads have slightly tighter specs than organic content:

  • In-feed ads: MP4 or MOV, H.264, 9:16 or 1:1, 5–60 seconds, min 540×960 px (1080×1920 recommended), max 500MB
  • TopView ads: MP4 or MOV, 5–60 seconds, 1080×1920 px required
  • Branded effects: Separate submission process, not a simple video upload

The same conversion workflow applies for ads — the key difference is duration (ads are typically 15–30 seconds) and the need for a clean first 3 seconds (shown before the skip button appears).

TikTok's technical bar is achievable with any decent encoder. The real craft is in the first 3 seconds and audio quality — those are what the platform rewards algorithmically. For format conversions, stick to MP4 + H.264. Free tier covers 1,000 conversions/month.