svgo
Last updated
Was this helpful?
Last updated
Was this helpful?
english | русский
SVG Optimizer is a Nodejs-based tool for optimizing SVG vector graphics files.
SVG files, especially those exported from various editors, usually contain a lot of redundant and useless information. This can include editor metadata, comments, hidden elements, default or non-optimal values and other stuff that can be safely removed or converted without affecting the SVG rendering result.
SVGO has a plugin-based architecture, so almost every optimization is a separate plugin.
Today we have:
cleanup attributes from newlines, trailing, and repeating spaces
enabled
move and merge styles from <style>
elements to element style
attributes
enabled
remove doctype declaration
enabled
remove XML processing instructions
enabled
remove comments
enabled
remove <metadata>
enabled
remove <title>
enabled
remove <desc>
enabled
remove elements of <defs>
without id
enabled
removes xmlns
attribute (for inline svg)
disabled
remove editors namespaces, elements, and attributes
enabled
remove empty attributes
enabled
remove hidden elements
enabled
remove empty Text elements
enabled
remove empty Container elements
enabled
remove viewBox
attribute when possible
enabled
remove or cleanup enable-background
attribute when possible
enabled
enabled
convert styles into attributes
enabled
convert colors (from rgb()
to #rrggbb
, from #rrggbb
to #rgb
)
enabled
convert Path data to relative or absolute (whichever is shorter), convert one segment to another, trim useless delimiters, smart rounding, and much more
enabled
collapse multiple transforms into one, convert matrices to the short aliases, and much more
enabled
remove unknown elements content and attributes, remove attrs with default values
enabled
remove non-inheritable group's "presentation" attributes
enabled
remove useless stroke
and fill
attrs
enabled
remove unused namespaces declaration
enabled
prefix IDs and classes with the SVG filename or an arbitrary string
disabled
remove unused and minify used IDs
enabled
round numeric values to the fixed precision, remove default px
units
enabled
round numeric values in attributes that take a list of numbers (like viewBox
or enable-background
)
disabled
move elements' attributes to their enclosing group
enabled
move some group attributes to the contained elements
enabled
collapse useless groups
enabled
remove raster images
disabled
merge multiple Paths into one
enabled
convert some basic shapes to <path>
enabled
convert non-eccentric <ellipse>
to <circle>
enabled
sort element attributes for epic readability
disabled
sort children of <defs>
in order to improve compression
enabled
remove width
/height
and add viewBox
if it's missing (opposite to removeViewBox, disable it first)
disabled
remove attributes by pattern
disabled
removes attributes of elements that match a css selector
disabled
remove arbitrary elements by ID or className
disabled
add classnames to an outer <svg>
element
disabled
adds attributes to an outer <svg>
element
disabled
removes elements that are drawn outside of the viewbox
disabled
remove <style>
elements
disabled
remove <script>
elements
disabled
Find duplicated elements and replace them with links
disabled
Want to know how it works and how to write your own plugin? Of course you want to. (동작방법)
with files:
or:
with STDIN / STDOUT:
with folder
or:
with strings:
or even with Data URI base64:
with SVGZ:
from .svgz
to .svg
:
from .svg
to .svgz
:
as a web app – SVGOMG
as a Nodejs module – examples
as a Grunt task – grunt-svgmin
as a Gulp task – gulp-svgmin
as a Mimosa module – mimosa-minify-svg
as an OSX Folder Action – svgo-osx-folder-action
as a webpack loader – image-webpack-loader
as a Telegram Bot – svgo_bot
as a PostCSS plugin – postcss-svgo
as an Inkscape plugin – inkscape-svgo
as a Sketch plugin - svgo-compressor
as macOS app - Image Shrinker
as a Rollup plugin - rollup-plugin-svgo
PayPal: https://www.paypal.me/deepsweet
This software is released under the terms of the MIT license.
Logo by Yegor Bolshakov.
minify <style>
elements content with