March 21, 2026
Google Ads Playable Ad Specs & Best Practices (2026)
Everything you need to know about Google Ads playable ad requirements in 2026: file size limits, ZIP format, required meta tags, CTA implementation, common rejection reasons, and design best practices to get your ads approved on the first try.

Google Ads will get you massive reach for playable ads. It'll also reject your ad for a missing meta tag, a ZIP file that's 12KB too big, or a sound effect that plays half a second too early. We've seen all of these kill campaigns before they even started.
We put this guide together from what we've learned building Google Ads exports at Hookin, plus every rejection reason we've helped clients debug. Here's how to get your playable ad approved on the first try.
Google Ads Playable Ad Technical Specifications
Google treats playable ads as a subset of HTML5 ads, built for App campaigns. The rules are strict. But unlike some networks that leave you guessing, Google's specs are at least clearly defined.
File Format and Size
You'll submit a ZIP archive containing all your ad files. The hard limit is 5MB for the entire ZIP, with a max of 512 files inside. Allowed file types: HTML, CSS, JS, PNG, JPG, JPEG, GIF, and SVG. Your index.html must sit at the root of the ZIP, not buried in a subfolder. Use UTF-8 encoding for all non-ASCII characters.
Here's the good news. Networks like Unity and AppLovin force you to inline everything into a single HTML file with base64-encoded assets, which eats roughly 33% of your size budget on encoding overhead alone. Google lets you use a proper ZIP bundle with separate files. That means your full 5MB goes toward actual content.
Required Meta Tags
Your index.html needs two meta tags in the <head> section. Miss either one and the ad fails validation before a human even looks at it.
First, the ad size tag. Yes, playable ads render full-screen. Google still requires this for validation:
<meta name="ad.size" content="width=320,height=480">
Second, the orientation tag:
<meta name="ad.orientation" content="portrait">
Valid values are portrait, landscape, or both. If you declare both, your HTML actually needs to handle the viewport change. Don't just set "both" and hope for the best.
CTA Implementation
Google has its own CTA system called the Exit API. When someone taps your call-to-action, you call ExitApi.exit() and Google handles the redirect to the app store listing in your campaign.
Include the Exit API script in your <head>:
<script src="https://tpc.googlesyndication.com/pagead/gadgets/html5/api/exitapi.js"></script>
If you built your playable with a third-party tool that has its own CTA logic, rip that out and replace it with ExitApi.exit(). We've seen this trip up a lot of teams. A gaming studio we worked with had three consecutive rejections because their build tool was injecting a custom redirect that silently overrode the Exit API. Incorrect CTA implementation is one of the top rejection reasons on Google.
Audio and Media Rules
Sound must be muted until the user interacts with the ad. No exceptions. Auto-playing audio is an instant rejection. You can use sound and video in your HTML5 App campaign ads, but everything follows the interaction-first rule: the user taps, then you play.
All assets need to live inside the ZIP. Images, audio, fonts, everything. No CDN calls. No external URLs. Google will reject any ad that makes an outbound request for media.
Design and Performance Requirements
Your ad renders full-screen across a range of device sizes, so it needs to be responsive. Not "mostly works" responsive. Actually responsive. A puzzle game we exported for a client once broke on narrow Android devices because the grid assumed a minimum width. That's a rejection.
Target under 2 seconds for load time. Even if your ad passes review, slow loaders get punished in delivery. Google also requires the ad to be entirely self-contained: zero external network calls. And unlike Unity or AppLovin, Google does not use MRAID. Don't inject MRAID calls into your Google build. It's unnecessary and can cause unexpected behavior.
Common Rejection Reasons and How to Fix Them
Google's review usually takes about one business day. When your ad gets disapproved, you'll see a status flag with a policy reference but often not much else. Here are the seven issues we see most often.
1. Missing or Incorrect Meta Tags
The ad.size meta tag is required even for full-screen playable ads. Missing it? The ad fails automated validation and never reaches a reviewer. Check the exact format: name="ad.size" with content="width=320,height=480". Copy-paste it. Don't retype it.
2. Broken CTA / Exit API Issues
If the Exit API script isn't loaded correctly or ExitApi.exit() isn't wired to your CTA button, that's a rejection. Test with Google's HTML5 validator at h5validator.appspot.com/adwords/asset and make sure you check "Select for App Campaigns" during validation. The default mode checks display ad requirements, which will give you misleading warnings.
3. Auto-Playing Audio
Any sound before the user taps, swipes, or interacts in any way? Automatic rejection. Initialize all audio muted. Unmute only after the first user interaction event. This one is non-negotiable.
4. External Resource Calls
Your ad cannot make any HTTP requests to external servers. That means no Google Fonts, no analytics scripts, no tracking pixels, no CDN-hosted libraries. Everything goes inside the ZIP. We've seen developers forget about a single font import in their CSS and lose a full review cycle over it.
5. File Size Exceeding 5MB
5MB is a hard ceiling. Not 5.01MB. Not "close enough." If you're bumping against the limit, compress images to WebP, subset your fonts, and reduce audio bitrate. Our file size optimization guide covers the specific techniques that save the most space.
6. Misleading or Unclear Interaction
Google doesn't just check the technical side. They review the creative too. If your playable shows a match-3 puzzle but the actual app is a casino game, that's a misrepresentation rejection. Fake close buttons, deceptive interaction patterns, or gameplay that doesn't relate to the advertised product will all get flagged.
7. Wrong ZIP Structure
This one is embarrassingly common. Someone zips the build output folder instead of its contents, so the ZIP contains a directory that contains index.html instead of index.html sitting at the root. Or worse, a ZIP inside a ZIP. Always verify: open your archive and confirm index.html is at the top level.
Design Best Practices for Google Approval
Getting past technical validation is step one. These practices are what separate ads that get approved from ads that actually perform.
Hook Users in the First 3 Seconds
Users can skip playable ads after about 5 seconds. That means your first frame has to earn their attention immediately. A clear visual cue, something to tap or swipe, an animation that pulls the eye. Don't waste those seconds on a loading spinner or an instruction screen nobody will read. We break down exactly how to nail those critical opening seconds in a separate deep dive.
Pick One Core Interaction
Tap. Swipe. Drag. Pick one. The best-performing playable ads we've built all focus on a single intuitive mechanic. Don't try to teach someone a complex game in 15 seconds. One interaction done well beats three mechanics crammed together every time.
Keep It Short: 10 to 20 Seconds
Google recommends keeping the interactive portion under 20 seconds. After gameplay, transition to a clear end card with a CTA. The structure that works: a brief tutorial hint, the interactive moment, a win/lose outcome, then the CTA screen. That's it.
Design Two End States
Win or lose, the user should always land on a CTA screen. Never leave someone at a dead end. "Download Now," "Install Free," "Play the Full Game." Both paths lead to the same place.
Respect Safe Zones
Ad network SDKs overlay skip buttons, countdown timers, and close icons on top of your ad. If your CTA button sits behind a skip overlay, nobody will ever tap it. Keep critical interactive elements and UI away from the top corners and edges. We test every export against known overlay positions for each network.
Match the App Experience
Google checks whether your playable actually represents the app you're advertising. Show a puzzle game in the ad but link to a fitness tracker? Rejection. The gameplay, the visual style, the overall feel should closely reflect what users get after they install.
Testing Before You Submit
Don't treat the Google review as your QA step. Run through this checklist before every submission:
- Validate your ZIP at Google's h5validator tool. Select "App Campaigns" as the campaign type. The default mode checks display ad specs, which will flag things that aren't actually problems for playable ads.
- Test on real devices. Emulators miss touch bugs, audio quirks, and performance issues that only show up on actual phones.
- If you declared support for both orientations, test both. A layout that breaks in landscape will get caught.
- Tap your CTA and confirm
ExitApi.exit()fires. Before the campaign is live, it'll show a test page. That's normal. - Don't trust your file system's reported ZIP size. Use the validator to confirm the extracted total is under 5MB.
How Hookin Handles Google Ads Export Automatically
We built Hookin's Google Ads export to handle every requirement in this guide so you don't have to think about any of it. When you select Google Ads as your export target, the platform takes care of the technical details:
- ZIP packaging with proper structure and
index.htmlat the root - Automatic
ad.sizeandad.orientationmeta tag injection - Exit API script included and
ExitApi.exit()connected to your CTA button - Asset optimization that compresses images, audio, and fonts to fit the 5MB limit
- Audio initialized muted, only playing after user interaction
The Google adapter also knows not to inject MRAID, unlike our Unity or AppLovin exports where it's required. Every network gets exactly what it needs. Nothing more.
You focus on making a great playable. We'll make sure Google approves it.
More From The Blog
Ready to Create Playable Ads?
Turn your ideas into interactive ad experiences with AI. No coding required.
Start Free


