Most playables go over 5 MB for four reasons: base64 inlining adds about a third to every asset, the lead-in video is too heavy, full fonts and oversized images slip in, and the engine code itself takes a big share before any art loads. Every major network caps playables at about 5 MB, so the fix is a budget, not a last-minute squeeze. Aim for 2 to 3 MB in total. That leaves room for localized versions and a second orientation, and it loads faster on the phones your players actually use.
- Base64 makes every inlined asset at least 33% bigger. An 800 KB PNG turns into about 1.1 MB inside the file.
- The usual suspects, in order: lead-in video, uncompressed images, full font files, engine code, audio.
- Set a size budget per asset type before you build. Cutting at the end costs quality.
- Pick a light engine. Phaser's full build is about 980 KB of minified JavaScript before a single sprite.
- Genie Playable packages every playable to each network's size rules from one source, so your team isn't hand-shrinking files per network.
Why does my playable get bigger when I export it?
Because networks want everything inside the file. AppLovin, Unity and Moloco take one HTML file with every image, sound and font embedded, usually as base64 text. Base64 is at least four thirds the size of the original data. One real example: an 800 KB PNG grew to about 1.1 MB once inlined.
Gzip doesn't save you here. Compressed base64 shrinks back close to the original size, but the 5 MB check runs on the file you upload, not on what travels over the network. Where a network accepts a ZIP (Google, Meta, TikTok, Mintegral, Snapchat), the ZIP compression does count toward the limit, which gives you a little more room.
AppLovin also accepts base122, which is about 14% smaller than base64. The trade-off: it decodes slower and compresses worse, so it helps most on single-file uploads.
Where does the file size actually go?
| Asset | Why it gets heavy | What to do |
|---|---|---|
| Lead-in video | Around nine in ten top playables open with video, and it's often the single biggest asset | Keep it to a few seconds, lower the resolution to what the placement shows, cut the bitrate |
| Images | Source art exported at full resolution. A 3000 px image shown at 1080 px carries about eight times the pixels you need | Resize to display size, convert to WebP, pack into sprite sheets |
| Fonts | A full TrueType file is 100 to 500 KB | Subset to the characters you use, or use a system font |
| Engine code | Phaser's full build is about 980 KB minified. A graphics-only custom build is about 404 KB | Use a custom build, a lighter framework, or plain JS and Canvas for simple mechanics |
| Audio | Long music tracks at full quality | Short loops, lower bitrate, mono. Phone speakers won't show the difference |
| 3D models | Raw meshes and textures | Compress geometry (Draco cut one model from 7.6 MB to 0.8 MB) and compress textures separately |
How do I get my playable under 5 MB?
1. Set a budget before you build
Decide the total first, then split it. PlayableAdsMaker suggests rough targets by format: under 300 KB for an end card, under 600 KB for an end card with effects, and under 1.5 MB for a mini-game. A full playable with a lead-in video usually lands between 2 and 4 MB. Write the budget down per asset type and check it on every build.
2. Shrink the video first
It's the biggest win. Trim the lead-in to the few seconds that set up the play moment. Export at the size the ad actually renders, not at your trailer's resolution. If the video only works at a high bitrate, it's probably too long.
3. Fix images at the source
Resize every image to its display size. Convert to WebP, which runs about 25% to 34% smaller than JPEG at the same visual quality. Pack small sprites into atlases so you ship one compressed image instead of dozens.
4. Subset fonts and trim audio
Keep only the glyphs on screen. Cut music to a short loop, drop to mono, and lower the bitrate until you can hear the difference on a phone speaker, then go one step back.
5. Cut engine weight
Use a custom build that includes only the modules you need. For a simple drag, tap or swipe mechanic, plain JavaScript and Canvas often beat a full engine. Godot is the cautionary tale: an empty export is already over the limit. Defold, with the right settings, has example playables under 1 MB.
6. Check the file you'll upload
Measure the final packaged file for each network, not your project folder. A build that fits as a ZIP for Google can go over as a single HTML file for AppLovin.
Is 5 MB the real target?
No. 5 MB is a rejection line, not a production goal. Three things eat the headroom: localized text and voice, a second layout for the other orientation, and the next variation you'll ship in two weeks with one more character in it. Players on mid-range Android phones on mobile data also feel every extra megabyte in load time, and a playable that loads slowly loses players before the first tap. The honest read: if you're at 4.8 MB, you're already over budget for version two.
What are the most common file size mistakes?
- Exporting art at source resolution and resizing in code.
- Shipping the whole font family for a headline and a button.
- Measuring the ZIP when the network wants a single HTML file.
- Mixing two mechanics in one playable. Double the assets, double the size, and it usually tests worse anyway.
- Adding "just one more" character per variation until a later version gets rejected.
Where does Genie fit?
Size is a packaging problem as much as an art problem, and it repeats for every network and every version. Genie Playable builds playables from your game (your APK or HTML build plus the assets, narrative and live events in Genie), from a format that's already working, or from scratch from a brief.
It then exports network-ready versions for Meta, Google, TikTok, AppLovin, Unity Ads, Mintegral, Liftoff, Moloco, Snapchat and Digital Turbine, each packaged to that network's rules. Your team works on the creative. Try it free on your game.
FAQ
What is the file size limit for playable ads?+
About 5 MB on every major network in 2026, including AppLovin, Meta, Google, TikTok, Unity, Mintegral, Moloco and Snapchat.
Why does base64 make my playable bigger?+
Base64 turns binary data into text, which takes at least a third more space. Networks that want one self-contained HTML file need assets inlined this way.
Does gzip help me pass the 5 MB limit?+
Not for a single HTML upload, because the limit is checked on the file itself. For networks that accept a ZIP, compression inside the ZIP does count.
What size should a playable ad be?+
Aim for 2 to 3 MB. It loads faster and leaves room for localized versions and future variations.
Which engine is best for small playables?+
For simple mechanics, plain JavaScript and Canvas or a custom Phaser build. Defold can also produce very small builds. Godot exports are too large for most networks.

