#polyline #svg #robotics


Convert SVG data to a list of polylines (aka polygonal chains or polygonal paths)

12 releases (7 breaking)

0.8.1 Aug 28, 2022
0.7.0 Jun 21, 2022
0.6.0 Sep 13, 2021
0.5.2 Aug 11, 2019
0.4.0 Jun 25, 2017

#980 in Algorithms

Download history 85/week @ 2024-02-26 62/week @ 2024-03-04 42/week @ 2024-03-11 111/week @ 2024-03-18 101/week @ 2024-03-25 69/week @ 2024-04-01 39/week @ 2024-04-08 28/week @ 2024-04-15 10/week @ 2024-04-22 23/week @ 2024-04-29 53/week @ 2024-05-06 22/week @ 2024-05-13 19/week @ 2024-05-20 14/week @ 2024-05-27 305/week @ 2024-06-10

339 downloads per month
Used in spiropath




CircleCI Crates.io

Convert SVG data to a list of polylines (aka polygonal chains or polygonal paths).

This can be used e.g. for simple drawing robot that just support drawing straight lines and liftoff / drop pen commands.

Flattening of Bézier curves is done using the Lyon library. SVG files are preprocessed / simplified using usvg.

Note: Currently the path style is completely ignored. Only the path itself is returned.


There is a small preview tool to view the generated polylines. It's simple and hacky, but helps to debug stuff.

cargo run --release --example preview path/to/file.svg

The --release parameter is important, otherwise it's going to be very slow.

Use the mouse to drag / zoom the image and the Esc key to close the window.

Usage: Rust


fn svg2polylines::parse(svg: &str, tol: f64, preprocess: bool) -> Result<Vec<Polyline>, String>;

See examples/basic.rs for a full usage example.


This crate used to contain FFI bindings. These have been dropped as of version 0.8.0. If you need them, open an issue on GitHub and I might bring them back.


Licensed under either of


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


~125K SLoC