Output Options

We have tried to make the output options as self-explanatory as possible, but here are all the gory details:

Vector Image

The vector images we produce are made up of shapes, which are made up of non-self-intersecting loops. Loops are sequences of curves where each curve starts where the last one leaves off, and where the last curve ends where the first one started. We produce lines, circular & elliptical arcs, and quadratic & cubic Bézier curves.

Shapes always have exactly one 'positive' loop, which defines the area that should be filled by the shape's color. In some cases, shapes may also have 'negative' loops, which represent cut-outs that should not be filled with the shape's color. Negative loops must be fully enclosed by the shape's positive loop and must not touch each other.

Shape with Hole
Vector Image Shape
=
Positive Loop
Positive Loop
+
Negative Loop
Negative Loop
No Centerline Tracing

For input images that contain line drawings or other stroked geometry, such as CAD drawings, charts, technical diagrams, and the like, it is natural to expect that we would produce stroked geometry as output. This style of vectorizing is called a centerline tracing. We do not currently support centerline tracing, so all stroked geometry gets represented as narrow filled shapes.

Please note that the Stroke Style section is for styling the strokes of the paths that make up the filled shapes. It is unrelated to centerline tracing.

Stroke Width
Stroke Geometry
Gap Filler

When two shapes in a vector image are right next to each other such that their boundaries are exactly coincident, many vector rendering engines will nevertheless draw them in such a way that a narrow white line shows through between them. This is a defect in those rendering engines, but one that is so common that it does not appear to be going away any time soon.

We have designed what we are calling the Gap Filler to work around this problem. It works by drawing a narrow line underneath the boundary between the two shapes and with a color that is the average of the shapes' two colors. This prevents the background from showing through and effectively solves the problem.

Result
Result
=
Shapes over Strokes
Shapes Strokes
(hover me!)
Non-Scaling Strokes

Strokes that are drawn at a constant width regardless of the zoom level are called non-scaling strokes. This feature has full support in SVG and our PNG vector rasterizer, and partial support in EPS, PDF, and DXF.

SVG supports arbitrary non-scaling stroke widths and enjoys widespread support among SVG viewers and editors except Adobe Illustrator, where the non-scaling style is ignored and the stroke scales with the zoom level. Our PNG vector rasterizer also has full support for non-scaling strokes.

Both EPS and PDF only support non-scaling strokes of an unspecified minimal display width, which is generally understood to be a pixel wide or narrower. Adobe officially discourages their use and tests with Illustrator 2023 show significant defects in their handling of this styling.

DXF also supports non-scaling strokes of a minimum display width, and this is a very common stroke style in DXF files.

In general we recommend using non-scaling strokes only for SVG, DXF and PNG.

Stroke at 100% Zoom
(baseline)
Regular Stroke at 400% Zoom
(stroke width grows by 4×)
Non-Scaling Stroke at 400% Zoom
(stroke width stays the same)
Draw Order & Layers

Vector Images consist of shapes that are drawn in a particular order, usually the order in which they appear in the file defining the vector image.

Some shapes can have their draw order changed without altering the appearance of the vector image. For example, consider two separate dots on a rectangle. The rectangle must be drawn before the dots, but either dot can be drawn before the other without affecting the appearance of the vector image.

Any such set of shapes whose internal reordering does not alter the appearance of the image can be on the same Layer. The Layers must be drawn in order, but the shapes within a Layer can be reordered or put into groups without changing the appearance of the image.

Result
Result
=
Layers
Layer 2 Layer 1 Layer 0
(hover me!)

File Format ⇧ Top

We support a variety of export file formats, but not all formats support all features.

SVG
Widely used for both print and web, SVG is a common interchange format, and is well supported by all major web browsers. SVG itself supports the full range of our export options, but not all SVG readers do.
SVG Version ⇧ Top
SVG 1.0 and 1.1

SVG 1.1 is by far the most common version of SVG in use, but for the purposes of our output files, it only differs from SVG 1.0 in its header.

Neither of them formally support non-scaling strokes, which were introduced in SVG Tiny 1.2 and are part of the as yet unreleased SVG 2.0 specification. In practice, non-scaling strokes are supported in most major viewers and editors, so we allow them in all of our SVG output.

