What the validator actually checks
This is a static analysis tool, not a network submission simulator. It unpacks your ZIP in memory and runs five checks against what's actually inside it:
- Entry file — confirms
index.htmlexists at the root of the archive. Every ad network loads this file as the creative's entry point; if it's missing or nested in a subfolder, nothing else matters. - Engine / cache assets — confirms either
engine/scripts.js(standard folder-mode export) or a complete Lunacache/<id>/{scripts,jsons,blobs}.jsset is present. If neither is there, the ZIP doesn't look like an actual Playworks/Luna export. - Click-through hook — scans
index.htmlfor a recognizable pattern:clickTag,ExitApi,mraid.open,window.install,FbPlayableAd, oropenAppStore. This is informational, not pass/fail — a raw export normally won't have any of these yet, since PlayableKit's converter wires the correct one in per network during conversion. - Inline script syntax — parses every inline
<script>block inindex.htmlusing Node's built-invmmodule, purely to catch JavaScript syntax errors. Nothing is executed; it's a parse-only check. - Package structure — reports total file count and total uncompressed size, so you can see the shape of what you uploaded alongside the other findings.
The tool gives you an overall pass/fail plus a per-check breakdown, and lists the networks PlayableKit converts for so you know what's coming next if the export checks out.
Why this matters before you submit anywhere
A rejected creative isn't just a failed upload — it's a full review cycle spent finding out about a problem that a five-second scan could have caught. Missing entry files, incomplete cache exports, and syntax errors in inline scripts are exactly the kind of structural issues that get flagged during manual or automated network review, and they're also the easiest ones to fix once you know they're there. Catching them before you submit means the review cycle you actually spend gets used on creative feedback, not on "this file doesn't load."
This is especially useful right after exporting from Unity Playworks/Luna, before you've done any per-network adaptation — it's a quick sanity check on the raw build itself, independent of which network you're eventually targeting.
How to use it
- Go to the Playable Ad Validator and drag your export ZIP into the drop zone, or click to browse for it.
- Click Validate. There's no signup, no account, and no email required — the file is processed in memory and never written to disk.
- Read the per-check results. Each one tells you exactly what it found and why it matters.
Two limits worth knowing about upfront, since we'd rather you hear it from us than get surprised by it: uploads are capped at 20 MB, and the endpoint is rate-limited to 15 checks per 15 minutes per user. Both are generous for checking builds one at a time as you iterate, and both exist to keep the free tool free and stable for everyone using it.
What it deliberately does not do
To be direct about the limits of this tool, so you're not caught off guard by what's missing:
- No per-network size pass/fail. An earlier version of this tool compared raw uncompressed size against each network's byte cap and showed a pass/fail per network. We removed that. Raw export size is a poor proxy for final creative size — real conversion drops unused cache generations, re-encodes assets, and inlines media, so the same input can end up well under a network's limit even when the raw export looks oversized, or vice versa. Reporting a size verdict from static analysis alone would have been actively misleading rather than just imprecise, so the validator reports file count and total size as information, not as a per-network verdict.
- No live network submission. This tool never talks to Google Ads, Meta, AppLovin, Mintegral, TikTok, Unity Ads, or Vungle. It only inspects the ZIP you upload. A pass here means your export is structurally sound — it doesn't guarantee acceptance by any specific network's review process.
- No conversion. The validator doesn't wire in clickTag/MRAID/SDK calls, encode assets, or repackage anything. That's a separate step, done by PlayableKit's actual converter.
Where this fits with the rest of PlayableKit
The validator, the size checker, and the ZIP structure checker are all free standalone tools — no account needed, no strings attached. If your export passes and you're ready to actually ship it to multiple networks with the right clickTag/MRAID wiring and asset encoding handled automatically, that's what the playable ad converter does, and it's covered under PlayableKit's paid plans.