100% Private & Browser Based

Google Ads vs CM360 vs DV360: HTML5 Creative Spec Differences

Google Ads, Campaign Manager 360 and Display & Video 360 are three separate products with three separate rule sets. The biggest difference is weight: Google Ads caps the ZIP at 600 KB, CM360 at 9.5 MB, and DV360 sets no ZIP limit but caps what the browser downloads at 5 MB. Treating CM360 and DV360 as one environment is the most common reason a creative that passed one check fails the next.

After the comparison: the storage rule that trips up interactive builds most often, the reasons DV360 rejects a creative and the fix for each, and what other DSPs and the IAB expect.

Side by side comparison

Rule Google Ads CM360 DV360
Weight ZIP 600 KB or smaller ZIP up to 9.5 MB (10 MB on one help page) No ZIP limit, 5 MB downloaded per impression
Files in the ZIP 40 100 100
File types HTML, CSS, JS, GIF, PNG, JPG, JPEG, SVG Adds HTM, JSON, XML and fonts (EOT, OTF, TTF, WOFF, WOFF2) Adds HTM and fonts (DFONT, EOT, OTF, TTE, TTF, WOFF, WOFF2)
External references Only Google Fonts and Google hosted CreateJS, GreenSock and jQuery No published allowlist No published allowlist, video must be hosted externally
ad.size meta tag Required in the head Optional, recommended Must match the ad's images
Exits One exit. No ExitApi, no Tap Area At least one click tag, several allowed Click tags required, or Studio exits
Local and session storage Not documented by Google; fails AdCheckLab's Google Ads mode to stay safe Not accepted Not accepted
Animation 30 seconds, GIFs slower than 5 FPS No published cap 30 seconds
Backup image No published requirement Optional, uploaded separately, polite load image under 40 KB No published requirement
Other File names with letters, numbers, periods, hyphens and underscores only. HTML5 needs an eligible account No ZIP inside the ZIP, no percent sign in file names ZIP name under 50 characters, at most 25 cookies and 100 HTTP calls

Sources: Google Ads 1722096 and 6335679, CM360 4558694 and 3145300, DV360 10261241 and 7128959.

What that means for one build

If the same creative runs on all three, build to the strictest rules, which are almost always Google Ads: under 600 KB and 40 files, only the eight Google Ads file types, no external references beyond the allowlist, an ad.size tag, one var clickTag exit and no storage. That ZIP also meets CM360 and DV360. Three things do not carry over:

How weight is measured differs too

Google Ads and CM360 measure the ZIP you upload. DV360 measures the files a browser actually downloads when the ad serves, so the AdCheckLab validator adds up the unpacked size of every file for DV360 instead of reading the ZIP size.

Local and session storage

Campaign Manager 360 and Display & Video 360 both refuse HTML5 assets that use localStorage or sessionStorage. If a banner remembers which slide someone saw, keeps a game score, or caps how often it shows, that state has to live in memory or in the ad server instead.

The validator scans every HTML and JavaScript file in the ZIP, minified libraries included, for localStorage, sessionStorage, indexedDB and openDatabase. In Google Ads mode any match is the error Disallowed Storage API. In CM360 and DV360 mode, localStorage or sessionStorage is the error Local or Session Storage Not Accepted; indexedDB and openDatabase there, and every match in Generic mode, show as the warning Storage API Usage. A match inside a third party library counts too, so check what your animation framework calls.

Storage also breaks previews. Ad servers and the AdCheckLab preview run a creative in a sandboxed iframe without same origin access, where a browser can refuse storage outright and throw an error; if the startup code does not catch it, the animation never starts. That is one of the causes in why a banner preview is blank. What to use instead:

DV360 rejection reasons and fixes

Display & Video 360 checks HTML5 creatives twice: once at upload, where a technical problem stops the file outright, and again at creative review, where every creative is tested for insecure calls and policy issues. Beyond the limits in the comparison table, DV360 wants the landing page to open in a new tab or window, allows no autoplaying audio (video may autoplay only when muted), and no pop ups or surveys. The reasons below come from DV360's Guidelines for HTML5 display creatives, HTML5 creatives, Troubleshoot creative uploads and About secure creatives, each paired with the fix.

