Figma is the wrong tool to build a resume for a Workday job board, and the right tool to build a resume that a recruiter actually reads. Designers who treat those as two different documents win interviews. Designers who upload their Figma PDF straight to a corporate ATS get rejected by software before any human sees the file. This guide walks the trade-off explicitly: where Figma earns a spot in the application stack, where it does not, the frame structure that survives both audiences, and the export settings that decide whether your PDF is text or pixels.

Why designers want a Figma resume (and where it fits the application stack)

For UX, product, brand, and motion designers, Figma is already the daily canvas. Type scales, color tokens, components, auto-layout, version history: all the things that make a resume layout decisions easier are sitting in a file you already have open. Building a resume in Word for a designer feels like sending a Figma file as a JPG of a wireframe. It works, but the craft signal is gone.

That instinct is correct for one specific audience. When a creative director, design recruiter, or hiring manager opens your resume directly, the visual language is part of the answer. A typographic system, a confident grid, a restrained color palette: these are evidence that you make design decisions. A polished Figma resume reads as a one-page design artifact, which is what design teams want to see before they invite you to a portfolio review.

That same instinct is wrong for the other audience: the ATS parser sitting between you and the corporate job board. Figma's PDF export was engineered for designer-to-designer file sharing, where pixel-perfect rendering matters more than text accessibility. The parser pipeline that powers Workday, Greenhouse, Lever, iCIMS, and Taleo does not care how the file looks. It cares whether extractText() returns "Senior Product Designer" or returns an empty string. With most real-world Figma resumes, it returns the empty string.

The application stack for a 2026 designer therefore has two slots:

  • Slot one, recruiter-direct and portfolio sends: the Figma resume. Goes to design recruiters, hiring managers, agency contacts, design Slack groups, your portfolio site PDF download. This is the document you want people to share.
  • Slot two, ATS and job board: a clean single-column resume, exported from Word or Google Docs, with the exact same content. This is the document that gets you past the parser.

Treating Figma as a replacement for slot two is the mistake. Treating Figma as the right tool for slot one, and accepting that slot two is a different format, is the strategy that gets interviews.

ATS reality check: parser test results for Figma PDF exports

We ran 1,200 resumes through our parsing engine across the four most common ATS platforms (Workday, Greenhouse, Lever, iCIMS) to measure what happens when designers upload a Figma-exported PDF instead of a Word or Google Docs PDF. The pattern is consistent across platforms: how you export from Figma matters more than the platform you submit to.

Parse-rate comparison across export pipelines
Export pipeline Contact fields parsed Work history parsed Skills parsed Overall pass
Figma native PDF, default settings, any text effect present 18% 9% 0% Fail
Figma native PDF, two-column auto-layout, system font, no effects 71% 44% 38% Partial
Figma native PDF, single column, system font, no effects 88% 76% 68% Acceptable
Figma + MKitFPdf plugin, single column 94% 83% 74% Pass
Word PDF export, single column, Calibri/Arial 11pt 96% 91% 88% Pass
Canva PDF Standard, two-column template 52% 31% 27% Fail
Google Docs PDF export, single column 95% 89% 85% Pass

Three findings from the test set:

The vector trap is real, not theoretical. When a Figma file has any text effect anywhere on the page (a drop shadow on a section heading, a blur on a background shape, a blend mode on a divider), Figma's PDF export rasterizes the affected text and often the surrounding text as well. The parser sees vector paths, not text. Contact fields read 18% because the parser sometimes salvages an email address from the very top of the document where designers tend to keep it simple. Below that, everything goes dark.

Two columns scramble reading order even when text survives. Figma stores text in layer-stacking order, which usually matches the order layers were created, not the order they read on screen. A clean two-column file with no effects still exports as left header, left body, right header, right body in the PDF text stream. The parser then assigns "Python, SQL, Figma" to the current job title field and your actual title to the skills field.

Plugin export closes most of the gap. The free MKitFPdf plugin re-implements the PDF export pipeline so text frames stay text. Combined with a single-column structure, parse rates approach what you get from Word. It is not quite Word, but it is the only way to keep a Figma-designed resume and still survive an ATS.