SVG Tiny 1.2
SVG Tiny 1.2 is a subset of SVG 1.1 combined with a few features from SVG 2.0. It is intended for use on mobile devices. For the purposes of our output, this means it does not support clipping paths, but does formally support non-scaling strokes. While it is widely viewable in browsers, in most circumstances it is not thought to have any advantages over a file with the same content but a header of SVG 1.1.
SVG Options ⇧ Top
Fixed Size
SVG files can be either fixed size or scalable, as determined by whether the width and height attributes are specified in the main SVG tag. When those attributes are specified, the SVG is of fixed size, and SVG viewers such as browsers will render them at that size unless otherwise styled. When they are not specified, the SVG is scalable, and SVG viewers will render them to fill the available space in the containing element.
Adobe Compatibility Mode
Adobe Illustrator supports importing SVG files, but does not support all aspects of the SVG files that we generate. Rather than ask customers to carefully select those options that will make the SVG output most compatible with Illustrator, we have added this catch-all option to optimize the output for use with Illustrator.
EPS

Encapsulated Postscript (EPS) is a legacy format created by Adobe and primarily used for printing. It lacks support for grouping and transparency, and has limited support for non-scaling strokes.

We currently export EPS version 3, which is the most common version in use.

PDF

Adobe's Portable Document Format (PDF) is primarily used as an interchange format for documents, but also contains a reasonably full-featured vector graphics capability. PDF does not support grouping and has limited support for non-scaling strokes.

We export PDF version 1.4, the earliest version that supports transparency.

DXF

AutoCAD's Drawing Exchange Format (DXF) is a widely used CAD interchange file format. While the DXF specification supports layers (groups), and all available curve types, support among DXF readers varies considerably.

We export DXF version AC1021 (2007).

DXF Compatibility Level ⇧ Top
Lines Only
All curves are flattened to lines to maximize compatibility with downstream applications.
Lines & Arcs
Lines and arcs (circular and elliptical) are both allowed, but splines (quadratic and cubic Bézier curves) are not. Should work in most CAD applications, and has been confirmed to work with LibreCAD.
Lines, Arcs & Splines
All curve types are included. This output has been confirmed to work with Autodesk's TrueView 2024.
PNG

Portable Network Graphics (PNG) is a raster image format that supports transparency. PNG is a bitmap format, not a vector format, but we support exporting to it because it is so commonly used for the kind of images that we produce.

Right now, we do not support arbitrary scaling factors. The PNG output we produce is exactly 4x as wide and tall as the input image, up to a cap of 4 megapixels. These limitations will be removed in the future.

Draw Style ⇧ Top

The vectorization process produces a set of paths that define the shapes present in the image. It is most natural to fill those shapes with their respective colors such that the resulting image looks much the same as the bitmap input, but with sharper boundaries and the ability to be scaled without degradation.

But some applications are more interested in the paths themselves, in which case it might make more sense to stroke the shapes, or the boundaries between the shapes.

Fill Shapes
Fill the internal area of each shape with its specified color.
Fill Shapes
Fill Shapes
Stroke Shapes

Stroke all of the shape's curves exactly as if you were filling them, but with a draw style defined by the Stroke Style rather than the implicit fill style.

If two shapes touch, the edge between them will be stroked twice: once for each shape.

Cut-outs always produce two strokes per edge. Stacked shapes produce one stroke between a shape and those fully contained by it, and two strokes between neighboring shapes where neither contains the other.

Stroke Shapes
(default color)
Stroke shapes with natural color
Stroke Shapes
(override color: black)
Stroke shapes with override color
Stroke Edges

Stroke all the edges between shapes once.

In contrast to Stroke Shapes, which typically strokes each edge twice (once for each flanking shape), this Draw Style strokes each edge between shapes only once.

This is useful for laser engraving, vinyl cutting, and the like.

Stroke Edges
(default color)
Stroke edges with natural color
Stroke Edges
(override color: black)
Stroke edges with override color

Shape Stacking ⇧ Top

The shapes of a vector image can be thought of as being either stacked on top of each other, or as being cut out of each other. We can produce either kind.

