How to get a Webflow, Framer or WordPress site into Figma
Three builders, one method. What they publish is an ordinary web page, and an ordinary web page is what html2figma reads.
To get a Webflow, Framer or WordPress site into Figma, open the published page in Chrome or Edge, scroll to the bottom so everything has loaded, then save it with File → Save Page As → Webpage, Single File. Run the html2figma plugin in Figma and drop the saved .mhtml on it. The page arrives as native frames, real text, Auto Layout, components and variables. You don't need access to the builder project, only to the page.
Why one method covers all three
Webflow, Framer and WordPress store your site in very different ways: a visual project, a canvas, a database plus a theme. But what each of them publishes is the same thing, which is HTML and CSS that a browser lays out.
html2figma works from that end result. It renders the page in a real browser engine, reads every element's final geometry and computed style, and rebuilds that as Figma nodes. It never looks at the builder's project file and never re-interprets the CSS. So the method doesn't change by builder, and you don't need an editor seat, an export plan or the client's login. If you can open the page, you can import it.
Step 1 — let the page finish rendering
The save captures the page as it is at that moment. Builder sites tend to load things late, so spend thirty seconds getting it into the state you want before saving.
- Scroll to the bottom, slowly. Lazy-loaded images and sections that fade in on scroll only appear once they've been on screen. Anything that hasn't appeared won't be in the file.
- Load the content you want. CMS lists with a "Load more" button or pagination only include what's currently on the page. Click through first if you need more items.
- Close cookie banners and popups. If an overlay is open when you save, expect it in the import.
- Set any tab, accordion or slider to the state you want in the design. You'll get that state.
Staging works the same way. A Webflow staging domain, a Framer preview link or a WordPress site behind a password or a VPN is fine: your browser is already signed in, so whatever you can see, you can save.
Step 2 — save the page as a single file
In Chrome or Edge: File → Save Page As… → Webpage, Single File. You get one .mhtml with the HTML, CSS and images packed inside it. If you prefer, save as Webpage, Complete and zip the .html together with its asset folder. The general website guide covers both options in more detail.
A bare .html on its own. It has no folder to resolve relative paths against, so the page imports with its structure intact and its images missing.
Step 3 — drop it on the plugin and pick viewports
In any Figma file, run html2figma, drop the saved file on it, tick any combination of Desktop, Laptop, Tablet and Mobile, and import. Each viewport is rendered separately and placed side by side, with the site's media queries genuinely applied. Builder sites are usually responsive already, so this gives you the breakpoints you built in one run, and a row that stacks on mobile imports as a vertical Auto Layout frame there.
Notes per builder
Webflow
CMS collection lists come in as whatever the page showed when you saved it, so load the items you need first. Interactions don't come across yet: the page's JavaScript never runs inside the plugin, and prototype interactions, hover states and transitions aren't imported yet. You get each element in the state it was in at save time. If something animates in on page load and imports invisible or offset, scroll past it, wait for the animation to finish, and save again.
Framer
The same applies to appear and scroll animations: save after they've played. Framer sites often use fonts you may not have installed. Fonts map to the closest font installed in Figma, with Inter as the fallback, so install the site's typefaces in Figma before importing if the type matters.
WordPress
The theme, and any page builder on top of it, produce rendered HTML and CSS, so the plugin treats them the same. Sliders, tabs and accordions driven by plugins come in as their saved state. Heavy sites with lots of lazy-loaded media are where the scroll-first step matters most.
The page generates its CSS with a script at load time, and the plugin never runs page scripts. Saving from the browser after the page has rendered usually fixes it, because the save includes what was rendered. The runtime-CSS section of the AI HTML guide explains the trap and the fixes.
What arrives in Figma
- Components from repeated blocks. Builder sites repeat a lot: CMS cards, blog rows, team members, nav items. Repeated blocks are detected by structure and rebuilt as one component with instances, each keeping its own text and images.
- Variables and Text Styles. Colours used more than once become Figma Variables in a new collection named after the import, with names like
Slate 900rather than hex codes. Repeated typography becomes Text Styles. Nothing already in your Figma file is read, reused or modified. - Auto Layout where it's proven. The plugin proposes a stack, replays it, and keeps it only if every child lands within a pixel of where the browser put it. Otherwise the layer stays absolutely positioned at its real coordinates.
- Real text layers, gradients, per-side borders, per-corner radii, shadows, images and inline SVG as editable vectors, in a layer tree named from roles and content.
Where it falls short today
Being plain about this saves you a wasted afternoon. As of October 2026:
- Paste-a-URL isn't available yet. You save the page first, then drop the file.
- Motion isn't imported yet. Interactions, hover states and transitions from Webflow or Framer don't come across. You get a static, editable snapshot.
- One page per run. A twenty-page site is twenty saves and twenty drops. Batch import isn't available yet; it's earmarked for a future paid tier.
- One way, for now. The conversion currently runs one way, so editing the Figma file doesn't change the site.
If you're moving a site off a builder, redesigning it, or turning it into a design system, a static snapshot of each page is usually exactly what you need to start from. That's the job this does well.
Webflow, Framer and WordPress to Figma: common questions
Do I need access to the Webflow, Framer or WordPress account?
No. The plugin works from the rendered page, not the builder project. Any page you can open in your browser can be saved and imported, including a password-protected staging site once you've signed in.
Can I paste the site URL into html2figma?
Not yet. As of October 2026 the plugin is file-based. Save the page as Webpage, Single File and drop the .mhtml.
Do Webflow interactions or Framer animations come across?
Not yet. The page's JavaScript never runs inside the plugin, and prototype interactions, hover states and transitions aren't imported yet. You get the page as it was when you saved it, as editable layers.
Does CMS content come across?
Whatever the page showed when you saved it comes across, because that's what the browser rendered. Items on later pagination pages or behind a "Load more" button are only included if you loaded them before saving.
Why are my images missing?
Usually one of two things: a bare .html was saved without its asset folder, or images below the fold hadn't lazy-loaded yet. Scroll the whole page, then save as Webpage, Single File. The website guide's troubleshooting section has more.
Is it free?
Importing is free and unlimited today, with no account. Features that don't exist yet, such as direct URL import and batch import, are earmarked for a future paid tier.
html2figma is a free Figma plugin that converts HTML and CSS into editable Figma layers. If a Webflow, Framer or WordPress page imports badly, send it to me. The failure cases are what I fix first.