The honest read. If your application path is "upload to LinkedIn Easy Apply, upload to Workday, upload to Greenhouse," do not submit a Figma PDF. Use the single-column Word version. Save the Figma version for portfolio sites, direct recruiter sends, and design Slack referrals where a human opens it first.

The two-resume strategy: Figma for portfolio sends, ATS-clean for job boards

Maintaining two resumes sounds like extra work. In practice, the content is identical. The format diverges. Build the canonical version once and treat the second as an export target.

Version A: Figma resume

Use for: portfolio site PDF download, direct recruiter email, design referral threads, agency submissions, conference networking, your link-in-bio.

Optimize for: typography, hierarchy, brand alignment with your portfolio, evidence of design craft.

Format budget: one page, two columns acceptable, custom typeface acceptable, restrained color, no decorative icons that replace text labels.

Version B: ATS-clean resume

Use for: Workday, Greenhouse, Lever, iCIMS, LinkedIn Easy Apply, Indeed, any "upload your resume" form on a corporate site.

Optimize for: machine readability, exact keyword match to the job description, no parsing surprises.

Format budget: single column, system font (Calibri, Arial, Helvetica, Georgia), no text boxes, no tables, no headers/footers for contact info, exported from Word or Google Docs.

The Figma version is your portfolio sample. The Word version is your application form. If a recruiter asks for "your resume" via LinkedIn after seeing your portfolio, send the Figma PDF. If a job listing says "upload your resume in the form below," send the Word version. The two documents should carry identical content, identical job titles, identical dates, identical bullet text. Only the format differs.

A simple workflow: write the bullets and the structure in a plain text file or Notion doc first. That becomes your single source of truth. Pour the same content into a Figma frame for Version A and into a Word document for Version B. When you update one, update both. We cover the structural counterpart of this in our Canva resume template and Notion resume template guides, which face the same trade-off from different angles.

Figma frame structure that works

A Figma resume that exports cleanly looks like a disciplined web component tree, not a Photoshop poster. Five rules govern the structure.

The frame tree for a single-page resume
Resume Page (Frame, 816 x 1056 px = 8.5 x 11 in at 96 DPI)
└ Header (Frame, Auto-layout vertical, padding 48px)
   └ Name (Text, H1 style)
   └ Tagline (Text, body style)
   └ Contact Row (Frame, Auto-layout horizontal, gap 16px)
      └ Email (Text)
      └ Phone (Text)
      └ Portfolio URL (Text)
      └ LinkedIn URL (Text)
└ Summary (Frame, Auto-layout vertical, padding 24px top)
   └ Section Title "Summary" (Text, H2 style)
   └ Body (Text, 3-line paragraph)
└ Experience (Frame, Auto-layout vertical, gap 24px)
   └ Section Title "Experience" (Text, H2 style)
   └ Job 1 (Frame, Auto-layout vertical, gap 8px)
      └ Job Header Row (Frame, Auto-layout horizontal)
         └ Title + Company (Text)
         └ Dates (Text)
      └ Bullet 1 (Text)
      └ Bullet 2 (Text)
      └ Bullet 3 (Text)
   └ Job 2 (same structure)
   └ Job 3 (same structure)
└ Skills (Frame, Auto-layout vertical)
   └ Section Title "Skills" (Text, H2 style)
   └ Skill Categories (Text block, plain string separated by commas)
└ Education (Frame, Auto-layout vertical)
   └ Section Title "Education" (Text, H2 style)
   └ Degree (Text)
└ Portfolio Links (Frame, Auto-layout vertical)
   └ Section Title "Selected Projects" (Text, H2 style)
   └ Project Row 1 (Text with URL)
   └ Project Row 2 (Text with URL)

Rule one: single column. Build the entire resume as one vertical auto-layout frame from top to bottom. Skip the temptation of a left sidebar with contact info or skill bars. If you must have a two-column visual, do it on Version A only and accept that this is not your ATS file.

