SOLID COLORS / COMMON COORDINATES

Separate SVG
by color.

Turn a plain, solid-color SVG into individual color layers. Keep fills and strokes apart when they use different colors, then download the layers or a combined file.

Local processing · SVG + ZIP

01 / CHECK YOUR VECTOR FILE

Choose a plain SVG.

Read on your device. Up to 1 MiB, 1,000 shapes and 48 colors. Nothing in the file is uploaded.

Needs an explicit viewBox. If width and height are supplied, both must use absolute units and match its aspect ratio.

Supported artwork

Opaque solid fills and strokes on paths, rectangles, circles, ellipses, lines, polylines and polygons. Presentation attributes, simple inline styles, inherited colors and SVG group transforms are preserved.

Export is blocked for scripts, event handlers, links, images, text, stylesheets, defs/use, gradients, patterns, clipping, masks, filters, opacity, hidden objects and unsupported attributes. Nothing is silently dropped to make an export pass.

02 / SELECT COLORS & DOWNLOAD

Your layers appear here.

Separate each detected solid color into an SVG, or combine chosen colors in one file.

Unsupported artwork gets an explanation before a preview or download is created.

Processing and downloads stay in this browser.

An SVG is a drawing, not a ready-to-cut guarantee. This splitter preserves supported geometry; your editor or cutter still controls path interpretation, layer alignment and material settings.

To separate SVG by color, the tool identifies the supported solid fill and stroke paint on each shape and reconstructs a file for each selected color. A red fill and blue stroke contribute to two separate layers even though they belong to one source shape. Equivalent supported paints, such as red, #f00 and rgb(255,0,0), normalize to the same hexadecimal color. The output groups paint contributions; it does not discover semantic objects or infer materials.

Color layer: retain selected fill and stroke paints; replace other paints with none

Common coordinates: every layer retains the source canvas and supported transforms

Physical scale: output width ÷ output viewBox width = source width ÷ source viewBox width

Each exported shape retains its supported path or primitive geometry and drawing order. Stroke width, line joins, dashes and supported transforms remain part of the drawing. Combined SVG keeps several selected colors together. Merged one-color SVG deliberately replaces selected paints with one chosen selected color. Neither operation joins contours, subtracts hidden regions, expands strokes, closes paths or removes overlaps. A drawing that looks like one silhouette can still contain several overlapping paths.

The file needs an explicit positive viewBox. If width and height are supplied, both must use absolute units and their ratio must match the viewBox. With no physical dimensions, the viewBox dimensions become pixel dimensions. A conservative stroke envelope must fit inside the canvas before export, including transformed strokes. Optional registration marks expand the viewBox and physical dimensions together, keeping the original artwork's scale.

Only reconstructed validated shapes enter previews and downloads. This deliberately limited parser rejects unsupported artwork before producing a result rather than guessing how to flatten it.

Keep an editable original, then prepare a plain copy in your vector editor. Convert text to paths so the drawing does not depend on fonts. Expand reusable referenced objects and remove gradients, patterns, clipping, masks, filters and transparency using a workflow whose appearance you can inspect. This tool does not perform those conversions.

Set the canvas to contain every intended shape and its visible stroke. Include the stroke's outer extent, not just the path centerline. Choose explicit physical width and height if size matters, and confirm that their aspect ratio matches the viewBox. Supported absolute root units are px, mm, cm, in, pt and pc. Percentage dimensions, nested viewports and root transforms are unsupported. Move a root transform into a group in your editor if that accurately preserves your drawing.

Choose one local SVG or paste its source, then select Inspect and split. Read any rejection before retrying: unsupported features are not stripped to create an apparently successful file. If inspection succeeds, compare the reconstructed preview with the prepared source. Count fill and stroke contributions separately. White or pale artwork may be difficult to see against the checkerboard, so inspect its layer thumbnail and downloaded file instead of assuming that a faint preview means missing geometry.

Select individual colors for one-layer downloads or a ZIP. Choose combined SVG when several paints should remain in one file. Use merged one-color SVG only when deliberately replacing selected paints; select the intended output color from the selected set. Optional registration crosses appear at identical positions in each export and remain black when paints are merged. They are ordinary stroked paths that may also print or cut.

Finally, import the files into your destination editor without trimming each layer's canvas independently. Check a known physical dimension and align corresponding registration marks. Review open paths, stroke interpretation and overlapping shapes in the actual cutter software. Run a small material test before a full job. A settings link cannot carry the local artwork; another visit requires choosing the source file again.

The table describes this parser's supported subset rather than the complete SVG specification. A valid SVG can be rejected here because its visual result depends on features the splitter does not reproduce. Simplify a copy in your editor and check its appearance there; do not remove an effect merely to silence an error if doing so changes the intended design.

Implemented SVG scope and limits
FeatureSupported scopeBoundary
Source sizeUp to 1 MiBUTF-8 encoded source
ShapesUp to 1000Supported primitives only
ColorsUp to 48Visible solid paints
XML complexity2500 nodes; 32 levelsAll nodes inspected
Path data100,000 characters per path400,000 total characters
Primitive geometryPath, rect, circle, ellipseAlso line, polyline, polygon
Paint syntax#RGB, #RRGGBB, comma rgb()Basic named colors also supported
TransformsMatrix, translate, scale, rotate, skewX / skewYSupported group and shape transforms
TransparencyFully opaque paints onlyOpacity values below 1 rejected

