Drop the whole campaign: a folder, a pile of files, or one ZIP. Every HTML5 banner, static, GIF and social video is sorted, checked by the tool that owns its rules, and listed in one QC report with a link to the tool that fixes it. Nothing is uploaded.
Display rules
No naming convention is saved in this browser yet. Set one up in the UTM Builder: Naming tab
Drop the whole campaign here
A folder, several files, or one ZIP that holds the campaign. Banner ZIPs and folders, GIFs, statics and social videos are sorted and checked in this browser.
Your agency name and logo replace AdCheckLab on the report. They are saved in this browser only.
Hand it to the clientPro
Build what the client receives, collect their approval and check the next round against this one. Everything is built in this browser and nothing is uploaded.
Delivery package
One ZIP for the client: every creative at its place in the campaign, the backup image found in each banner, a white label QC report, a client preview, a results CSV and a manifest with a SHA-256 for every file.
Approval pack
One HTML file the client opens offline: every creative with Approve or Request changes and a comment. They send back a small feedback file, which you import here.
With a passphrase the whole file is encrypted (AES-GCM, key from PBKDF2) and opens only with it. Send it another way, for example by phone. It cannot be recovered.
Compare with the next version
Drop the next round as a folder, files or a ZIP. It is checked with the same rules, and every asset is matched by path and SHA-256: unchanged, changed, new or removed, with the issues fixed and the new ones.
VerdictAssetTypeSizeTop issuesFix in
What gets checked, file by file
Campaign Preflight does not have rules of its own. It recognises each file, hands it to the AdCheckLab tool that already checks that kind of creative, and puts every verdict in one list. The numbers are the same ones you get file by file in the Banner Validator and the Ad Spec Checker.
File
How it is recognised
What is checked
Fix it in
HTML5 banner
A ZIP with an HTML file at its root, or a folder that holds index.html
Every validator rule for the display environment you pick: ZIP weight, file count, index.html at the root, allowed file types, the ad.size meta tag, the clickTag, http references, external hosts, local storage and the backup image
Every placement whose ratio the video fits: aspect ratio, resolution, file size, duration, container and codec, frame rate, audio and bitrate, plus loudness where it can be measured
Listed as not checked, so nothing goes missing without you seeing it
Display environments and their limits
HTML5, static and GIF banners are checked against one environment at a time, because the same banner can pass in one ad server and be rejected by another.
Google Ads: a ZIP of 600 KB or less with at most 40 files, images of 150 KB or less, no external files apart from Google Fonts and the Google hosted libraries, and animation that stops within 30 seconds. The whole ad is clickable, so a missing clickTag is only a note, and ExitApi is rejected (answer 1722096, answer 6335679).
CM360: a ZIP of 9.5 MB or less with at most 100 files, a clickTag in the primary HTML file or a Google Web Designer exit, and no local or session storage. Google publishes two ZIP ceilings, 9.5 MB and 10 MB, and the stricter one is enforced (answer 4558694, answer 3145300).
DV360: no ZIP ceiling, but at most 5 MB downloaded per impression, at most 100 files, animation within 30 seconds, and no local or session storage (answer 10261241, answer 7128959).
Generic HTML5: a 10 MB ceiling and loose rules for an ad server that is not one of the three, with warnings where the others would fail.
The Banner Validator page lists every rule with its source and opens a single banner with a live preview, the backup image maker and the client preview export.
How a campaign is read
One banner or a whole campaign. A ZIP with an HTML file at its root is one HTML5 banner, exactly as an ad server would read it. So is a ZIP that only wraps one banner folder, and the validator then reports the nested index.html. Any other ZIP is a campaign archive: it is opened and every file inside is sorted, including banner ZIPs packed inside it, up to three levels deep.
Unzipped banner folders. Every folder that holds an HTML file is one banner. It is packed into a ZIP in your browser and validated, so the weight you see is the weight of that ZIP.
System files.__MACOSX folders, .DS_Store, Thumbs.db and desktop.ini are ignored and counted, never checked.
Display or social. A JPG, PNG or GIF at a display size goes to the validator. Every other image and every video is checked against the social placements you selected. A placement that lists the file's ratio as its own decides the verdict; one that only supports the ratio, and would letterbox or crop it, is reported as also accepted.
Each asset gets one verdict. Pass means every check passed. Warning means it can run but misses a recommendation, or is ready for some of its placements and not for others, such as a 15 second vertical video that is fine for Reels and too long for a 6 second YouTube bumper. Fail means the ad server would reject it, or no placement it fits can take it. Not checked covers files that are not ads and files above the run limit.
Loudness and file names
For videos, loudness is compared with the delivery target most practitioners use: -14 LUFS integrated, within 1 LU, with a true peak at or below -1 dBTP. No ad platform publishes it as a rule, so a miss is always a warning, never a failure. Measure and fix a mix in the Loudness Meter.
If you saved a naming convention in the Naming tab of the UTM Builder, every file name can be checked against it in the same run: case, separators, missing parts and values outside the allowed list.
Free and Pro
A free run checks up to 10 assets and exports the CSV and the printable report. Pro checks up to 200 assets in one run and adds a white label PDF with your agency name and logo.
With Pro, three more steps follow the report. A delivery package is one ZIP for the client: the creatives at their places in the campaign, repaired where Auto Fix ran and renamed to your naming convention if you ask, the backup images found in the banners, a white label QC report, a client preview, a results CSV and a manifest with a SHA-256 fingerprint for every file. An approval pack is one HTML file the client opens offline to approve each creative or ask for changes, optionally locked with a passphrase; the feedback file they send back is imported on this page. Compare with the next version checks the next round with the same rules and shows, asset by asset, what changed, which issues were fixed and which are new. Signed in, a client preset keeps each client's rules, naming convention, click URL with its UTM template and brand kit, and applies them in one pick.
After every run, Auto Fix lists what it would repair in each HTML5 banner, such as system files, a missing ad.size tag, a miscased or missing clickTag, a nested index.html or a ZIP over the size limit, and what stays for you to fix by hand. Reading that plan is free, and so is running it: Auto Fix repairs every banner in your browser, checks each one again with the same rules and shows the result per banner and for the whole campaign. Downloading the repaired ZIP is part of Pro. It holds only the files Auto Fix changed, each at the same place as in your campaign, with a report of every change. An unzipped banner folder comes back as a ready to upload ZIP.
Questions about Campaign Preflight
No. Folders and ZIPs are opened with the browser's File API and JSZip, banners are validated in the page, and videos are read from their container index without leaving your device. The page keeps working offline once it has loaded.
Every folder that holds an HTML file is treated as one banner. It is packed into a ZIP in your browser, without system files, and run through the same checks as an uploaded ZIP. If a check fails, fix the folder, then zip it the same way before you traffic it. With Pro, Auto Fix can do both for you: the repaired folder comes back as a ZIP of the same name, in the same place.
A 9:16 video is checked for every placement that lists 9:16: Reels, Stories, TikTok, YouTube Shorts and in stream, LinkedIn, Snapchat and Pinterest. A 15 second video is ready for most of them and too long for a 6 second YouTube bumper, so it is ready with warnings. Untick the platforms you are not buying and the verdict follows the ones you are.
The one the banners will be trafficked in. Google Ads is the strictest on weight, CM360 and DV360 require a working exit and refuse storage APIs, and Generic HTML5 suits an ad server that is none of those. Switch the environment and run the campaign again to compare.
It meets the published technical specs. Platforms still review the content, the claims and the landing page, and interface elements still cover parts of vertical video, so check the frame in the Safe Zone Checker and the links in the UTM Builder as well.