How to Send a Website Screenshot to Figma
Capture a webpage as editable Figma layers or import a flat screenshot, with steps, limits, troubleshooting, and an automated ScreenshotNeo workflow.

Short answer: choose the Figma Chrome extension when you need a webpage converted into editable design layers. Choose a normal screenshot when you only need a flat visual reference. The extension captures a full page or selected element, copies the result to your clipboard, and lets you paste it into a Figma Design file or FigJam board with Command-V on macOS or Ctrl-V on Windows/Linux. A regular PNG, JPG, WebP, HEIC, GIF, or TIFF file can be pasted, dragged onto the canvas, or imported as an image.
This guide explains both workflows, how to prepare a page, what Figma can and cannot reproduce, how to automate captures with ScreenshotNeo, and how to fix the most common failures.
1. Decide which kind of screenshot you need
| Goal | Use | Result in Figma |
|---|---|---|
| Inspect, redesign, or annotate page structure | Figma Chrome extension | Editable design layers when the page can be translated cleanly |
| Keep an exact visual reference | Browser or operating-system screenshot | One rectangle layer with the screenshot as an image fill |
| Capture a page in a repeatable build or script | Screenshot API, then import the returned image | Flat image asset; automation handles URLs and options |
The extension is the closer fit for UI exploration because it reads webpage code and can carry over some auto layout properties, font properties, and variables. A conventional screenshot preserves pixels but does not turn buttons, text, or cards into separate editable objects.

