What converts, what doesn't: the rules idmly applies to your HTML
Updated October 2026 · matches the live engine
idmly takes one self-contained .html file with fixed-size pages and writes a native InDesign .idml. Text, tables, inline SVG, images, gradients, shadows and rounded corners come out as the InDesign objects they correspond to, not as pictures. The page is rendered in a real browser and measured, so what converts is what the browser draws.
This page is the complete list of rules the converter actually enforces, taken from the engine, not from a brochure. If something on your file fails, the reason is here.
Six sections: the file, the pages, what becomes a native object, what is left out, fonts, and every message the converter can return with its fix. The free trial's rules are at the end.
1. The file
One .html file, uploaded on the File tab or fetched from a public link on the URL tab. The same file works through the MCP server and the API.
- ✓Self-contained. CSS in a
<style>tag. A Google Fonts<link>is fine. Scripts may run, but the design must reach a stable state on its own (see section 6). - ✓Images embedded or public.
data:URIs always work and do not count toward any cap. Absolutehttps://URLs are downloaded, up to 64 distinct images per trial conversion and 150 per licensed one. A relative path to a folder beside the file is a broken image, because a single-file upload cannot carry the folder. - ✓Size. Up to 15 MB on the free trial, 50 MB with a license. Big files are nearly always embedded photos, so downscale or re-encode them, or host them and link by URL.
- ✓URL mode wants the design, not an app. Only public
httporhttpshosts are fetched. Links to claude.ai, chatgpt.com, figma.com, canva.com, gamma.app, Google Docs, Drive, Dropbox, Notion and Adobe's Publish Online or Acrobat viewers are refused up front with the reason: they open an app or a viewer, never the raw file. Download the.htmland use the File tab. Private and local addresses are refused too.
Claude's downloadable exports are handled as they are: a "Bundled Page" is unpacked, a multi-page bundle with each page in its own frame is captured page by page, and a web-component export whose component scripts stayed behind on the server (it opens blank on its own) is rebuilt at the size the file declares. The result tells you when any of that happened.
2. The pages
HTML has no pages, so idmly looks for the containers that act as pages, in this order, and stops at the first that matches.
- Named page containers.Elements with class
page,slideorsheet, or Claude'sdata-screen-labelscreens. Nested ones resolve to the outermost. - Page-sized sections.Top-level
<section>or<article>elements of print-page proportions, directly underbodyor one wrapper down. - A single fixed-width canvas.One fixed-width root inside a fluid body, the shape of a poster or one-pager, becomes one page at that size.
- Whole-page fallback.Nothing above matched. The entire document converts as one tall frame and the result says so, with the fix: wrap each page in a container with
class="page".
Each container becomes one InDesign page at its own rendered size, so pages in one file may differ in size. 816 × 1056 px is US Letter, 794 × 1123 px is A4, 1920 × 1080 px is a 16:9 slide. Give the container overflow:hidden so nothing bleeds across pages. A container with class spread becomes a two-page facing spread. A Claude Design canvas with several artboards converts one artboard per page at on-screen scale, which the result flags so you can set the trim size afterwards.
3. What becomes a native InDesign object
Everything in this table is editable in InDesign afterwards. Nothing is rasterised.
| In the HTML | In the .idml |
|---|---|
| Text | Text frames with named paragraph styles and named character styles. Alignment, leading, letter-spacing, weight, italic, colour, superscript and forced breaks carry through. Whitespace collapses the way the browser collapsed it. |
| Stacked paragraphs | One flowed story per column with paragraph breaks, measured space before and after, first-line indents and tab stops. Add data-idml-thread to frames you want threaded across pages. |
| Lists | Native bullets and numbering, including start, value, alphabetic and roman types. |
| CSS columns | A native multi-column text frame, not several frames. |
| HTML tables | InDesign tables with header rows, colspan, rowspan and per-cell fills, borders and alignment. |
| Inline SVG | Editable bezier paths with fills and strokes. Compound paths keep their holes, <use> symbols and clip-path are honoured, stroke-dasharray becomes a native dashed stroke. Charts drawn as SVG stay recolourable. |
| PDF-to-SVG text | Letter outlines from a PDF export are read back into editable text at the measured size, colour and baseline, set in a generic stand-in font. Convert the original HTML instead when you can. |
| Gradients | Linear and radial colour gradients become native InDesign gradients. A single colour fading to transparent becomes a gradient feather. Hard-edged radial disks over a base become clipped circles. |
| Conic-gradient donut | Ring segments as polygons, one per slice. |
| Boxes | Fills, borders, hairline rules, per-corner border-radius (half-pills and top-rounded cards keep their shape), CSS border triangles as polygons, box-shadow as a native drop shadow, rotation as a rotated frame. |
| overflow:hidden | A shape cut by a clipping ancestor or the page edge is nested inside an invisible container, the same as Paste Into. |
| Images | Placed and linked from a Links/ folder beside the .idml, with object-fit cover, contain and fill honoured and the frame's radius clip kept. The download is a zip when there are images. |
| Form fields | The visible value of inputs and selects, as text, in the right stacking order. |
Every conversion ends with a geometry check: each frame in the .idml is compared with the box the browser drew, and the result reports ok or drift. Drift is rare and means a frame may sit slightly off; compare against the HTML.
4. What is left out, and why
- ×Motion and interaction. Video, iframes, embedded players, animation and hover states are not objects on a page. The design is captured at rest, after it has loaded and settled.
- ×Files the HTML points at but does not carry. A sibling
assets/folder, a server path from the AI tool, a blocked host: the frame is placed empty and the result says how many and why. Embed the images and convert again. - ×More linked images than one conversion downloads. Past the cap (64 trial, 150 licensed) frames are left empty and the result names the count. Embedded images never count, so embedding is the fix.
- ×An
.svgfile used as an<img>that cannot be inlined. It is written toLinks/but not placed. Paste the SVG inline and it becomes editable vectors. - ×Multi-stop transparency fades. An opacity veil with several stops flattens to one fade from its strongest stop to transparent. Colour gradients are unaffected.
- ×Prepress. No trim, bleed, slug or printer's marks are emitted; margins are zero. Set the document to the final trim plus bleed in InDesign.
- ×Font files. Fonts are bound by name, never embedded or outlined. Section 5 covers what that means for you.
- ×Websites. A fluid page with navigation and a scrolling body is not a design. It converts as one tall frame and the result says the layout may be rough. idmly is for fixed-layout documents.
- ×Trifold and gatefold spreads. A
spreadcontainer is always two pages.
5. Fonts
The .idml names every font family the design used, and the result lists them under "fonts to activate". InDesign needs those families active on the machine that opens the file; otherwise the text is highlighted pink until you install them. AI tools reach for Google Fonts almost every time and those are free to install.
Weights map to the nearest style the family ships, and italic to that weight's italic or oblique where one exists. One failure looks like a conversion bug and is not: if two versions of a family are active at once, say Adobe Fonts and a local Google Fonts copy, InDesign draws scrambled glyphs from an intact file. Deactivate one copy.
6. Every message the converter can return
These are the exact conditions, in the order they are checked. Each message carries its own fix; this is the longer version.
| Message | What happened | Fix |
|---|---|---|
| Not an .html file | The upload was a PDF, an image, a zip or a share link. | idmly works from the design's .html file. Download that from the tool and upload it, or paste a public link to it. |
| Over the size limit | Larger than 15 MB (trial) or 50 MB (licensed). | Downscale or re-encode embedded images, or host them and link by https URL. |
| That URL isn't a design | The link points at an app, a viewer, a login wall or a private address. | Download the .html and use the File tab. For tools that export only PDF or PNG, export HTML from a tool that can. |
| Bundled Page didn't finish unpacking | A Claude Bundled Page never unpacked, usually because an injected analytics script broke the export when the opened page was re-saved. | Re-download a fresh copy from Claude using its Download action, not "Save page as", and convert that. |
| Every page came out empty | Pages were found but nothing was visible: the design needs component scripts or a stylesheet that sat next to the file, or only draws on its original site. | Re-export as a single self-contained .html. Most blank web-component exports are rebuilt automatically; this message means that was not possible. |
| No pages found | The file has no visible content. | Open it in a browser. If it is blank there, it is blank for idmly. |
| Never finished rendering | A script keeps running forever, typically a MutationObserver or resize handler that re-triggers itself, so there was nothing stable to measure. | Open the file in a browser; if the tab freezes, that is the same fault. Remove or fix the script and convert again. |
| This design already had its free trial | The pages about to convert are pages an earlier trial held back, or the file carries the fonts, styles and colours of a design that already used its free pages. One free trial per design. | Re-exporting the same design is always allowed. For the rest of the document, a $49 license converts every page. |
| A full hour or day of free trials | Three keyless conversions an hour, or six a day, from one network. | Wait, or license. |
| License key rejected | A key was sent and did not validate. idmly never silently falls back to a trial when a key is present. | Check the key against your purchase email. |
| Slow down | Too many requests in a minute. | Wait the number of seconds in the message. |
| Conversion failed, that design tripped a bug | The engine hit something it has never seen. | Use "report a broken file" on the converter. The file goes to a human and the fix ships for everyone. |
The free trial
Without a license, idmly converts a design's two most detailed pages: the ones carrying the most tables, charts, images, gradient panels and text. A cover and a contents page rarely qualify, which is the point; you should judge the converter on the pages that matter. The pages come back in document order, the file is named -trial, and the result names which pages they were and how many were held back. A design of two pages or fewer converts in full. Each design gets one free trial, counted on its content rather than your browser, so a re-export of the same design after a fix still converts, while splitting a document into pieces to convert it two pages at a time does not. Two free conversions per browser, no account. A $49 lifetime license converts every page of every design, through the website, the API and the MCP server.
Frequently asked questions
What kind of file does idmly accept?
.html file, or a public https link to one. CSS inline in a <style> tag, images as data URIs or public URLs, fonts by name through a Google Fonts link. Up to 15 MB on the trial, 50 MB licensed. Share links from claude.ai, chatgpt.com, Figma, Canva or Drive open an app, not the file, so download the .html and upload that.How does idmly decide where the pages are?
page, slide or sheet, Claude's screens and documents, page-sized top-level sections, or a single fixed-width canvas. Each becomes one InDesign page at its own size. With no page structure the whole document converts as one tall frame and the result says so.Which parts of the HTML become editable InDesign objects?
What does idmly not convert?
<img> that cannot be inlined is written to Links but not placed. No trim, bleed or marks; fonts named, not embedded; a fluid website converts as one tall frame.Why did my conversion fail?
Which pages does the free trial convert?
Know the rules. Now test them on your own file.
Drop your design in and its two most detailed pages come back as a native, editable InDesign file, free. No account needed.