Cut-outs

Place shapes in cut-outs in the shapes below. This means that all the shapes form a single layer, with no shape being on top of another.

This simplifies the Gap Filler feature because it allows all the Gap Filler strokes to be placed in a single layer below all the shapes. However, more Gap Filler strokes will be necessary since they're needed when shapes are next to each other and touching, as opposed to when one shape is on top of another.

It also causes a larger file because the curves specifying the cut-outs must be included.

Depending on the image and your preferences, this may also make it easier or harder to edit the result in a vector editor. In particular, cut-outs make it easier to separate one component of the image from another because the visual shape of each component does not rely on any other component that might be stacked on top of it. Conversely, if the intention is to keep all the parts of the image together, cut-outs make it harder to edit the precise shape of a component because editing a shape will require making corresponding edits to the cut-out in which it sits.

Result
Result
=
Cut-Outs
Cut-outs Layer 2 Cut-outs Layer 1 Cut-outs Layer 0
(hover me!)
Stacked

Place shapes on top of each other. Think of a multi-layered cake where the smaller tiers are stacked on top of the larger ones.

This option typically minimizes the file size and the number of Gap Filler strokes. But it complicates the Gap Filler feature because the Gap Filler strokes must be interleaved between the shapes for which they are needed and the shape that contains them. This has the additional side effect of sometimes causing little bits of the Gap Filler strokes to stick out beyond the shapes for which they are intended. We can solve this problem by using non-scaling strokes, or by clipping the Gap Filler strokes. We recommend using non-scaling strokes whenever possible.

Stacked shapes also makes editing the boundary between a shape and the shape below it easier, because that boundary is not duplicated in the cut-out. But it can make it harder to separate out one component of the image, since the visual appearance of each shape depends on the shapes that are stacked on top of it.

Result
Result
=
Stacked
Stacked Layer 2 Stacked Layer 1 Stacked Layer 0
(hover me!)

Group By ⇧ Top

Vector file formats such as SVG support collecting multiple shapes into groups. Such groups are primarily useful for organizational purposes and to facilitate easier editing, by allowing changes to all shapes within a group to be made at once.

SVG has full support for groups. Neither EPS nor PDF support groups. DXF supports layers, which are similar to groups.

This section controls how shapes are grouped together.

None
Do not group shapes at all; each shape is on its own.
Color

Group shapes by the color of their fill.

When the Shape Stacking mode is Cut-outs, all the shapes of a given color will form a single group.

When the Shape Stacking mode is Stacked, it is usually not possible to group all shapes of a given color together, as all parts of a group must occupy the same position in the vector image's draw order. For this reason, in Stacked images, we group only the shapes of a given color that occupy the same Layer together.

Result
Result
=
Group by Color
Layer 3 Layer 2 Layer 1 Layer 0
(hover me!)
Parent

Group together all shapes that have the same parent.

If a shape is fully contained by another shape, then we consider the outer shape to be the Parent of the inner shape. All shapes that are not fully contained by another shape have the vector image itself as parent and are grouped together.

Result
Result
=
Group by Parent
Layer 3 Layer 2 Layer 1 Layer 0
(hover me!)
Layer

Group shapes together according to their draw order Layer.

Draw order Layers are groups of shapes whose internal draw order can be freely reordered without altering the appearance of the image.

Result
Result
=
Group by Layer
Layer 2 Layer 1 Layer 0
(hover me!)

Parameterized Shapes ⇧ Top

We support special identification of certain parameterized shapes such as circles, ellipses, rectangles, isosceles triangles, and stars, all with arbitrary rotation angles and corner radii. Fitting these common shapes produces shapes with perfect geometry and consistent treatment of the corners. Some export formats have native support for some of these shapes, and we take advantage of that to make the resulting files easier to edit.

Flatten
Flatten all parameterized shapes to ordinary curves, even if the export format provides native support for them.
Circle
r(x, y)
Ellipse
abθ(x, y)
Rectangle
rabθ(x, y)
Isosceles Triangle
r(x, y)bhθ
Star: N=3
rrᵢrₒθ
Star: N=4
rrᵢrₒθ
Star: N=5
rrᵢrₒθ
Star: N=6
rrᵢrₒθ
D-Shape
r₀r₁r₂θab

