SVG Path Editor & Visualizer
See a path’s commands drawn with draggable points, then transform, round and clean them.
Try before you buy.
- Free preview: your path, its points and table in full, the result drawn under a MySmartCoPilot watermark and the first lines of its code; copying and downloads stay locked.
- Locked until you unlock it: download and copy.
- Unlock: Pro pass, ₹179 for 30 days or ₹79 for 1 week, a one-time payment that never renews. Unlock: Pro pass, $5.99 for 30 days or $2.99 for 1 week, a one-time payment that never renews.
Ways to unlock shows how to get the full result.
Printing this result is locked in the free preview.
Your path
Paste or type, or drop an .svg file on this panel. Pasted SVG markup is read for its paths and shapes; nothing is uploaded.
Canvas
Drag a point or a control point. Drag the background to move the view; Ctrl + scroll or a pinch zooms. With the canvas focused, N and P pick the next and the previous point, the arrow keys move it (Shift: 10 times as far, Alt: a tenth), Delete removes its command, + and − zoom and 0 shows everything.
Transform
The transform attribute’s list: translate, scale, rotate, skewX, skewY and matrix. It is baked into the coordinates.
Apply to the path makes the result your path, so you can keep editing it, and resets these settings.
Result
Paste a path, or choose an example.
viewBox and paint
The dashed frame on the canvas. It is written on the SVG and used by Fit inside the viewBox.
Commands
The values as written: lower-case commands are relative to the point before them. Changing a value moves only that point; the points after it stay where they are.
| # | Command | Values | Remove |
|---|
Locked in the free preview. Opens the ways to unlock this result.
Locked in the free preview. Batch runs unlock with a pass.
Locked in the free preview. Query results unlock with a pass.
About the SVG Path Editor & Visualizer
An SVG path’s d attribute packs a whole drawing into one line of letters and numbers: M moves the pen, L, H and V draw straight lines, C, S, Q and T draw Bézier curves, A draws an elliptical arc and Z closes the shape. Paste that data, a <path> element or a whole SVG file, and this editor draws it on a canvas with every point and control handle, lists each command with its values in a table, and lets you drag the points or type exact numbers.
Transform moves, scales, rotates and flips the path, bakes in an SVG transform list, fits it inside the viewBox, reverses its direction or rewrites it with cubic curves only. The result is written out as clean path data: absolute, relative or the shortest mix, rounded to the decimals you choose without the drift that rounding relative numbers one by one causes, as path data, a <path>, an SVG file, a JSX component or a CSS clip-path or offset-path. Everything runs in your browser; nothing is uploaded. Without a pass, the free preview draws the result under a watermark and shows the first lines of its code.
How to use it
- Paste path data into Your path, such as the value of a
dattribute (M5 3h14a2 2 0 0 1 2 2…), a<path>element or a whole SVG file, or open an.svgfile. Choose an Example to try it first. - Drag the points and control points on the canvas, or type values in the Commands table (lower-case commands are relative). Drag the background to move the view; Ctrl + scroll or a pinch zooms.
- Under Transform, move, scale, rotate or flip the path, paste a
transformlist to bake it in, or fit the path inside the viewBox. The result is drawn over your path in the tool’s colour. - Under Result, choose absolute, relative or the shortest commands, the decimals and the layout, then the format: path data, a
<path>, an SVG file, JSX or CSS. - With a Pro pass, Copy or Download the result, or Apply to the path to keep editing it; in the free preview they stay locked.
Examples
m5 3h14a2 2 0 0 1 2 2v10
M5 3H19A2 2 0 0 1 21 5V15
Commands: Absolute. Each point is worked out from the one before it, so every number now stands on its own.
M0 0l0.3333 0 0.3333 0 0.3333 0 · 2 decimals · Relative
m0 0h.33.34.33
Rounding each relative step on its own would write .33 three times and end the line at 0.99. Here the points are rounded first (.33, .67 and 1) and each step is the difference between two of them, so the line ends at 1, the rounded end of the original.
M0 0H10 · Rotate 90° around the origin (0, 0)
M0 0V10
An H that a rotation tilts is written as an L; at exactly 90° it becomes a V.
M0 0A10 10 0 0 1 20 0 · Flip vertically around the origin (0, 0)
M0 0A10 10 0 0 0 20 0
Mirroring flips the arc’s sweep flag, so the curve bulges the mirrored way instead of jumping to the other side.
Common uses
- Fixing or fine-tuning an icon’s path by hand, point by point, before it goes into a design system.
- Moving, scaling or mirroring a path so it fits a 24 × 24 or 16 × 16 icon grid.
- Baking a
transformattribute into the coordinates, so the path can be reused without it. - Shortening path data for inline SVG, CSS
clip-pathand JavaScript animations, or writing it with cubic curves only for libraries that need them. - Reversing a path’s direction for a stroke-drawing animation or a cutting machine.
The path commands
- M x y: move to a point and start a subpath. Pairs after it are straight lines.
- L x y, H x and V y: a straight line, a horizontal one and a vertical one.
- C x1 y1 x2 y2 x y: a cubic Bézier curve with two control points. S x2 y2 x y is a smooth one whose first control point mirrors the previous curve’s second.
- Q x1 y1 x y: a quadratic Bézier curve with one control point. T x y mirrors the previous one’s control point.
- A rx ry rotation large-arc sweep x y: part of an ellipse with radii rx and ry, turned by the rotation; the two flags choose which of the four possible arcs is drawn.
- Z: a straight line back to the start of the subpath.
Upper-case letters take absolute coordinates; lower-case ones are relative to the point before them. A letter may be left out when the same command repeats.
How the transform and the rounding work
- Exact transforms: every point and control point goes through the same matrix, so curves keep their shape. A horizontal or vertical line that the matrix tilts becomes an L; each arc gets the radii and angle of the transformed ellipse, and a mirror flips its sweep flag.
- The order: the transform list first, then flip, scale and rotate around the point you choose, then the move, then the fit inside the viewBox, then the reversal.
- Rounding without drift: points are rounded in absolute coordinates first, and relative numbers are the differences between rounded points, so errors never add up along the path.
- Shortest: each command is written absolute or relative, whichever takes fewer characters. With the options on, straight horizontal and vertical lines become H and V, and curves that mirror the previous control point become S and T.
- Arcs as curves: “Only M, L, C and Z” replaces each arc with cubic curves of at most 90°, as the implementation notes of the SVG specification describe, for programs and animation libraries that cannot read arcs.
Pasting SVG markup
An SVG file or element is read for its <path> elements and its basic shapes (rect, circle, ellipse, line, polyline and polygon), which are turned into path data. With several shapes, pick one in the list. The transform attributes of the shape and its groups go into Apply an SVG transform first, and the root’s viewBox is used. The markup is only read as data: nothing in it is run or loaded.
Reading the canvas
- Squares are the points where commands end; the ring marks where a subpath starts.
- Filled dots are control points, joined to their curve by thin handle lines; dashed rings are the control points that S and T mirror (they move with the curve before them).
- The dashed frame is the viewBox. Your path is drawn in the text colour; once a transform changes it, the result is drawn over it in the tool’s colour and your path turns dashed.
Rules used
- SVG 2: Paths — the path data grammar, the commands and the handling of errors (the path is drawn up to the first error).
- SVG 2: Elliptical arc parameter conversion — arcs from their end points to their centre, and radii that are too small.
- CSS path() function — the syntax of the CSS snippets (a fill rule only in
clip-path).
Limitations
- One path is edited at a time: styles, gradients and the other elements of a pasted SVG are not kept, and nested
<svg>elements and<use>references are not followed. - Path data of up to 2 MB; the Commands table shows 100 commands at a time.
- Lengths and bounds are calculated, not measured by a browser: curves are measured numerically and rounded for display, which can differ from a browser’s own measure in the last decimals.
- CSS
path()reads every number as a pixel, so make the path in the pixel size of the element it is used on. - Arc flags without spaces are valid SVG 2, but a few older programs misread them: leave that option off when you are unsure.
Privacy
On this device: nothing is sent
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
What do I get without a pass?
Without a pass, SVG Path Editor & Visualizer shows your path, its points and table in full, the result drawn under a MySmartCoPilot watermark and the first lines of its code; copying and downloads stay locked. Until you unlock it, the result can’t be downloaded or copied. A Pro, Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.
What is the difference between upper-case and lower-case commands?
Upper-case commands (L 10 20) use absolute coordinates in the viewBox; lower-case ones (l 10 20) are relative: they move from the point where the previous command ended. Relative data is often shorter and easier to move around; absolute data is easier to read. Choose Absolute, Relative or Shortest under Result.
Why does rounding a relative path usually move its end?
Each relative number is a step from the point before it, so rounding each step on its own adds up the errors: three steps of 0.3333 rounded to .33 end at 0.99 instead of 1. This editor rounds the absolute points first and writes the steps between the rounded points, so the path ends where it should.
Can I edit one path inside a whole SVG file?
Yes. Paste or open the file, pick the shape in Shape from your SVG, and its path data is taken into the editor, with the viewBox of the file and the transforms of the shape and its groups. With a Pro pass, copy the result back into your file as a <path>, or download it as a new SVG.
Why did my H or V command become an L?
H and V can only draw horizontal and vertical lines. When a rotation or a skew tilts such a line, it is written as an L to the same end point; at exactly 90° a horizontal line becomes a V, and the other way round.
What does reversing the direction do?
Each subpath is traced the other way round, from its end to its start (a closed one starts at the same point). The drawing looks the same, but stroke animations run the other way, markers swap ends, and with the nonzero fill rule an inner shape traced in the opposite direction of the outer one becomes a hole.
Are my paths uploaded?
No. Parsing, editing, transforming and writing the code all happen in your browser, and files you open are read on your device. Pasted SVG markup is only read as data, never run.