convert-svg-core

The core Node.js package for converting SVG into other formats using headless Chromium that
contains the shared logic for all converters to support programmatic use. This package is not intended to be used
directly to convert SVGs and, instead, provides core support for SVG conversion.
Install
If you are looking to install an out-of-the-box SVG converter, check out our converter packages below:
https://github.com/neocotic/convert-svg
Alternatively, if you know what you're doing, you can install using npm:
npm install --save convert-svg-core
You'll need to have at least Node.js v22 or newer.
If you're looking to create a converter for a new format, we'd urge you to consider contributing to this framework so
that it can be easily integrated and maintained. Read the Contributors section for information on how
you can contribute.
Implementation
To create a new SVG converter that uses convert-svg-core
, you'll need to create a new subdirectory for your package
under the packages directory. Try to follow the
convert-svg-to-<FORMAT>
naming convention for the converter package name.
Take a look at the other packages in this directory to set up the new package directory. They are all very similar, by
design, as you should just need to provide the minimal amount of information required to support your intended output
format.
Since this package only uses puppeteer-core
, a Chromium instance must be provided and connected by the end user (e.g.
using puppeteer
to get an executable path).
Testing
Testing your SVG converter actually works is just as important as implementing it. Since convert-svg-core
contains a
lot of the conversion logic, a
convert-svg-core-test package is
available to make testing implementations even easier. Again, take a look at the tests for existing SVG converters under
the packages directory for examples.
Environment
This package supports the use of a CONVERT_SVG_LAUNCH_OPTIONS
environment variable to act as a base for the launch
option passed to the Converter
constructor. This can make it easier to control the browser launch/connection. For
example;
export CONVERT_SVG_LAUNCH_OPTIONS='{"browser": "firefox", "executablePath": "/Applications/Firefox.app/Contents/MacOS/firefox"}'
Bugs
If you have any problems with this package or would like to see changes currently in development, you can do so
here.
Contributors
If you want to contribute, you're a legend! Information on how you can do so can be found in
CONTRIBUTING.md. We want your suggestions and pull
requests!
A list of all contributors can be found in AUTHORS.md.
License
Copyright © 2025 neocotic
See LICENSE.md for more information on our MIT license.
Version 0.7.1, 2025.06.17
- Allow
import('puppeteer').executablePath
to be passed directly in launch
options to allow other launch options to
be passed to it as a function
- Document supported
CONVERT_SVG_*
environment variables
- Document potential issues with reduced quality on macOS
- Add Docker support for running the test suite on a Linux-based image
- Bump all dependencies to latest versions