Errors & blockers

TikTok upload error: file_format_check_failed

Why TikTok rejects a video upload with file_format_check_failed, and how to confirm your file actually meets the codec/container requirements before you retry.

Quick answer

file_format_check_failed means TikTok's Content Posting API rejected the video, but TikTok does not document it as a named error with a root-cause list. The documented bounds: MP4/WebM/MOV container, H.264/H.265/VP8/VP9 video, 23–60fps, 360–4096px, max 4GB. Verify the real encoding with ffprobe, then re-encode conservatively — developers report this error even on apparently spec-compliant files.

TikTok's Content Posting API rejects the video with file_format_check_failed, and the frustrating part is the message tells you nothing about which requirement it failed. Before you assume your file is fine and start filing a support ticket, it is worth actually checking it against TikTok's documented format requirements — but you should also know upfront that some developers report this rejection on files that already look spec-compliant, so a clean checklist is not a guarantee.

PostGate handles OAuth, publishing and delivery evidence for every network through one API. Start free or read the docs.

01

What are TikTok's documented video requirements?

Per TikTok's Content Posting API media transfer guide, a video upload needs to fall within these documented bounds:

  • Container: MP4 (recommended), WebM, or MOV.
  • Video codec: H.264 (recommended), H.265, VP8, or VP9.
  • Frame rate: minimum 23 fps, maximum 60 fps.
  • Resolution: minimum 360px on both height and width, maximum 4096px on both.
  • File size: maximum 4GB.

That is the documented, checkable list. TikTok's guide does not publish a minimum bitrate or a specific audio codec requirement for the Content Posting API upload step itself — do not assume a number you saw in a consumer-app video-specs roundup applies to this API endpoint unless it traces back to this page.

02

What does the error not tell you?

TikTok's own documentation does not define file_format_check_failed as a named error with a documented root-cause list — it is a message developers encounter from the API, not a code TikTok explains in its reference docs. That matters because it means there is no official checklist to compare your rejection against beyond the general format requirements above.

It also means you should not assume the rejection is always a genuine spec violation. There are credible developer reports of this exact error firing on files that already matched the documented container, codec, resolution, and frame-rate requirements — one widely discussed case involved a 1080×1920 MP4 encoded with H.264 video and AAC audio at roughly 59.94 fps and a bitrate well within normal range, rejected consistently with file_format_check_failed on both private and public accounts, with no resolution beyond the report itself. Keep that possibility in mind before you sink hours re-encoding a file that was already compliant.

03

What should you verify before re-encoding?

Work through these in order — most "my file meets the spec" assumptions turn out to be wrong on close inspection:

  • Check the real codec, not the file extension. A file named .mp4 is not guaranteed to contain H.264/H.265 video — inspect it with ffprobe rather than trusting the extension or what your export tool claims.
  • Confirm actual resolution and frame rate against the 360–4096px and 23–60fps bounds, including for variable frame rate sources — a screen recording or a phone clip with a fluctuating frame rate can report a nominal fps that does not match what is actually encoded frame to frame.
  • Verify file size is comfortably under 4GB, accounting for any re-encoding or container remuxing your pipeline does after the file leaves your validation step.
  • Rule out an unusual color space or bit depth. 10-bit or HDR-encoded video is a common source of format-check failures across social platforms generally, even when the container and codec name look correct.
  • Check the container is genuinely playable end to end, not just that it opens — a partially transcoded or improperly finalized file can pass a basic open-and-preview check while still failing a stricter server-side validation.
04

What if a spec-compliant file still fails?

Do not retry the identical file — repeating the exact same upload will not produce a different result. Instead, re-encode from source with conservative, well-tested settings: H.264 video in an MP4 container, AAC audio, a standard (not variable) frame rate within the 23–60fps range, and 8-bit color. Re-encoding with a mainstream tool and mainstream settings, rather than whatever your original export pipeline produced, resolves this for a meaningful share of reports even when the original file looked compliant on paper.

If a conservatively re-encoded file still fails, that is worth escalating to TikTok support with the exact file (or its ffprobe output) attached, since this is one of the cases where the platform-side validation logic is not fully documented and TikTok is the only party who can confirm what actually tripped it.

05

How does PostGate help here?

PostGate validates media against each platform's known requirements before it ever reaches TikTok's upload step — see Media for how assets move through pending, uploaded, processing, and ready states, with a failed asset carrying structured evidence under error instead of an opaque platform message. If TikTok rejects a file that passed PostGate's own validation, that distinction is visible in the delivery evidence rather than buried in a generic failure.

Frequently asked questions

What are TikTok's video requirements for the Content Posting API?

Per TikTok's media transfer guide: an MP4 (recommended), WebM, or MOV container; H.264 (recommended), H.265, VP8, or VP9 video; 23 to 60 fps; minimum 360px and maximum 4096px on both height and width; and a 4GB maximum file size. The guide does not publish a minimum bitrate or a specific audio codec requirement for the upload step, so don't assume numbers from consumer-app spec roundups apply to this endpoint.

Can file_format_check_failed happen on a spec-compliant file?

Yes — there are credible developer reports of this exact error firing on files that matched the documented container, codec, resolution, and frame-rate requirements. One widely discussed case involved a 1080x1920 MP4 with H.264 video and AAC audio at roughly 59.94 fps and a normal bitrate, rejected consistently on both private and public accounts with no resolution beyond the report itself. A clean checklist is not a guarantee.

What should I check before re-encoding a rejected TikTok video?

Five things, in order: the real codec via ffprobe rather than the file extension; actual resolution and frame rate against the 360-4096px and 23-60fps bounds, including variable-frame-rate sources whose nominal fps may not match what is encoded; file size comfortably under 4GB after any remuxing; unusual color space or bit depth — 10-bit or HDR video is a common cause of format-check failures; and that the container is genuinely playable end to end, not just that it opens.

How do I fix file_format_check_failed?

Do not retry the identical file — the same upload produces the same result. Re-encode from source with conservative, well-tested settings: H.264 video in an MP4 container, AAC audio, a standard (not variable) frame rate within 23-60fps, and 8-bit color. That resolves a meaningful share of reports even when the original looked compliant. If a conservatively re-encoded file still fails, escalate to TikTok support with the file or its ffprobe output attached.

Build it with PostGate

One API for every social platform your customers care about — sandboxed, documented, and ready today.

Start building Read the docs