Drop the ZIP you'd upload to the ad platform. It gets checked and rendered at its declared size, right here — nothing is uploaded.
Drop the creative here
The .zip you’d upload to the ad platform, or a single .html
Unpacked and rendered in your browser. The creative is not uploaded, stored, or logged.
The creative will render here, at the size it declares.
Drop a creative to see it render.
The creative will render here, at the size it declares.
Drop a creative to see it render.
Drop the creative here
The .zip you’d upload to the ad platform, or a single .html
Unpacked and rendered in your browser. The creative is not uploaded, stored, or logged.
Drop the creative and it unpacks in your browser, then renders in an isolated frame at the exact pixel size the file declares in its ad.size meta tag. That is the part a file tree cannot tell you: a 300×250 that was actually authored at 320×250 looks fine in a folder listing and wrong in a placement.
Alongside the render you get the three structural things Google's published HTML5 guidelines are explicit about — whether the ad.size meta tag is present and readable, whether a clickTag exists, and whether every referenced asset is genuinely inside the bundle. That last one is measured rather than guessed: the bundle is folded into a single self-contained document first, so anything still pointing at an absolute URL afterwards is, by definition, a dependency the ZIP does not carry.
Weight is reported as a fact, not a verdict — total size, file count, and which files are eating the budget. There is a box to type your own limit in, because the number differs by platform and by publisher, and a tool that hard-codes one is a tool that will be wrong the day someone changes theirs.
It all happens on your machine. The ZIP is read by your browser and drawn in a sandboxed frame; it is never sent to miinideck, never stored, never logged. Which also means there is no link yet — sending the preview to a client is a separate, deliberate step.
Drop the ZIP into the panel above. Your browser unpacks it locally and draws it in an isolated frame at the size the creative declares, so you see the animation run the way a placement would show it — before the file has gone anywhere. Nothing is transmitted or stored, which matters when the creative is an unreleased campaign.
It is how a creative tells the platform what dimensions it was built for. Google Ad Manager's HTML5 guidelines document the format as a meta tag named ad.size with content in the form width=[x],height=[y] — for example width=300,height=250. Without it, or with it malformed, the platform has no reliable way to match the creative to a slot. This tool reads the tag out of your entry HTML and renders at exactly those numbers, so a mismatch between what the file says and what it looks like is visible immediately.
Rendering and passing validation are different bars. This tool checks the structural things Google publishes — the ad.size tag, a clickTag, assets being inside the bundle — but each network layers its own rules on top: file-type allowlists, animation length, weight budgets, backup images, and policy review. Treat a clean result here as 'nothing obviously broken', not as approval, and run the platform's own validator before you commit a flight to it.
It means the creative is loading something from the internet rather than from inside the ZIP — a font, an image, a library on a CDN. Google's guidelines are explicit that all referenced assets must be included in the ZIP with relative paths, so an external reference is usually a rejection or, worse, a creative that renders in your test and breaks in a placement. The tool finds them by folding the bundle into one self-contained document and then looking for anything still pointing at an absolute URL, so the list you get is what genuinely could not be resolved locally.
It depends on the platform, and that is not a dodge — Google Ad Manager's published HTML5 guidelines set out the ad.size and clickTag requirements but do not state a maximum ZIP size or file count, and the figures quoted in third-party guides disagree with one another. The number that binds you is the one in the spec sheet from whoever is running the placement. Put that number in the budget box above and the tool will tell you whether you are under it and which files to attack if you are not.
Viewing and sharing are deliberately separate here — nothing is uploaded unless you ask. When you do want a link, miinideck hosts the same bundle at an unguessable URL that stays out of search by default, so a client or a publisher can open it in a browser with no account and no ZIP to unpack at their end. Without an account the link lasts 7 days and can take a password; sign in (free) to change the password later or keep one link from expiring.