glossary
Meta Ad Specs
Meta’s technical requirements for playable ad formats delivered on Facebook, Instagram, and Audience Network. These specs define file size limits, format requirements, and placement compatibility for HTML and ZIP-based playable ads.
Quick Definition
Meta’s technical requirements for playable ad formats delivered on Facebook, Instagram, and Audience Network. These specs define file size limits, format requirements, and placement compatibility for HTML and ZIP-based playable ads.
What are Meta Ad Specs?
Meta Ad Specs are the technical guardrails for running playable ads across Facebook’s ad ecosystem.
They determine what you can build, how big it can be, and where it will run. Miss a spec and your ad gets rejected. Hit them perfectly and your playable reaches News Feed, Instagram, Stories, and Audience Network.
The platform supports two formats: single HTML files and ZIP bundles. Each has different size limits, structural requirements, and placement compatibility. Understanding which format fits your creative determines how you build and where you can distribute.
These specs exist because playables run inside Meta’s app environments. They need to load fast, render correctly, and not break the user experience. A 10MB playable that takes 8 seconds to load kills engagement before users even see it. Meta’s constraints force efficiency according to Meta’s Audience Network documentation.
The specifications also vary by placement. News Feed supports full interactive ads. Instagram Stories and other placements show only the lead-in video. Building for Meta means understanding where your creative will actually play versus where it gets reduced to passive viewing — get that deployment logic wrong and your best playable ships as a silent video nobody can touch.
Single HTML Format Specs
| Specification | Requirement | |—————|————-| | File Size | 2 MB maximum | | Format | Single .html or .htm file | | Assets | All must be data URI compressed (JS, CSS, images, sounds) | | External Requests | None allowed (no HTTP requests) | | MRAID | Not required | | Orientation | Vertical/portrait mode required | | Design | Must be responsive for multiple devices | | CTA Function | Use FbPlayableAd.onCTAClick() |
Single HTML playables embed everything into one file. Images become base64 data URIs. JavaScript and CSS inline directly into the HTML. Sound files compress into data URIs. Nothing loads from external servers.
This creates tight constraints. A 2 MB limit for a complete interactive experience demands aggressive optimization. Every asset counts. Every kilobyte matters.
The benefit is simplicity. One file uploads, one file distributes, one file Meta’s servers need to cache and deliver. No dependency chains. No broken asset links.
ZIP Format Specs
| Specification | Requirement | |—————|————-| | Total Size | 5 MB maximum | | Index File | index.html at root, max 2 MB | | Max Files | 100 files in bundle | | Platform Support | iOS and Android | | Structure | index.html must be at ZIP root level |
ZIP bundles allow more complex playables. You get 5 MB instead of 2 MB. Assets can live as separate files instead of embedded data URIs.
The 100-file limit prevents bloated bundles. The index.html requirement ensures Meta knows where to start execution. File structure matters. Nested directories work, but index.html must be at the root.
This format suits playables with rich graphics, multiple audio tracks, or complex JavaScript frameworks. The extra space allows higher quality assets and more sophisticated mechanics.
Lead-in Video Requirements
Most Meta placements require a lead-in video before the playable experience.
Lead-in Video Specs:
- Required for all placements except Audience Network
- All aspect ratios supported
- Acts as preview/teaser for the playable
- Only placement is News Feed for full playable interaction
The lead-in video determines first impression. Users see this before they can interact. It needs to communicate value fast and compel engagement.
Instagram Feed, Instagram Stories, and other non-News Feed placements show ONLY the lead-in video. The playable component never renders. Users see video, then CTA. No interactivity.
This creates a strategic decision. Do you optimize for News Feed (where playables work) or broader reach (where only video plays)? Most campaigns need both approaches.
Placement Compatibility
| Placement | Playable Support | Format Shown | |———–|——————|————–| | News Feed | Full playable experience | Lead-in video → Interactive playable | | Instagram Feed | Video only | Lead-in video → CTA | | Instagram Stories | Video only | Lead-in video → CTA | | Audience Network | Full playable support | Interactive playable (no lead-in required) | | Other Placements | Video only | Lead-in video → CTA |
News Feed gives you full playable capability. Users watch the lead-in, tap to play, interact with your mechanics, then see the install CTA. This is where playables shine.
Audience Network supports playables without requiring lead-in videos. The playable loads directly, saving load time and getting users into interaction faster.
Everything else defaults to video-only. Instagram placements, sidebar placements, secondary inventory all strip the interactive component. Users see video, not gameplay.
This fragmentation means most “playable campaigns” on Meta actually run as hybrid video/playable experiences. Broad reach via video, deep engagement via playable where supported.
Common Rejection Reasons
File size exceeds limit. The most frequent rejection. 2 MB for single HTML feels generous until you add graphics, audio, and JavaScript frameworks. Compress assets aggressively or switch to ZIP format.
External HTTP requests detected. Your playable called an external API, loaded a Google Font, or pinged an analytics endpoint. Meta blocks all external requests per Facebook’s playable ad policies. Everything must be self-contained. This protects against ad fraud.
index.html not at root level. ZIP submissions fail when index.html lives inside a subdirectory. The file must be at the top level of the ZIP archive.
Lead-in video missing. You submitted a playable for Instagram Feed without a lead-in video. Meta requires the video component even though the playable won’t render there.
Orientation mismatch. Your playable renders in landscape, but Meta specs require vertical/portrait orientation. Mobile users hold phones vertically. Build for that reality.
CTA function incorrect. Using a standard URL link instead of FbPlayableAd.onCTAClick() breaks Meta’s tracking and attribution. The install flow won’t work properly.
Related Terms
External Resources
Frequently Asked Questions
What are the specs for Meta ads?
Meta playable ads come in two formats. Single HTML files max out at 2MB with everything embedded as data URIs and no external requests allowed. ZIP bundles allow up to 5MB total, with index.html at the root and a 100-file limit.
What size should a Meta ad be?
For playables, single HTML files must stay under 2MB; ZIP bundles can go up to 5MB total, with the index.html itself capped at 2MB. Vertical/portrait orientation is required.
What are the specs for Meta ads in 2026?
Meta’s core playable ad specs haven’t changed structurally: 2MB single HTML or 5MB ZIP, portrait orientation, no external HTTP requests, and FbPlayableAd.onCTAClick() for the install CTA. Always confirm current limits in Meta’s Audience Network documentation before submitting, since platform specs can shift.
What are the specs for a 9:16 Meta ad?
Meta requires vertical/portrait orientation for playable ads, which lines up with the 9:16 aspect ratio most mobile placements use. The design itself needs to be responsive across device sizes, not locked to one fixed resolution.