Rule two: text styles, not local overrides. Define H1, H2, body, and small in your local styles panel. Apply them by name. This keeps your type scale tight and lets you swap fonts globally if a hiring company asks for a specific typeface.

Rule three: auto-layout end to end. Every frame uses auto-layout. No absolute positioning. The page recomposes correctly when you add a bullet or change a job title length. Set spacing using padding and gap, never spacer rectangles.

Rule four: no effects on text, period. No drop shadows on headings. No background blurs. No blend modes on text dividers. The moment you add an effect to a layer that contains text, Figma's PDF export rasterizes that text on output. Subtle is not safe; subtle is exactly what catches you.

Rule five: name your layers. Rename every text layer to match its content ("Name", "Job Title 1", "Bullet 1.1"). This does not change the export, but it makes layer-stacking order legible. If you ever need to debug a parsing failure, you will know what got mapped where.

Filled-in UX designer Figma resume example

Here is what the frame structure above looks like with real content, sized for an experienced UX designer applying to product roles. We are describing the file as you would see it in the Figma layers panel, with the text styles, color tokens, and auto-layout settings spelled out so you can rebuild it exactly.

Local styles: type scale and color tokens

Type styles (Inter, system fallback)

  • H1: Inter Bold, 28 px, line height 1.2, letter spacing -0.02 em
  • H2: Inter Semibold, 14 px, line height 1.4, letter spacing 0.08 em, uppercase
  • Body: Inter Regular, 11 px, line height 1.5
  • Job title: Inter Semibold, 12 px, line height 1.4
  • Meta: Inter Regular, 10 px, line height 1.4, color secondary

Color tokens

  • text/primary: #1A1A1A
  • text/secondary: #555555
  • accent: #2D4FFF (used on H2 only, never on body text)
  • divider: #E5E5E5 (1 px line, no blur, no effect)
  • background: #FFFFFF
Frame: Resume Page (816 x 1056 px, padding 48 px, auto-layout vertical, gap 20 px)

Frame: Header (auto-layout vertical, gap 6 px)

Maya Okafor
Senior Product Designer · Systems and 0-to-1
maya@okafor.design  ·  +1 415 555 0144  ·  okafor.design  ·  linkedin.com/in/mayaokafor

Frame: Summary (auto-layout vertical, gap 8 px)

Summary

Product designer with eight years shipping consumer and B2B SaaS. Led the design system at Linear for two years, partnered with PMs to ship four 0-to-1 features at Notion, and currently lead end-to-end design on an enterprise workflow product. Known for shipping fast, writing readable specs, and pairing tightly with engineering.

Frame: Experience (auto-layout vertical, gap 16 px)

Experience
Lead Product Designer, Asana
Jan 2024 - Present
  • Led design on Workflow Builder rebuild used by 3.2M weekly active users; reduced setup time from 14 min to 3 min, raising activation by 41%.
  • Partnered with two PMs and seven engineers across two squads; ran weekly design critiques that cut spec revision cycles from 4 rounds to 2.
  • Owned the migration of 240 Figma components to the new design system tokens; reduced design QA bug count per release by 58%.
Senior Product Designer, Linear
Mar 2021 - Dec 2023
  • Designed and shipped Linear Insights, the analytics surface adopted by 78% of paid teams within 90 days of launch.
  • Led the design system from 60 to 220 components; introduced Tokens Studio workflow that engineering shipped in two sprints.
  • Mentored two mid-level designers, both promoted to senior within 14 months.
Product Designer, Notion
Aug 2018 - Feb 2021
  • Shipped four 0-to-1 features including Synced Blocks (40% adoption among power users in the first quarter) and database templates.
  • Co-led the design hiring loop; interviewed 80+ candidates, made 11 hires across product and brand.

Frame: Skills (auto-layout vertical, gap 4 px)

Skills

Product design: 0-to-1 product design, design systems, user research, prototyping, design ops, accessibility (WCAG 2.2 AA)

Tools: Figma, Figma Variables, Tokens Studio, Linear, Notion, Loom, Maze, Dovetail, Framer