2. Capture a webpage as editable Figma layers
Step 1: Open the page in Chrome
Navigate to the public webpage you want to capture. The extension cannot capture Chrome internal pages and other privileged browser pages. If the page requires a login, keep the authenticated tab open and confirm that your organization permits the capture.
Step 2: Open the Figma Chrome extension
Open the extension toolbar from Chrome’s browser toolbar or use the shortcut configured for your installation. Figma’s documented flow provides two useful modes:
- Select element: move over the page and choose one region, such as a hero, card, navigation bar, or button.
- Capture page: capture the full document, including content that is below the current viewport and must be scrolled into view.
Step 3: Capture the smallest useful scope
Use a selected element when you need a reliable result from a complex application. Use a full-page capture for a mostly static marketing page or a page whose structure you want to study from top to bottom. Capture only what you need: smaller selections are easier to edit and make failures easier to diagnose.
Step 4: Paste into Figma
Open a Figma Design file or FigJam board, click into the destination canvas, and paste:
- macOS: Command-V
- Windows or Linux: Ctrl-V
The latest extension capture is the item Figma pastes. If your file uses variables from another library, add that library before pasting so Figma can attempt to match variable bindings.
Step 5: Check the imported layers
Review text, fonts, spacing, auto layout, images, and variables. Treat the result as a starting point for design work: a browser’s runtime layout is not guaranteed to map perfectly to Figma’s layer model.
Figma documents this extension workflow and its limitations in Turn coded screens into editable design layers.
3. Import a conventional screenshot as an image
Step 1: Save the screenshot
Capture the visible browser window or page with your operating system or browser, then save it as PNG or JPG. WebP, HEIC, GIF, and Safari-only TIFF are also supported by Figma’s image workflow.
Step 2: Confirm edit access
You need can edit access to add an image to a Figma Design file. View-only access is not enough. File owners can also restrict copying and sharing.
Step 3: Add the image
Figma supports several routes:
- Copy the image to the clipboard, click an empty area of the canvas, and paste it.
- Drag the saved file from your computer onto the canvas.
- Use Place image/video.
- Apply the file through an image fill control.
- Import PNG or JPG through the file browser.
When you paste with the canvas deselected, Figma creates a rectangle layer with the image applied as a fill. If an object is selected, the pasted image can replace that object’s existing fill instead.
See Figma’s documentation for adding images and videos, copying and pasting objects, and file imports.
4. Prepare the webpage for a cleaner capture
- Wait for fonts, images, and client-rendered content to finish loading.
- Dismiss cookie dialogs and newsletter popups before using the extension.
- Stop carousels, videos, and scroll-triggered animations when possible.
- For virtualized lists, scroll through the needed area before capturing, or capture a single element.
- Set the browser viewport to the width your Figma frame should represent.
- Capture one component separately if the page uses a canvas, WebGL, or a large application shell.
Figma warns that complex scroll-driven or canvas-rendered sites may capture imperfectly. A focused element capture is the documented workaround to try when a full-page result is wrong.
5. What happens to very large screenshots?
Figma scales an image proportionally when either its width or height exceeds 4,096 pixels, so the longest dimension is reduced to at most 4,096 pixels. Resizing can remove some metadata. This matters for very long full-page captures and high-density exports. If exact pixel dimensions matter, keep an original file outside Figma and use the Figma asset as a working reference.
6. Automate the capture, then import it into Figma
For recurring design reviews, visual QA, or a list of URLs, an API avoids repeating browser actions. ScreenshotNeo returns PNG, JPEG, WebP, or PDF from one GET request. It supports full-page capture with lazy images loaded, CSS element selection, dark mode, device presets or custom viewports, retina scale, custom CSS and JavaScript, click actions, selector or network-idle waits, request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, caching, signed links, asynchronous jobs, bulk capture, and a usage API. The ScreenshotNeo documentation lists all parameters.
cURL
curl -G "https://api.screenshotneo.com/v1/shot" \
-d access_key=YOUR_API_KEY \
--data-urlencode url=https://stripe.com \
-o shot.webp
Python
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
Node.js
const q = new URLSearchParams({
access_key: 'YOUR_API_KEY',
url: 'https://stripe.com'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const bytes = new Uint8Array(await res.arrayBuffer());
await Bun.write('shot.webp', bytes);
Replace the URL with your target page, download the result, and drag the file onto a Figma canvas. For a PNG or JPEG, request the corresponding output format; for a document workflow, request PDF and place pages according to your review process.
7. Or skip the browser setup
ScreenshotNeo handles the capture before you open Figma:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Cookie banners, newsletter popups, and chat widgets are removed before the shot. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing result. Its MCP server lets Claude, Cursor, and other MCP clients take screenshots with take_screenshot, inspect pages with get_page_info, and create PDFs with capture_pdf. The Free plan includes 1,000 screenshots each month with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.
8. Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Paste does nothing | Figma canvas is not focused | Click inside the canvas, deselect objects, then paste again. Recapture if another capture replaced the clipboard item. |
| Only the visible viewport appears | Element mode or a normal OS screenshot was used | Choose Capture page in the extension for content below the fold. |
| Layers are scrambled | Canvas rendering, animation, or complex scrolling | Pause motion and capture a smaller element. A flat screenshot may be more faithful. |
| Text uses the wrong font | Font is unavailable or mapped differently | Install or enable the required font, then inspect and replace the text style in Figma. |
| Upload is rejected | No edit permission or unsupported route | Request can-edit access and use PNG, JPG, WebP, HEIC, GIF, or supported TIFF import. |
| Image looks smaller than expected | One dimension exceeded 4,096 pixels | Keep the original outside Figma; use the scaled Figma copy for layout work. |
| API response is not an image | Invalid key, URL, or a failed page load | Check the HTTP status and response headers, verify the URL, and inspect ScreenshotNeo’s page verdict. |
| Dynamic content is missing | Capture started before rendering completed | Use a selector wait, delay, or network-idle wait; load lazy images before capture. |
9. Reliability, performance, and cost considerations
Extension workflow
Manual capture is fastest for a one-off page, but results depend on the current browser state: cookies, viewport width, logged-in session, network speed, animations, and loaded fonts. Repeatable reviews should record the URL, viewport, date, and whether the page was captured as a full page or element.
Image import
PNG is useful for sharp UI text and transparency; JPG is smaller for photographic pages; WebP can reduce transfer size when your team accepts that format. Keep source files in versioned storage if the Figma file may resize them.
API workflow
Use caching with a chosen TTL for unchanged pages, block unnecessary ads or trackers, and select the smallest viewport and output dimensions that meet your review need. For many URLs, bulk capture supports up to 100 URLs per call. Async jobs with signed webhooks avoid holding a request open for slow pages. Store API keys server-side and use custom headers, cookies, or authorization only where you have permission to access the page.
10. Recommended workflow checklist
- Decide whether you need editable layers or a flat image.
- Confirm Chrome and Figma access, including edit permission for image uploads.
- Remove overlays and wait for dynamic content.
- Capture an element first when the page is complex.
- Click the Figma canvas before pasting.
- Check the 4,096-pixel scaling limit on large assets.
- For repeatable work, automate with ScreenshotNeo and document viewport, waits, and output format.
FAQ
Can I send a screenshot directly from my clipboard to Figma?
Yes. Click an empty canvas area and paste. Figma creates an image rectangle when you paste a conventional screenshot.
Will a normal screenshot become editable layers?
No. It remains a flat image. Use the Chrome extension when you need webpage content translated into design layers.
Can I capture a private page?
The extension can work in an authenticated browser session if the page is accessible there. For API captures, provide authorized headers or cookies only when you are permitted to access the content.
Why should I capture an element instead of the whole page?
Element capture reduces the amount of dynamic content and scrolling the tool must interpret, which helps on complex, animated, canvas-rendered, or virtualized pages.
Does Figma preserve every CSS rule?
No. The extension can carry over some auto layout, font, and variable information, but browser rendering features may not map exactly to Figma layers.


