image.to.design docs
Last updated
What it is
image.to.design converts images and UI screenshots into editable output — Figma layers, HTML, or both, depending on which option you use.
| Option | Output |
|---|---|
| Figma plugin | Figma layers |
| Web tool | HTML, or Figma layers via clipboard |
| API | HTML, with Tailwind CSS or inline styles |
Figma plugin requires Figma open; the web tool and API don't. Full output details, including both API formats, in Output.
What it does
Drop in an image or screenshot. image.to.design reads its visual structure — layout, typography, color, images, and icons — and returns a structured, editable result: an HTML page, or a Figma design. The level of reconstruction depends on the mode selected, from a flat image up to a fully reconstructed layout (see Output, below).
Where it runs
The plugin runs inside Figma — you'll need Figma open to use it (Figma Community). It also runs in Figma Slides and FigJam, importing onto the canvas the same way as in a design file.
The web app runs in your browser, at divriots.com/image.to.design — no Figma required. Accepts drag-drop, click-to-browse, or clipboard paste.
The ‹div›RIOTS API runs wherever you call it from — any backend or
app that can make an HTTP request. Same engine, exposed as the
image input format. Metered separately — see
Pricing. Full reference:
‹div›RIOTS API documentation.
Supported input formats
The same formats apply to the plugin, the web tool, and the API:
| Category | Formats |
|---|---|
| Standard raster | JPEG, PNG, GIF, BMP, WebP, TIFF |
| Modern raster | AVIF, JPEG XL, JPEG 2000, HEIC/HEIF |
| Camera RAW | CR2 (Canon), DNG (Adobe/universal), ARW (Sony) |
| Vector | SVG, SVGZ |
Output
Figma plugin — quality-tier slider
Every import goes through a slider with five modes, trading fidelity against credits and time. Each mode adds to the one before it:
| Mode | What you get | Credits | Time |
|---|---|---|---|
| Image |
Result is a single, flat layer. | Free | Instant |
| Vectors |
Text is imported as vectors; no bitmap assets. | 2 credits, flat rate | ~30 sec |
| Quick |
Optimized for speed. | 20 credits withheld at start | ~3–5 min |
| Quality |
Optimized for the quality / speed / cost balance. | 100 credits withheld at start | ~5–10 min |
| Max |
Time and cost no object — the most expensive tier. | 500 credits withheld at start | ~10–20 min |
Quick, Quality and Max withhold their credits from your balance at the start of conversion; when it finishes you pay what it actually used, and any unused credits are returned to your balance. Large or dense images can sometimes cost more than the withheld amount. The plugin shows a live cost/time estimate before you commit to a tier.
Web tool
The web tool runs the same conversion engine and the same quality
slider, minus the free Image tier (uploading an image just to get
the same image back serves no purpose on the web). Pick one of four
paid tiers, then copy the HTML, download it as a .zip,
or copy the result as Figma layers to paste directly into Figma:
| Setting | What you get | Credits | Time |
|---|---|---|---|
| Vectors |
Text is imported as vectors; no bitmap assets. | 2 credits, flat rate | ~30 sec |
| Quick |
Optimized for speed. | 20 credits withheld at start | ~3–5 min |
| Quality |
Optimized for the quality / speed / cost balance. | 100 credits withheld at start | ~5–10 min |
| Max |
Time and cost no object — the most expensive tier. | 500 credits withheld at start | ~10–20 min |
API
Two output formats available for the image input type:
| Output format | What it is |
|---|---|
html-tailwindcss | Generated HTML using Tailwind CSS, delivered as a ZIP |
html-inlinestyles | Generated HTML using inline styles, delivered as a ZIP |
For the image input type, input.effort
picks the agent effort level — low |
balanced (default) | max. Higher effort
yields higher fidelity, takes longer, and costs more. Each level
withholds the credits below at the start; when the job finishes you
pay what it actually used, and any unused credits are returned to
your balance. Omit the field and the conversion runs at
balanced. Full request body:
API reference.
| Effort | What you get | Credits | Time |
|---|---|---|---|
low |
Optimized for speed. | 20 credits withheld at start | ~3–5 min |
balanced |
Default. Optimized for the quality / speed / cost balance. | 100 credits withheld at start | ~5–10 min |
max |
Time and cost no object — the most expensive level. | 500 credits withheld at start | ~10–20 min |
Editability
| Mode | Text | Layout | Images | Icons | Colors |
|---|---|---|---|---|---|
| Image | Not extracted (flat image) | N/A | N/A | N/A | N/A |
| Vectors | Vector shapes, not editable text | N/A — vectors only | Transformed into vectors | Transformed into vectors | N/A |
| Quick / Quality / Max | Editable text layers | Auto layout, smart-named layers | Cut out as bitmap assets | Matched against icon libraries, recreated as vectors if nothing matches | Native Figma fills |
| HTML | Editable text in real HTML elements | Real flexbox/grid, nested | Cut out of the source image | Matched against icon libraries, recreated as vectors if nothing matches | Sampled as CSS values, gradients included |
Across every reconstructed mode — plugin Quick/Quality/Max, and the web tool — the engine can't infer hover states, animations, or JS interactions. It works from a flat image; add those behaviors after import.
Limits
| Limit | Value |
|---|---|
| Max input height | 100,000px |
| Credit cost |
After conversion, any unused credits are returned to your balance. |
| Processing time | ~30 sec to ~20 min, scaling with tier |
No hover states, animations, or JS interactions are inferred — reconstruction works from a static image only.
Privacy & processing
As per our privacy policy:
- Your images (“Input Data”) are processed solely to generate the requested output.
- Data minimization: processed in memory or ephemeral storage, retained at most 24 hours for debugging, then permanently deleted.
- Not used to train public AI models.
Pricing
| Option | Free tier | Paid |
|---|---|---|
| Figma plugin | 20 free credits to start (a first Quick conversion), no card required, then 10 a month; Image mode always free | Credits spent per conversion, by quality tier (see Output) |
| Web tool | 20 free credits to start (a first Quick conversion), no card required, then 10 a month | Credit cost varies by image complexity |
| API | — |
Metered per call; image input is variable-cost (depends
on requested effort and complexity). See
API pricing for other inputs
|
One subscription for every ‹div›RIOTS product — image.to.design included — with a shared credit balance you top up as needed.
How to use
Figma plugin
- Open your Figma file, launch image.to.design from the plugins menu.
- Drop or upload your image or screenshot (any supported format).
- Pick a quality tier — Image, Vectors, Quick, Quality, or Max — and review the credit/time estimate shown.
- Click Convert / Import.
- Edit the result directly on the canvas.
Web tool
- Go to divriots.com/image.to.design.
- Drop an image — paste from clipboard or click to browse.
- Pick a quality tier — Vectors, Quick, Quality, or Max — and click Convert. No prompt to write.
- Wait while the engine analyzes visual structure.
-
Ship: copy the HTML, download it as a
.zip, or copy as Figma layers to paste into Figma.
API
The API is asynchronous: a conversion runs as a background job, so
you kick it off, poll until it's done, then download the result. The
base URL is https://api.divriots.com/v1 and every request
authenticates with your key in the
Authorization: Bearer … header.
- Generate an API key from your ‹div›RIOTS ONE dashboard.
-
POSTto/convertwithinput: imageand a chosen output format —html-tailwindcssorhtml-inlinestyles. -
The call returns
202 Acceptedwith aLocationheader pointing at a poll endpoint (GET /convert/jobs/{jobId}). -
Poll that endpoint until its JSON
statusisdone(orerror), then download the short-livedresultUrlit hands back — a signed URL valid ~15 min; re-poll for a fresh one if it expires. Forinput: imagethe result is a ZIP.
Inline requests are capped at 30 MB total (base64 inflates
the payload by ~33%). For larger files — up to 10 GB — upload out of
band with POST /convert/upload first, then convert by reference.
A minimal end-to-end call with curl:
# 1. Start the conversion — returns 202 Accepted + a Location header
curl -i https://api.divriots.com/v1/convert \
-H "Authorization: Bearer sk-drc-XXXXXXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{
"input": { "format": "image", "data": "<base64-image-bytes>" },
"output": { "format": "html-tailwindcss" }
}'
# 2. Poll the job URL from that Location header until status is "done"
curl https://api.divriots.com/v1/convert/jobs/{jobId} \
-H "Authorization: Bearer sk-drc-XXXXXXXXXXXXXXXX"
# → { "status": "done", "resultUrl": "https://storage.googleapis.com/…" }
# 3. Download the result within ~15 min (a ZIP when input.format is image)
curl -L -o result.zip "<resultUrl>" Full reference: ‹div›RIOTS API documentation.
FAQ
Is image.to.design free?
A new account gets 20 free credits, no credit card required, to use in the Figma plugin or the web tool. That covers a first Quick conversion, which holds 20 credits. After that, the Free plan adds 10 credits a month. In the Figma plugin, Image mode, which places the picture on the canvas as a single image, is always free. For more credits, see ‹div›RIOTS ONE.
How many credits does a conversion cost?
It depends on the tier:
- Image is free (Figma plugin only)
- Vectors cost a flat 2 credits per image
- Quick → 20 credits are withheld from your balance at the start of conversion
- Quality → 100 credits are withheld from your balance at the start of conversion
- Max → 500 credits are withheld from your balance at the start of conversion
Quick, Quality and Max are metered by the AI processing each image needs. Each withholds a number of credits from your balance at the start; when it finishes you pay what it actually used. Any unused part of the hold goes back to your balance, and large or dense images can sometimes cost more than the withheld amount. The plugin always shows an estimate before you convert.
I have a paid plan. Why am I asked for credits?
Paid plans include a monthly credit allowance, not unlimited conversions: Pro comes with 1,000 credits per seat per month and Ultra comes with 15,000 credits. A conversion needs your balance to cover a certain amount of credits that is withheld at the start (20 for Quick, 100 for Quality and 500 credits for Max), so the plugin may ask for more credits if your balance is lower.
Also, monthly credits expire at each renewal and don’t roll over, and the balance is shared by every ‹div›RIOTS product, so conversions in other tools spend it too. If you have enough credits in your balance, double check you’re signed in to the plugin with the account your plan is on. Your ‹div›RIOTS ONE dashboard shows your balance, and you can top it up there at any time. All extra credit packs purchased are valid for 12 months.
Why does the same image give a different result each time?
AI models do the conversion, and each run starts from a new random seed. Two runs on the same image can therefore differ in layout structure, layer names and small details. If a result misses, run it again or pick a higher tier. Every completed run is charged, including a re-run.
Do I get my credits back if a conversion fails?
Yes, automatically. If a conversion ends in an error or produces no output, the credits held for it go back to your balance; you don’t need to ask. A conversion that completes is charged, even if you don’t keep the result. For a refund of a subscription or a credit pack, email [email protected] from the address on your account.
Which tier should I pick?
- Image (free) places the picture as a single flat layer.
- Vectors (2 credits, ~30 sec) turns a logo, icon or illustration into vector shapes; text becomes outlines, not editable text.
- Quick (withholds 20 credits, ~3–5 min) rebuilds a screenshot as editable layers, text and images, and is optimized for speed.
- Quality (withholds 100 credits, ~5–10 min) does the same with better fidelity, balancing quality, speed and cost.
- Max (withholds 500 credits, ~10–20 min) gives the highest, most accurate fidelity, where cost and time don’t matter.
The web tool offers every tier except “Image”.
How close is the result to my image?
Expect close results in layout, text, colors and images from sharp screenshots. Complex or unusual designs may need some manual fixes after conversion. image.to.design reproduces only what the image shows, at the size it shows it, so hover states, animations, interactions and other screen sizes aren’t inferred. A full-resolution screenshot gives better results than a compressed or scaled-down one.
Can I get Figma layers, HTML, or both?
Both, depending on where you convert. The Figma plugin imports editable Figma layers onto the canvas. The web tool gives HTML to copy or download as a .zip, or copies the result as Figma layers to paste into Figma. The ‹div›RIOTS API returns HTML only, styled with Tailwind CSS (html-tailwindcss) or inline styles (html-inlinestyles), as a ZIP.
What image formats can I convert?
The same formats in the Figma plugin, the web tool and the API: JPEG, PNG, GIF, BMP, WebP and TIFF; AVIF, JPEG XL, JPEG 2000 and HEIC/HEIF; Canon CR2, Adobe DNG and Sony ARW camera RAW; and SVG and SVGZ. An image can be up to 100,000 px tall. The API takes up to 30 MB in the request body, and up to 10 GB uploaded first with POST /convert/upload.
Are my images kept private?
Your images are only processed to generate the output you asked for. Images can be held in temporary memory/storage for at most 24 hours for debugging, then are permanently deleted. Your images are never used to train public AI models.
How is it different from other image-to-design tools?
image.to.design rebuilds the image you give it: there is no prompt to write, and it doesn’t generate a new design loosely based on it. In Quick, Quality and Max, text comes back as editable text, photos as separate image layers, and icons are matched against icon libraries and redrawn as vectors when nothing matches. The same conversion gives Figma layers or HTML. It runs as a Figma plugin (also in FigJam and Figma Slides), as a web tool that doesn’t need Figma, and through an API.
Support
Need a hand, hit a bug, or have an image that doesn’t convert the way you expect? Email us at [email protected]. Attaching the image (or a screenshot of the result) helps us help you faster.