Gets the unit from an svg document. Also returns an explicit parameter which is true if the unit is explicitly set. (otherwise the unit is px, as per the svg standard)
Simulates 2D linear movement along all paths in the svg. This can be used for 2D CNC estimation, for example laser cutting, routing, knife cutting and more.
Option
Type
Description
linearmovement-jerk
Number
An arbitrary unit setting the amount of jerk in the movement. Higher number = less deceleration around tight corners.
linearmovement-mm-per-s
Number
The speed to move along the paths, in mm/s.
linearmovement-drawing-unit
String
Which unit the SVG is drawn in. mm / in / pt / px
linearmovement-path-info
Boolean
If enabled, information about individual paths and path segments are included in the outputs.
Performs a boolean operation on target element(s) using tool element(s).
Keep in mind that this will not work on grouped elements and/or non-path elements. Please run the convert-to-path and ungroup processors on the drawing first.
Option
Type
Description
boolean-operation-operation
String
Which operation to perform. Default is union. union / difference / intersection / exclusion / division / cut-path / combine / break-apart
boolean-operation-tool-paths
String
XPath selector* to define the elements to use as the tool. Default is “//svg:path”.
boolean-operation-target-paths
String
XPath selector* to define the elements to use as the target. Default is “//svg:path”.
* Please note that elements need to be prefixed with svg: to match the SVG namespace. E.g. to select all elements elements with a white-fill style: //svg:path[contains(@style,'#ffffff')
Allows modification of attributes or inline CSS properties on certain elements. This can be used to set fill, stroke and many other parameters. You can also use an existing attribute value to set the new one. (For example, setting an outline to match the fill of a path)
Option
Type
Description
change-attribute-set-attr
String
Which attribute to set. Required.
change-attribute-target-elements
String
Which set of element types to affect, separated with a comma. Required.
change-attribute-to-value
String
What value to set the attribute to.
change-attribute-to-attr-value
String
This can be set to get the value from another attribute on the same element. If this is set, “to-value” is ignored.
change-attribute-to-attr-value-fallback
String
An optional fallback to set the attribute to if the attribute from “to-attr-value” has no value.
change-attribute-override
String
If this is set, the value will always be set. If used in combination with not setting “to-value” or “to-attr-value”, it will remove the attribute.
Converts elements (text*, circle, rectangles, etc.) to paths. If your SVG file is exported from Adobe Illustrator, consider running the fix-illustrator-svg-font-names processor first.
Option
Type
Description
convert-to-path-selector
String
XPath selector** to define which elements to convert. Default is “//svg:*”.
* A selection of open source fonts are compatible. Contact us if you need to convert an unsupported font.
** Please note that elements need to be prefixed with svg: to match the SVG namespace. E.g. to select all elements with a white-fill style: //svg:path[contains(@style,'#ffffff')
XPath selector* to select which path element’s beziers to flatten.
* Please note that elements need to be prefixed with svg: to match the SVG namespace. E.g. to select all elements elements with a white-fill style: //svg:path[contains(@style,'#ffffff')
Attempts a correction of Adobe Illustrator’s incorrectly exported font-family tag attribute/CSS property. For example, it will turn font-family="OpenSans-Bold" into font-family="OpenSans" font-weight="bold".
Ungroups all elements and nested SVG’s recursively. If you require a higher depth than 10, you can make multiple calls.
Option
Type
Description
ungroup-depth
Number
The depth to ungroup, 1 - 10. Default is 10.
ungroup-selector
String
XPath selector* to select certain groups or nested SVG’s. If this is set, “depth” is ignored
* Please note that elements need to be prefixed with svg: to match the SVG namespace. E.g. to select all elements elements with a white-fill style: //svg:path[contains(@style,'#ffffff')
Exclude certain elements with XSLT. This can be used to remove unwanted defs, specific elements and more.
Option
Type
Description
xslt-exclude-xpath
String
The XPath * syntax selector to exclude from the document.
* Please note that elements need to be prefixed with svg: to match the SVG namespace. E.g. to select all elements elements with a white-fill style: //svg:path[contains(@style,'#ffffff')
Vector Express - Free Vector Conversion, Analyzing and Processing API
Recent updates
Read more: https://vector.express/pricing
API Frontend: https://vector.express
Vector Express is a free-to-use API for converting, analyzing and processing vector files. Made with love by @vector_express
It runs a combination of different conversion programs that can be chained together to convert between a wide area of formats.
Feel free to use it in your project. It does not support CORS, so you need to run it through/on a back-end.
💌 Stay updated
You can sign up to our newsletter here to be informed about new features, upcoming changes and deprecations: https://buttondown.email/vector.express
Table of Contents
📦 Libraries
🏃♀️ Quickstart
path
for your input format and desired output format.curl https://vector.express/api/v2/public/convert/dxf/auto/svg/
curl --data-binary @myvector.dxf https://vector.express/api/v2/public/convert/dxf/cadlib/svg/
resultUrl
curl https://vector.express/api/v2/public/files/[id].svg --output converted.svg
🪄 Convert
Get possible conversion paths between formats
By requesting the conversion paths you can find out the most efficient path between your formats.
GET https://vector.express/api/v2/public/convert/ext/auto/ext
Convert a file
You can up chain to three programs in the conversion path, and even configure them. See below for all programs and their options.
POST https://vector.express/api/v2/public/convert/ext/prog1/ext/prog2/ext?prog1-opt=val&prog2-opt=val
Available converters
/cad2pdf/
A converter for converting dwg and dxf cad files into pdf.
/cad2svg/
A converter for converting dwg and dxf cad files into svg.
/cadlib/
Custom CadLib based converter for AutoCAD files.
*1 Arcs and curves are converted to lines
prefer_native_space
/prefer_paper_space
/prefer_model_space
/gs/
Ghostscript based converter.
/hp2xx/
hp2xx based converter for postscript.
/libcdr/
libcdr based converter for CorelDRAW files.
/librsvg/
librsvg based converter for converting svg files to various formats.
/pdf2svg/
pdf2svg based converter for pdf files to svg.
/pstoedit/
pstoedit for converting eps files to dxf.
/svg2cad/
For converting svg files into dxf or dwg cad files.
R32
/R27
/R24
/R21
/R18
/R15
/R14
/svgo/
SVGO is an svg optimizer.
/uniconvertor/
Uniconvertor based converter for various formats.
🔍 Analyze
Analyze a file
You can analyze vector files using this endpoint. The result is always a json file. The analyzers can be configured through the query string.
POST https://vector.express/api/v2/public/analyze/ext/analyzer
POST https://vector.express/api/v2/public/analyze/ext/analyzer1?analyzer-opt1=val&analyzer-opt2=val
Available analyzers
/svg/get-svg-unit/
Gets the unit from an svg document. Also returns an
explicit
parameter which is true if the unit is explicitly set. (otherwise the unit is px, as per the svg standard)/svg/groups/
Returns a list of all groups in an svg.
/svg/linearmovement/
Simulates 2D linear movement along all paths in the svg. This can be used for 2D CNC estimation, for example laser cutting, routing, knife cutting and more.
mm
/in
/pt
/px
⚙️ Process
Process a file
You can process vector files using this endpoint. The processors can be configured through the query string.
POST https://vector.express/api/v2/public/process/ext/processor
POST https://vector.express/api/v2/public/process/ext/processor?processor-opt1=val&processor-opt2=val
Available processors
/svg/boolean-operation/
Performs a boolean operation on target element(s) using tool element(s).
Keep in mind that this will not work on grouped elements and/or non-path elements. Please run the
convert-to-path
andungroup
processors on the drawing first.union
.union
/difference
/intersection
/exclusion
/division
/cut-path
/combine
/break-apart
* Please note that elements need to be prefixed with
svg:
to match the SVG namespace. E.g. to select all elements elements with a white-fill style://svg:path[contains(@style,'#ffffff')
/svg/change-attribute/
Allows modification of attributes or inline CSS properties on certain elements. This can be used to set fill, stroke and many other parameters. You can also use an existing attribute value to set the new one. (For example, setting an outline to match the fill of a path)
/svg/convert-to-path/
Converts elements (text*, circle, rectangles, etc.) to paths. If your SVG file is exported from Adobe Illustrator, consider running the fix-illustrator-svg-font-names processor first.
* A selection of open source fonts are compatible. Contact us if you need to convert an unsupported font.
** Please note that elements need to be prefixed with
svg:
to match the SVG namespace. E.g. to select all elements with a white-fill style://svg:path[contains(@style,'#ffffff')
/svg/exclude-groups/
Excludes certain groups from an SVG.
/svg/flatten-beziers/
Flattens beziers curves into straight lines.
* Please note that elements need to be prefixed with
svg:
to match the SVG namespace. E.g. to select all elements elements with a white-fill style://svg:path[contains(@style,'#ffffff')
/svg/fix-illustrator-svg-font-names/
Attempts a correction of Adobe Illustrator’s incorrectly exported font-family tag attribute/CSS property. For example, it will turn
font-family="OpenSans-Bold"
intofont-family="OpenSans" font-weight="bold"
.This is required for the convert-to-path processor to work.
/svg/include-only-groups/
Includes only certain groups from an SVG.
/svg/ungroup/
Ungroups all elements and nested SVG’s recursively. If you require a higher depth than 10, you can make multiple calls.
* Please note that elements need to be prefixed with
svg:
to match the SVG namespace. E.g. to select all elements elements with a white-fill style://svg:path[contains(@style,'#ffffff')
/svg/xpath/
Returns a section of an SVG file using the XPath syntax.
/svg/xslt/
Exclude certain elements with XSLT. This can be used to remove unwanted defs, specific elements and more.
* Please note that elements need to be prefixed with
svg:
to match the SVG namespace. E.g. to select all elements elements with a white-fill style://svg:path[contains(@style,'#ffffff')
📄 Get a file
After getting the result you can retrieve your files here.
GET https://vector.express/api/v2/public/files/filename.ext
📨 Using an existing file
You can also use an already uploaded or resulting file through the
use-file
query string.POST https://vector.express/api/v2/public/convert/ext/prog1/ext/prog2?use-file=filename.ext
🛑 Limits
Currently the public API is limited to 5 requests per hour, and a maximum output filesize of 1 MiB and certain CPU and memory limitations.
🔼 Increase limits?
We offer a pay-as-you go plan that removes the rate limit and increases maximum file to 40 MiB.
💡 Feature request?
Get in touch with us and we’ll see what we can do!
🙊 Feedback
Feel free to open up an issue, or just tweet at us @vector_express.