Allowed Curve Types ⇧ Top

We offer fine-grained control over which types of curves may be exported. Each file format and some other options also have their own restrictions on which curve types are allowed, and the most restrictive options are always used.

Line
Quadratic Bézier
Cubic Bézier
Circular Arc
Elliptical Arc
Quadratic Bézier Curves

Supported by SVG, DXF, and our PNG vector rasterizer, Quadratic Bézier Curves are defined by two endpoints and a single control point. The curve's tangent direction at an endpoint is always parallel to the line connecting that endpoint to the control point.

If Quadratic Bézier Curves are disabled, we fall back on Cubic Bézier Curves, Elliptical Arcs, and Lines, in that order.

Cubic Bézier Curves

Supported by all export formats, Cubic Bézier Curves are defined by two endpoints and two control points. The curve's tangent direction at an endpoint is always parallel to the line connecting that endpoint to its corresponding control point.

If Cubic Bézier Curves are disabled, we fall back on Lines.

Circular Arcs

Supported by SVG, DXF, and our PNG vector rasterizer, Circular Arcs are defined by a center, a radius, a start angle, and a sweep angle.

If Circular Arcs are disabled, we fall back on Elliptical Arcs, Cubic Bézier Curves, and Lines, in that order.

Elliptical Arcs

Supported by SVG, DXF, and our PNG vector rasterizer, Elliptical Arcs are defined by a center, major and minor axes, a rotation angle, a start angle, and a sweep angle.

If Elliptical Arcs are disabled, we fall back on Cubic Bézier Curves, and Lines, in that order.

Line Fit Tolerance ⇧ Top

In the event that any curves must be converted to one or more line segments, this section offers control over the quality of the fit.

Coarse
Allows for a maximum distance of 0.30px between the original curve and the line segments.
Medium
Maximum distance: 0.1px
Fine
Maximum distance: 0.03px
Super Fine
Maximum distance: 0.01px
Maximum Distance (Red)

Gap Filler ⇧ Top

As noted above, a nearly ubiquitous defect in vector image rasterization engines is that the background color is allowed to show through between shapes that touch each other, even when no actual gap exists in the underlying geometry. This typically shows as thin white lines slicing the result into puzzle pieces.

To address this issue you can enable Gap Filling, which places small strokes behind and between touching shapes, using the average color of the two shapes in question. This prevents the background from showing through.

Fill Gaps
Enable gap filling.
Clip Overflow
Clip the Gap Filler strokes to prevent the end caps of the strokes from sticking out from behind the shapes. When the Shape Stacking mode is set to Stacked, the Gap Filler strokes are interleaved between the various draw order Layers of the image. This can cause the Gap Filler strokes to stick out beyond the extent of the shapes for which they are intended. You can either clip this overflow, or use non-scaling strokes to solve this problem.
Non-Scaling Strokes
Use non-scaling strokes for the Gap Filler strokes. Along with the Clip Overflow option, this is one of two possible solutions to the problem of Gap Filler strokes sticking out beyond the extent of the shapes for which they are intended. For file formats with good support for non-scaling strokes, such as SVG, this is the preferred solution.
Stroke Width
The stroke width of the Gap Filler strokes, in pixels. A stroke width of 1.5px to 2px is usually sufficient to fully cover the gaps.
Result
Result
=
Shapes over Strokes
Shapes Strokes
(hover me!)

Stroke Style ⇧ Top

When the Draw Style is set to Stroke Shapes or Stroke Edges, this section controls the style of the strokes.

Non-Scaling Strokes
Use non-scaling strokes to the extent that the export format permits.
Use Override Color
Use the Override Color for the stroke color. By default, paths are stroked with the color of the underlying entity, which depends on the Draw Style. When Stroking Shapes, the color is the color of each shape. When Stroking Edges, the color is the average of the two shapes that share the edge. This option replaces those colors with the Override Color specified in this section.
Override Color
The color used to Stroke Shapes or Edges when Use Override Color is enabled.
Stroke Width
The stroke width of the strokes in pixels.
Get API Key