Figma Paste From Web vs Screenshot to Design Plugins vs UnHTML in 2026
Figma's own paste turns web images into flat fills. Here's what each path, from screenshot plugins to UnHTML's CSS aware import, actually produces in 2026.
Figma paste from web: what does it actually mean in 2026
Figma has no built in feature that turns a live webpage into editable layers. Paste a link or an image and you get a flat fill, not a frame with real text and vectors. Screenshot to design plugins get closer by capturing a picture of the page, but a picture still isn't the page's own markup. A CSS aware import, the category UnHTML sits in, works differently: it reads the page's actual DOM and stylesheet, so it can rebuild real frames, text, vectors, and, where auto layout applies, the page's own flex or grid structure. Here's what each of the three approaches produces, what each one is honest about missing, and how Figma's own 2026 auto layout update changes the comparison.
| Approach | Input | Output | Auto layout from CSS | Network |
|---|---|---|---|---|
| Figma's own paste | Clipboard image, video, or code | A fill on a frame, not a distinct layer type | No | N/A, local clipboard only |
| Screenshot to design plugins | A screenshot or a pasted link | A flattened image, sometimes OCR'd text | No | Fetches the page or a screenshot service to render it |
| UnHTML | The page's own HTML and CSS, or a self contained file | Real frames, text, vectors, auto layout | Yes, mapped from justify-content, align-items, and gap | Zero requests by default; opt in only |
What Figma's own paste and copy tools actually do
Figma's copy and paste is built for reusing design elements inside Figma, not for capturing a webpage. You can copy and paste objects between pages, files, and frames, and multi-paste applies one or more objects across several frames at once. Bring something in from outside Figma, though, and the options narrow fast: images and video from the clipboard, code in CSS, iOS, or Android formats, and PNG exports of selected objects. Figma's own documentation is explicit that images and video have no dedicated layer type of their own; they're treated as fills. That single fact explains most of the confusion around "pasting a webpage" into Figma. There's no paste from web path that produces a frame you can select, resize with constraints, or apply auto layout to. What lands is a static image sitting on top of whatever frame you pasted it into.
Screenshot to design plugins: what they capture and what they miss
Plugins in Figma's own Community, including tools like Codia AI Design and URL Screenshot, start from a picture of the page rather than its markup. URL Screenshot keeps its job narrow and is honest about it: paste a link, get a screenshot dropped onto the canvas as an image. That output is a fill, the same fills behavior Figma's own copy and paste docs describe for any external image. Codia AI Design goes further, reconstructing shapes and, where it applies OCR, editable text from that screenshot. But the starting point is still a flattened image, not the page's DOM. Pricing for these third party plugins wasn't independently verified as of this writing, so this article doesn't state their cost.
Because the input is a screenshot, none of these plugins can recover the page's actual auto layout. There's no justify-content, no align-items, no gap value to read, since a screenshot carries no CSS at all. What you get instead is a visual approximation: boxes and text positioned to look right at one size, without the underlying structure that made the original page responsive. Fine for a quick reference or a page that can't be crawled. A real limit for anyone who wants an editable design file they can restructure.
How a CSS aware import differs, and why 2026 narrows the gap
A CSS aware import works from the opposite direction. It reads the page's own HTML and stylesheet and maps that structure onto Figma's primitives. UnHTML's approach is to convert a webpage into real frames, text, images, vectors, and auto layout mapped from the page's actual CSS, naming the properties it reads rather than approximating them: justify-content and align-items set the auto layout alignment, and gap sets the spacing between children. The gap property is a shorthand for row-gap and column-gap on flex and grid containers, so an importer that reads it correctly reproduces the same spacing Figma's auto layout would otherwise need by hand.
This comparison gets closer for a specific reason tied to 2026. Figma's own auto layout was updated to mirror CSS flexbox more closely: gap now maps directly to the flexbox gap property, padding is treated as border-box and can't be squeezed below its specified value, and strokes behave like CSS border or outline depending on their position. New frames default to this updated version starting in July 2026, and the manual toggle becomes an Update button, with legacy support ending for new frames in January 2027. Practically, a CSS aware import built on top of the updated auto layout model has less translation work to do than it did a year earlier. The gap it writes and the gap Figma expects are now the same concept.
Pricing and access follow a simple split. UnHTML's free tier imports up to 500 layers per import using absolute position rather than auto layout. The Pro tier, a 39 dollar one time purchase per editor, removes that layer cap and adds the true auto layout conversion described above, plus components and shared text styles. Studio, at 119 dollars one time, covers up to five editors. On the network side, the default is zero requests. Nothing leaves the machine running the import unless you turn on remote asset fetching, which runs sandboxed and only for that one opt in action. The only call the plugin makes on its own is a weekly licence check carrying just the licence key and a Figma user id. Self contained HTML files and web archives need nothing from the outside at all, since they already carry their own assets. You can check current pricing details on the plugin's own page.
Where each approach breaks down
None of the three approaches should be trusted to produce a pixel exact copy, and the honest ones say so plainly rather than hedging. Fonts that aren't installed locally get substituted, commonly to Inter, and a good import report lists every swap so you can fix it before relying on the file. Complex grids can fall back to absolute positioning instead of a full auto layout reconstruction: a reasonable tradeoff, but one that changes how the frame behaves if you resize it later. Dynamic or script rendered content is a limit for any of these tools when the content only appears after JavaScript finishes running on the live page. A self contained HTML file or a web archive capture sidesteps this, since the assets are already baked in at capture time. And the free tier layer cap of 500 per import is specific to a CSS aware importer like UnHTML. Screenshot plugins don't hit the same wall, because they aren't producing individual structural layers to begin with, just a flattened image or a reconstructed approximation of one.
Which path fits the job
Need just a visual reference of a page? Figma's own paste or a screenshot plugin gets you there in seconds, with the tradeoff that what lands is an image, not a structure you can edit like a native Figma frame. Redesigning a site that never had a design file, tearing down a competitor's page to understand its layout, or rebuilding a legacy page section by section is a different job. The DOM and CSS carry information a screenshot can't: the actual spacing, the actual alignment, and, as of 2026, an auto layout model on Figma's side that maps to those CSS values more directly than before. Pick based on what you're actually trying to end up with: a picture to trace over, or a file you can restructure the way you'd restructure the original page's CSS.
Questions
- Does Figma have a built in way to paste a webpage as editable layers?
- No. Figma's own copy and paste supports objects within Figma, plus images, video, and code pasted from outside it, but external images and video are always treated as fills, not as a distinct editable layer type. There is no native feature that turns a live webpage into structured frames, text, and vectors.
- What is the difference between a screenshot to design plugin and a CSS aware import?
- A screenshot to design plugin starts from a flattened image of the page, so it can only approximate shapes and, where it adds OCR, text. A CSS aware import reads the page's actual DOM and stylesheet, so it can reproduce real text layers, vector shapes, and, where auto layout applies, the page's own flex or grid structure.
- Does UnHTML upload the page I am importing?
- By default, no. UnHTML makes zero network requests unless the user explicitly opts into fetching remote assets, and that opt in runs in a sandboxed environment. The only call the plugin makes on its own is a weekly licence check carrying just the licence key and a Figma user id. Self contained HTML files and web archives need nothing from the outside because they already carry their own assets.
- How many layers can UnHTML import for free?
- The free tier imports up to 500 layers per import using absolute positioning. The Pro tier, a 39 dollar one time purchase per editor, removes the layer cap and adds true auto layout conversion mapped from the page's CSS.
- Will an imported page look pixel exact in Figma?
- No tool covered here should be trusted to be pixel exact, and none of them claim it honestly. Fonts that are not installed get substituted, complex grids can fall back to absolute positioning, and any import report that flags these swaps is worth reading before publishing a redesign.