Skip to main content
Thai_Ha_Ngo
New Participant
Nov 9, 2026 6:02 AM UTC

Two ways to level up headline text in Figma: text on path vs. perspective + arc

 

Headline text with a curve and some depth comes up a lot: thumbnails, banners, logo-style titles. Here are two ways to do it in Figma, starting from the same text layer.

Method 1: The usual way (Pen + text on path)

  1. Draw a curve with the Pen tool (P).
  2. Put your text on it with Text on path, then adjust the spacing so the letters sit evenly.
  3. Style it: a gradient fill and a thick outside stroke.
  4. Duplicate (⌘D / Ctrl+D) the text, recolor the copy darker, and offset it behind to fake an extruded edge.
  5. Add a drop shadow for depth.

✅ Pros: Built into Figma, and the text stays live.
⚠️ Cons: The text only follows a flat 2D curve, with no real perspective. The “depth” comes from stacked copies, so changing the word or color means editing several layers. In my recording this took about 2 minutes, and it still looked like a basic arc.

 

Method 2: Free Transform (perspective + arc)

  1. Select the same text layer. Keep the fill, stroke and shadow you already like.
  2. Open Actions (⌘K / Ctrl+K) and run Free Transform.
  3. Distort: drag the corner handles in the preview to skew the text.
  4. Switch to Perspective to give it real depth.
  5. Go to Envelope → Arc and adjust Bend to curve it.
  6. Toggle Vector, then Export. You get a vector layer, so you can still change gradients, strokes or inner shadows afterwards.

✅ Real perspective and a bend together, from one layer, in under a minute. It stays vector and you never leave Figma.
⚠️ The exported result is a vector shape, not editable text. Keep the original text layer next to it if you might change the wording later.

Which one to use?

  • A gentle curve and live text: Method 1 is enough.
  • A title that pops (perspective, a bend, a bold 3D feel): Method 2 gets there faster and looks more polished.

👉 Try it out: https://www.figma.com/community/plugin/1648207154922389186/free-transform