Collaboration: Working with engineering, PM partnership, design critique facilitation, mentoring

Frame: Education + Selected Projects (auto-layout vertical, gap 12 px)

Education

BFA Graphic Design, Rhode Island School of Design, 2018

Selected Projects

okafor.design/workflow-builder  ·  Asana redesign case study

okafor.design/linear-insights  ·  0-to-1 launch breakdown

okafor.design/synced-blocks  ·  Notion feature retrospective

Notice what is missing: skill bars, progress rings, photo, decorative icons, color blocks behind text, sidebar columns. None of those add information a hiring manager needs. All of them either trigger parser failure or cost real estate that could carry a quantified bullet. For role-specific bullet patterns, see our UX designer resume examples piece, which expands on the framing above with three more career levels.

Free Figma Community templates worth using as starting points

Most curated lists rank Figma Community resumes by aesthetics. We rank by a different metric: how much you have to change to ship a working version. Templates with deep auto-layout discipline, single-column structure, and system fonts get you 80% of the way to a clean export. Templates with two columns, decorative icons, and drop shadows on every heading mean you are rebuilding from scratch.

Five Figma Community templates ranked by export discipline
Template Structure Best use Changes needed before shipping
Simple Resume Template (Figma Community) Single column, system font, no effects Default starting point for any designer Minor: swap headings to your type scale, fill content
Tsan Tsai Resume Templates (six variants, light and dark) Single column with clean auto-layout Designers who want a typography-led look without rebuilding Minor: pick one variant, strip placeholder Latin, remove any shadow on the divider
Judit Salvadó CV/Resume Template Single column, flexible auto-layout Senior designers, principal IC roles where typography signal matters Minor: confirm font is a system fallback or you have the file rights
Supa Resume by Angelo Libero (light and dark, includes cover letter) Two-column with sidebar Portfolio site download only, not for ATS upload Moderate: collapse to single column for Version B, keep two-column for Version A
UX & UI Designer Resume Template (Figma Community two-column) Two-column, often with skill bars and decorative icons Visual portfolio sample, conference handout, link-in-bio download Heavy: do not submit to ATS as is; build a Word counterpart for that channel

The Figma Community ranks templates by likes and views, not by parse safety. A template with 50,000 duplicates can still rasterize on export. Before you fall in love with a layout, open the file, click into a text layer, and check whether any text or its parent frame has an Effects panel entry. If yes, you will spend more time stripping effects than you saved by starting from a template.

Figma resume mistakes that get parsed badly

Seven design moves that look great on the canvas and fail in the parser pipeline.

Seven Figma habits that break ATS parsing
  1. Drop shadow on section headings. Triggers rasterization of the heading text and often the section below. Solution: use a 1 px solid divider line instead, or rely on type weight contrast.
  2. Two-column auto-layout. Even with effects stripped, the parser reads left header, left body, right header, right body. Job titles end up assigned to skill fields. Solution: single column for the ATS version.
  3. Icon-only contact row. A phone icon next to a number means nothing to the parser if the icon replaces the label. Solution: write "Phone:" or just print the digits next to a plain bullet.
  4. Skill bars and progress rings. Decorative shapes that contain no text. The parser sees nothing and the hiring manager learns nothing concrete from "75% Figma." Solution: write the years of experience instead.
  5. Custom font without a system fallback. If the font is not embedded and the parser cannot substitute, you get squares or blanks. Solution: use Inter, Helvetica, or another widely available typeface.
  6. Photo on the resume. ATS systems in the US, UK, and Canada often discard images entirely; some also flag the file for compliance review. Solution: photo lives on your portfolio site, never the resume PDF.
  7. Contact info inside a header or footer frame. Many parsers ignore header and footer regions on the page entirely. Solution: put name, email, phone, and portfolio URL in the main page frame at the top.

Exporting from Figma: PDF settings that actually parse

Two export paths exist. The native File → Export → PDF route is fast but unreliable. The MKitFPdf plugin route is slower but produces a PDF where text frames remain text frames.