Scripts, event handlers, links, images, foreignObject, stylesheets, defs/use, gradients, masks, patterns and filters are blocked. DTDs, entity declarations and URL references are also rejected. Hidden artwork is not silently discarded. Supported inline styles are limited paint properties; CSS rules, escapes and unsupported attributes fail inspection. Successful reconstruction preserves supported geometry, not the original file's grouping, metadata or every editor-specific attribute.

One shape with two paint colors

Assume a supported rectangle at x 10, y 20, width 30 and height 40, with red fill and blue stroke of width 2. The red layer contains that rectangle geometry with fill #ff0000 and stroke none. The blue layer contains the same rectangle with fill none and stroke #0000ff at width 2. There are two detected colors, one red fill contribution and one blue stroke contribution. Combining both colors reconstructs the supported painted shape in one file. Merging both into red makes both fill and stroke red; it still does not convert the stroke into an outlined path or combine their contours.

A physical canvas with shared scale

Assume a source viewBox of 0 0 200 100, width 100 mm and height 50 mm. Its scale is 100 ÷ 200 = 0.5 mm per user unit in each direction. A 20-unit-wide object therefore spans 10 mm. Splitting colors retains the common 200 × 100 canvas and 100 × 50 mm size when registration marks are off. Importing each layer at its declared size preserves that relationship. Cropping every layer to its individual painted bounds in another application can destroy common positioning, even when each separate object still appears to have a plausible size.

Adding marks to a square canvas

Assume a 100 × 100 viewBox with physical dimensions 100 × 100 mm. The registration formula uses size 1.8, clearance 2.5 and stroke 0.15 user units. The extra canvas margin is 2.5 + 1.8 + 0.15 = 4.45 on each edge. Output viewBox becomes −4.45 −4.45 108.9 108.9, and physical size becomes 108.9 × 108.9 mm. Cross centers are −3.4 and 103.4 along each axis, producing four shared intersections. The original 100 mm artwork remains 100 mm wide. These are formula results for explicit inputs, not a measured registration tolerance or proof of cutter alignment. Keep the expanded canvas in the destination application.

Do not confuse matching paint with matching material or a single cutting path. Two red shapes can overlap or remain disconnected. A red fill covered by a blue object in the original still exists in its separate red layer. When you stack exported layers in a different order, their appearance can change. Inspect the intended assembly, and perform any required Boolean operations in an editor that exposes the resulting contours.

Check whether your cutter interprets strokes as centerlines, outlines or print-only marks. This splitter retains supported strokes rather than expanding them. Registration crosses are black paths, so exclude them from cutting when your production method requires that. Confirm a known measurement after import instead of trusting the visual size of the application window.

Keep a source copy with its original effects and metadata. Reconstructed exports are focused on the supported drawing, not round-trip editing fidelity. If a rejection names an unfamiliar attribute, identify its effect in the originating editor before removing it. Local file processing does not make every site request private: existing page-visit controls still apply, and any settings included in a shared URL can enter browser history or server logs.

01Which drawings can I separate SVG by color here?

Use opaque solid fills and strokes on paths, rectangles, circles, ellipses, lines, polylines and polygons. The file needs an explicit viewBox and matching absolute width and height when dimensions are supplied. Unsupported artwork is rejected before a preview or download is created.

02Why does one object appear in two color layers?

Fill and stroke are separate paints. A shape with red fill and blue stroke contributes its fill to red and its stroke to blue. Geometry and supported stroke settings remain. Equivalent supported color spellings normalize together. A color layer can contain several shapes; it is not automatically one closed contour or one physical part.

03Does merging make a single cut outline?

No. Combined output retains selected colors and original shape order. Merged one-color output deliberately recolors selected fills and strokes. Both retain geometry and overlaps. They do not union paths, subtract hidden regions, expand strokes or close open contours. Complete those operations in your destination editor when the cutting process requires them.

04Why are plain-looking editor exports rejected?

Their appearance may rely on definitions, text, CSS, clipping, transparency or unsupported attributes. Scripts, event handlers, URL references, images, stylesheets, defs/use, gradients, patterns, masks and filters are blocked. Convert or flatten a separate copy in your vector editor, then inspect it there. Removing an unsupported feature can change the design.

05Are files uploaded and is cutter compatibility verified?

Selected SVG content is parsed, reconstructed and downloaded in this browser without uploading the file or loading referenced SVG resources. Site page-visit privacy and analytics controls still apply. A shared link does not include your artwork. Physical scale after import, cut paths, material settings and registration accuracy require checks in your destination software and a small production test.

Format references

SVG defines fill and stroke as separate paints, inherited paint properties, transforms and the viewBox coordinate mapping. This tool supports the conservative subset described above. Its parser and stored ZIP writer are first-party code; this route adds no third-party library or runtime API.