Text of <https://pic2svg.com/svg-stroke-to-path/>.

# SVG stroke to path online

Convert supported line and Bézier artwork into filled outlines in your browser. Upload, paste or try a sample, then compare and download. Outlining and visual comparison do not require uploading artwork. Initial page and engine files require a connection; conversion works offline after the engine is ready. This page does not start analytics scripts; site analytics loaded on another page may remain active after navigation. The artwork area is masked in session recordings and previews use local blob URLs, but masking does not prove that every other script cannot access input during a connected session. We have not audited every previously loaded script. For confidential artwork, open this page directly, wait for Engine ready, then disconnect before selecting your file.

## Supported artwork

Untransformed SVG paths with M/L/H/V/C/Q/T/Z commands, lines, polylines, polygons and unrounded rectangles. Solid colours, currentColor, fills, ordinary groups and opacity are supported. Caps: butt, round, square. Joins: miter, round, bevel. Maximum 256 KB, 500 elements, 24 nesting levels, 50,000 path characters and 5,000 commands; geometry timeout 10 seconds and output maximum 2 MB.

Transforms, arcs, smooth-cubic S commands, circles, ellipses, rounded rectangles, dashes, zero-length subpaths, text, images, CSS stylesheets, clones, gradients, filters, masks, clips, markers, pathLength, non-scaling strokes and custom paint order are rejected. Use Inkscape Path > Stroke to Path for artwork outside this subset. Object to Path alone does not outline stroke width.

## Check before cutting

Outlining preserves visible stroke width as filled geometry. A closed stroked shape can create outer and inner contours; an open stroke usually becomes one closed boundary. Shapes are not merged and cutting operations are not assigned. Reopen the download in a vector editor and confirm filled paths with closed contours. Compare canvas dimensions and viewBox with your original. Zoom into caps, joins and narrow gaps. Import into your actual cutter software, check size, overlaps and cutting operations, then make a test cut. This tool is not a cut-readiness certificate. Inspect the result with [the SVG cut-file checker](/svg-cut-file-checker/).

Original filled paths remain in the download. An open or zero-area filled source can leave an extra contour even when its fill is invisible; inspect and remove unwanted source contours in your editor. Stroke-only paths marked fill=none and line elements are replaced by their outlines. For fill plus stroke, the original fill path stays below a separate new stroke-outline path; they are not combined or unioned.

## A check on your own file

The original and output render at matching aspect ratios, up to 800 pixels on the longest edge. Ink pixels are the union of pixels with nonzero alpha in either image, including antialiased edges. A differing ink pixel has a premultiplied colour or alpha difference greater than 16 on the 0–255 scale. Download is withheld if 2% or more of ink pixels differ, if the image is blank, or if comparison cannot finish. The resolution limit can hide small changes. The 2% threshold is our screening rule, not an SVG standard or manufacturing tolerance. A passing result can still contain visible or fabrication-relevant defects. This is a visual browser check, not a proof of topology, physical size or cutter compatibility. Keep your original.

Limits are separate: even a file below 256 KB can exceed the element or command limit. The first exceeded limit stops conversion, with no partial download.

## Reproducible fixture results

PathKit WASM 1.0.0 outlines vectors at 16× calculation scale, serializes curves, then returns to original coordinates. The published fixture matrix compares it with oslllo-svg-fixer 6.0.1 at traceResolution 600. It tests the upstream library, not Iconly or 10015's deployed websites. Download [the full measurements](/examples/svg-stroke-to-path/measurements.json). Opaque supported fixtures passed the preset below 2% differing-ink threshold in Chromium, Firefox and WebKit. The matrix also retains failing arc/transform cases: these are unsupported. Simple black line controls worked in both libraries; other inputs exposed edge deviations, changed paint or empty library output. Difference fractions do not mean the same percentage of geometric error. Results include alpha differences, mean premultiplied error, bytes and path-command-letter counts (a complexity proxy, not a node count).

The [runtime fixtures](/examples/svg-stroke-to-path/runtime-fixtures.json) contain 17 supported fixtures run in three engines (51 checks) and 29 rejection fixtures run in three engines (87 checks), covering lines, caps, joins, curves, fills, currentColor and opacity.

## References

- [SVG2 stroke geometry](https://www.w3.org/TR/SVG2/painting.html#StrokeShape)
- [Inkscape path operations](https://inkscape-manuals.readthedocs.io/en/latest/node-operations.html)
- [Tested upstream library](https://github.com/oslllo/svg-fixer)
- [PathKit BSD licence](/vendor/pathkit/LICENSE)