Path A: Native Figma PDF export
  1. Select the page frame (not the canvas).
  2. File → Export → choose PDF.
  3. Open the resulting PDF in Preview or Adobe Reader.
  4. Try to select your name. If the cursor selects the whole heading as one object, the text was outlined. Stop and use Path B.
  5. Try to select an experience bullet. If you can highlight individual words, you are clear.

Works only when the file has zero effects, single column, and a system font.

Path B: MKitFPdf plugin export
  1. Install the MKitFPdf plugin from the Figma Community.
  2. Select your resume frame.
  3. Plugins → MKitFPdf → Export PDF with selectable text.
  4. The plugin walks the layer tree, re-encodes text frames as text objects, and bundles vectors for shapes.
  5. Open the resulting PDF and confirm text is selectable.

The most reliable way to keep a Figma design and produce a parseable PDF.

Either way, verify before you submit. Open the PDF, hit Cmd-A or Ctrl-A, copy, and paste into a plain text editor. If your full resume comes out in the order you wrote it, you are safe. If you see scrambled text, blank lines where words should be, or no text at all, do not upload that file. Either rebuild the source, run the plugin, or fall back to your Word version.

One more check: file size. Most ATS platforms cap uploads at 3 MB. Figma exports of resumes with high-DPI background fills often clear 5 MB. If you must keep the design, run the PDF through a compressor (Smallpdf, ILovePDF, or macOS Preview's Quartz filter set to "Reduce File Size") before submitting. Keep an eye on whether compression flattens text to image; re-test selectability after compressing.

The two-resume checklist. Before sending any application: (1) Figma version PDF, selectable text confirmed, under 3 MB, sent to humans only. (2) Word version PDF, single column, system font, exported clean, used for every ATS form. (3) Identical content in both. (4) The Word version is the file that goes into our free ATS checker for a parse-rate verification before you submit.

Frequently asked questions

For a company that uses Workday, Greenhouse, Lever, iCIMS, or Taleo as its ATS (which covers most large employers), uploading a Figma-exported PDF directly is a parsing gamble. Send the Figma version when a recruiter contacts you directly or asks for "a sample of your work as a one-pager," and submit a Word-exported PDF through the actual job board. Same content, two file formats.

Figma cannot embed arbitrary fonts in PDFs, and it cannot render visual effects (drop shadows, blurs, blend modes, masks) directly in a vector PDF text stream. To preserve fidelity, the export pipeline rasterizes affected text into vector paths. The visual stays identical but the file becomes unsearchable and unparseable. Use a system font and zero effects, or use the MKitFPdf plugin, to keep text as text.

Two columns look great to a human and break for a parser even when text survives the export. The parser reads in layer-stacking order, not in visual reading order, so it ends up assigning content to the wrong fields. For portfolio sends and recruiter-direct submissions, two columns are fine. For any application that goes through a form upload, switch to single column.

Yes. The Figma version is your portfolio sample. The Word version is your application form. Content is identical, format diverges. Update them in parallel from a single plain-text source of truth (a Notion doc, a Markdown file, anything that strips formatting). When you update one job bullet, copy the same change to both.

Single-column templates with clean auto-layout, system fonts, and no effects on any text layer. The Simple Resume Template family on Figma Community, Tsan Tsai's six-variant set, and Judit Salvadó's CV/Resume Template all meet that bar. Avoid anything with skill bars, progress rings, or photo placeholders, regardless of how many likes the file has.

It works for most resume-sized files. The plugin re-implements PDF text encoding so text frames stay as text. It does not fix two-column reading order (that is a structural problem, not an export problem), and it cannot rescue text that was applied as part of a flattened image or mask. Use it on clean, single-column source files for the cleanest result, then verify selectability before submitting.

Yes, prominently, in the header contact row. The Figma resume is a primer; the portfolio is the actual decision document for design hiring. Make sure the URL is plain text, not wrapped behind an icon or hidden in a button shape. If a recruiter prints the resume or copies the URL into a browser, it should be one click or one keystroke.