Non secure http calls

If the creative loads an image or file from a link starting with http:, DV360 will not accept the upload, and the review repeats the test on everything the ad calls at serve time. Replace every asset and tracker URL with https:. Only the landing page is exempt. The HTTPS section of the QC checklist shows where these links usually hide.

Incorrect click tags

DV360 wants var clickTag declared in the <head>, spelled with the correct casing (clickTag, not Clicktag), and attached to the clickable element in the body with window.open(window.clickTag). A creative with no exit at all fails with "Creative has no clickthrough". Studio creatives and Google Web Designer files built in the Display & Video 360 environment exit through Enabler.exit instead, which the AdCheckLab DV360 mode accepts. See the Google Web Designer exit guide.

Unsupported file types

Anything outside the DV360 list in the table above has to go, including database files and video. DV360 allows video only when it is hosted outside the ZIP. Fonts are accepted here, unlike on Google Ads.

Dimension mismatch

The width and height in <meta name="ad.size" content="width=300,height=250"> must match the ad's images and canvas. The validator reports Ad Size Metadata Mismatch with both sizes.

File name too long, or a ZIP inside the ZIP

Rename the archive to fewer than 50 characters including .zip, and remove nested ZIP files. Export tools that name files after the full campaign and size string are the usual cause.

Metadata in the Google Web Designer HTML is invalid

The creative was built with an outdated version of Google Web Designer. Open it in the latest version and publish again.

Served weight over 5 MB

DV360 counts what the browser downloads, not the ZIP, so what matters is the unpacked size of every file the ad loads. Compress the images and remove unused assets. The Banner Compressor handles the PNG and JPEG part.

Local or session storage

DV360 does not accept HTML5 assets that use either API. Keep state in plain JavaScript variables, as described in the storage section.

To preaudit, select DV360 in the HTML5 Banner Validator before you upload. It adds up the uncompressed size of every file against the 5 MB cap, checks the DV360 file type list, fails every http:// reference and any local or session storage, applies the 30 second animation cap to GIFs, and accepts either a clickTag or a Studio exit.

Other DSPs, the IAB and the rules every DSP shares

Programmatic creatives pass through more hands than a direct booking: an ad server such as CM360, a DSP such as DV360, The Trade Desk or Xandr, and the publisher at the end of the chain. Each can refuse a creative. The DSP audits at upload and during review, the ad server checks the package it hosts, and a publisher may reject a creative that was accepted everywhere else.

Seven rules hold on every DSP, so a build that follows them and the limits of the strictest platform it runs on travels well:

  1. index.html at the root. The primary HTML file sits at the top level of the ZIP, not inside a subfolder. See the primary asset fix.
  2. HTTPS everywhere. Every asset, font, script and tracking pixel loads over https://.
  3. A click tag the ad server can read. var clickTag in the head, unminified, spelled exactly that way. Studio creatives use Enabler.exit instead.
  4. A size declaration that matches. The ad.size tag, the canvas and the images agree.
  5. Animation that ends. DV360 caps animation at 30 seconds and the IAB recommends 15. There is no documented loop count rule: the total running time is what counts.
  6. No storage, no pop ups, no autoplaying sound.
  7. Polite loading for heavy creatives. Load the minimum before the page's load event and the rest after it. The IAB defines subload as everything requested after that event, and allows it twice the initial weight.

Check all three without uploading

The HTML5 Banner Validator has a separate mode for each platform. Drop the ZIP once and switch between Google Ads, CM360 and DV360 to see which rules it breaks where; the Generic mode flags the portable basics for DSPs without a dedicated mode. For each platform in depth, read the Google Ads HTML5 requirements and the CM360 creative specs, and run the whole campaign through the HTML5 banner QC checklist before launch.