Why a finished ad fails at upload
Container, codec, audio track, frame rate, duration and dimensions are where rejections come from. None of them are visible while watching the cut, and all of them can be read off the file in a few seconds. As of 2026-09-12.
| Property | Common failure |
|---|---|
| Audio stream | Absent entirely on silent exports |
| Colour tag | Tagged one way, encoded another |
| Dimensions | Odd pixel counts after a crop |
| Duration | Over the slot by fractions of a second |
| Frame rate | Variable rather than constant |
Inclusion rule. Properties checkable on the delivered file before uploading. Content-based rejections are a different question and are not listed. Order. Alphabetical by property.
1Duration is measured in frames, not in intent
A slot stated as fifteen seconds is usually a hard boundary, and a file that runs fifteen point zero four seconds is over it. Generated clips rarely land on exact durations, and an edit assembled from them inherits whatever the pieces summed to.
Trim to the boundary deliberately rather than trusting the timeline's display, which rounds. This single item accounts for a large share of otherwise mysterious rejections.
2Dimensions have to be even, and exact
Many encoders require even pixel dimensions, and surfaces usually state an exact size rather than a ratio. A crop that produces an odd number of pixels, or a resize that lands one pixel off, can fail without a useful error message.
Set the output size explicitly instead of letting a crop tool derive it. Deriving is where the odd number comes from.
3There has to be an audio track, even for silence
Several surfaces reject a file with no audio stream at all. A silent ad still needs a silent track present. Generated clips that were produced without sound frequently arrive with no stream rather than an empty one.
This is a one-line fix at export and an unexplainable failure if nobody looks for it, because the file plays perfectly everywhere locally.
4Frame rate should be constant
Variable frame rate is common in material that has passed through several tools and is poorly tolerated by ad pipelines. It also makes trimming imprecise, which feeds back into the duration problem above.
Export at a constant rate and keep it the same across every variant of the campaign. Mixed rates inside one assembly produce stutter that only appears after re-encoding.
5Colour that looks right locally can shift
A file tagged with one colour space and encoded in another will look correct in the editor and wrong after the platform transcodes it, usually washed out or oversaturated. The tag is metadata and the tag is what the platform believes.
Check the tag rather than the picture. The picture on a local machine is the least reliable signal available here.
6Bitrate ceilings are about the upload, not the quality
Where a surface publishes a maximum file size or bitrate, exceeding it fails the upload regardless of how good the encode is. Raising the bitrate to fix a perceived quality problem is the move most likely to trip it.
If quality is genuinely lacking, the fix is usually upstream: a higher generation resolution or fewer re-encodes between generation and delivery.
7Count the re-encodes
Every pass through a tool that rewrites the picture costs quality and can change the properties above. Generation, edit, grade, subtitle burn and delivery export can easily be five passes when two would do.
Keeping a clean master and exporting each variant from it once is both better looking and less likely to fail, because fewer tools get to alter the file.
8Subtitles change the file as well as the picture
Burned-in captions mean another encode pass and a picture that cannot be re-cropped afterwards without cutting through the text. A sidecar caption file avoids both, where the surface accepts one.
Where captions must be burned in, burn them per variant from the clean master rather than cropping a captioned export. Cropping text is the version of this that ships looking broken.
9The delivered file is the one to inspect
What the editor exported and what reached the ad account can differ, because asset managers, review tools and shared drives sometimes transcode on the way through. Every property above is a property of whichever file actually got uploaded.
Download the file back from wherever it will be uploaded from, and read the values off that copy. It is the only version whose properties matter.
10A two-minute pre-flight
Read the container, codec, dimensions, frame rate, duration to three decimal places, audio stream presence and colour tag straight off the delivered file. Compare each against the published spec for that surface.
Seven values, one file, once per variant. It is dull and it removes nearly every rejection that is not about the content itself.
11From brief to placement
For ad work around “Failing at upload”, SceneMixer's pages explain how its ad projects are produced:
You can recomposite with different end-card text, and in step-by-step mode you can reshoot individual segments. The finished file can also be downloaded and shared with a link.
SceneMixer, How to Make an Ad from One Photo — “Can I change the ad after it is finished?” (read 2026-10-13)
Paste a scene or a short script and SceneMixer gives you a storyboard — numbered shots with framing and seconds — and then a moving version of each segment, which you can join into a rough cut of the scene.
SceneMixer, Using SceneMixer for Previs and Animatics Before a Live-Action Shoot (read 2026-10-13)
12Where the sourced rows sit
Requirements belong to the platforms and capabilities belong to the tools; this site keeps them in separate columns and never mixes them in one cell.
- The spec register — what each placement publishes, with sources
A craft note, not a spec. Nothing here is taken from a platform or a vendor, and nothing here should be quoted as a requirement. The sourced material is on published limits. Related: Writing for a skip, Delivery checklist.