W3cubDocs

/SVG

<textPath>

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨July 2015⁩.

* Some parts of this feature may have varying levels of support.

The <textPath> SVG element is used to render text along the shape of a <path> element. The text must be enclosed in the <textPath> element and its href attribute is used to reference the desired <path>.

Usage context

Categories Text content element, Text content child element
Permitted content Character data and any number of the following elements, in any order:
Descriptive elements
<a>, <animate>, <discard>, <set>, <tspan>

Attributes

href

The URL to the path or basic shape on which to render the text. If the path attribute is set, href has no effect. Value type: <URL>; Default value: none; Animatable: yes

lengthAdjust

Where length adjustment should be applied to the text: the space between glyphs, or both the space and the glyphs themselves. Value type: spacing | spacingAndGlyphs; Default value: spacing; Animatable: yes

method

Which method to render individual glyphs along the path. Value type: align | stretch; Default value: align; Animatable: yes

path Experimental

The path on which the text should be rendered. Value type: <path_data>; Default value: none; Animatable: yes

side Experimental

Which side of the path the text should be rendered. Value type: left | right; Default value: left; Animatable: yes

spacing

How space between glyphs should be handled. Value type: auto | exact; Default value: exact; Animatable: yes

startOffset

How far the beginning of the text should be offset from the beginning of the path. Value type: <length> | <percentage> | <number>; Default value: 0; Animatable: yes

textLength

The width of the space into which the text will render. Value type: <length> | <percentage> | <number>; Default value: auto; Animatable: yes

DOM Interface

This element implements the SVGTextPathElement interface.

Example

<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
  <!-- to hide the path, it is usually wrapped in a <defs> element -->
  <!-- <defs> -->
  <path
    id="MyPath"
    fill="none"
    stroke="red"
    d="M10,90 Q90,90 90,45 Q90,10 50,10 Q10,10 10,40 Q10,70 45,70 Q70,70 75,50" />
  <!-- </defs> -->

  <text>
    <textPath href="#MyPath">Quick brown fox jumps over the lazy dog.</textPath>
  </text>
</svg>

Specifications

Browser compatibility

Desktop Mobile
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet WebView Android WebView on iOS
textPath 1 12 2 15
3.1Until Safari 6, textPath was not re-rendered when the referenced path was changed dynamically (see bug 15799)
18 4 14
2Until Safari on iOS 6, textPath was not re-rendered when the referenced path was changed dynamically (see bug 15799)
1.0 4.4
2Until WebView on iOS 6, textPath was not re-rendered when the referenced path was changed dynamically (see bug 15799)
fill 1 79 2 15 3.1 18 4 14 2 1.0 4.4 2
href
50Only accepts references to path elements. Basic shapes (rect, circle, ellipse, line, polygon, polyline) won't work.
12 2
37Only accepts references to path elements. Basic shapes (rect, circle, ellipse, line, polygon, polyline) won't work.
12.1Only accepts references to path elements. Basic shapes (rect, circle, ellipse, line, polygon, polyline) won't work.
50Only accepts references to path elements. Basic shapes (rect, circle, ellipse, line, polygon, polyline) won't work.
4
37Only accepts references to path elements. Basic shapes (rect, circle, ellipse, line, polygon, polyline) won't work.
12.2Only accepts references to path elements. Basic shapes (rect, circle, ellipse, line, polygon, polyline) won't work.
5.0Only accepts references to path elements. Basic shapes (rect, circle, ellipse, line, polygon, polyline) won't work.
50Only accepts references to path elements. Basic shapes (rect, circle, ellipse, line, polygon, polyline) won't work.
12.2Only accepts references to path elements. Basic shapes (rect, circle, ellipse, line, polygon, polyline) won't work.
path No No 61 No No No 61 No No No No No
side No No 61 No No No 61 No No No No No
spacing 1 79 20 15 3.1 18 20 14 2 1.0 4.4 2
startOffset 1 12 20 15 3.1 18 20 14 2 1.0 4.4 2
systemLanguage 1 12 12 15 3.1 18 14 14 2 1.0 4.4 2
textLength 1 12 2 15 3.1 18 4 14 2 1.0 4.4 2
xlink_href 1 12 2 15 3.1 18 4 14 2 1.0 4.4 2

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/textPath