Google Ads HTML5 ZIP Specifications & Upload Requirements
Uploading HTML5 creatives to Google Ads (formerly AdWords) requires adherence to some of the strictest standards in the digital advertising industry. Google enforces these rules to protect user safety, prevent slow page loads, and guarantee click tracking compliance.
Google Ads ZIP Checklist
| Specification | Limit / Requirement | Severity |
|---|---|---|
| Maximum ZIP file size | 600 KB (Recommended: <150 KB) | Hard Block (Rejection) |
| Maximum File Count | 40 files total inside ZIP | Hard Block (Rejection) |
| Primary File | index.html at the root folder level | Hard Block (Rejection) |
| clickTag variable | Required (case-sensitive spelling) | Hard Block (Rejection) |
| ad.size metadata | Mandatory in HTML head | Hard Block (Rejection) |
| SSL compliance | All assets must load via HTTPS | Hard Block (Rejection) |
| External resources | None (except Google Hosted CDNs) | Hard Block (Rejection) |
| Storage APIs | localStorage / sessionStorage forbidden | Hard Block (Rejection) |
File Size and Count Limits
While some Google systems allow ZIP sizes up to 600 KB, many placements will throttle or experience delivery delay issues if the file weight is heavy. The standard recommendation is to keep initial load files under 150 KB. Additionally, Google Ads restricts the total file count inside the ZIP to no more than 40 files. This includes all HTML, CSS, JavaScript, image, and font files combined.
External Scripts & Approved CDNs
Google Ads forbids referencing external resources in your creative to prevent data leakage and latency. All images, layouts, stylesheets, and custom scripts must be packaged locally within the ZIP bundle. The only exception is referencing Google-approved CDN links for standard libraries like GreenSock (GSAP), jQuery, or CreateJS. Any other CDN reference (like Cloudflare or cdnjs) will cause immediate upload failure.
Local Storage API Prohibition
Google Ads strictly blocks creatives that access localStorage, sessionStorage, indexedDB, or SQL databases. Because these APIs can be used to set persistent user tracking profiles without consent, they violate Google's tracking policies. Creatives must use temporary, in-memory JavaScript variables to store runtime animation states.