Library for working with SVG: importing, validating, parsing, exporting.
99
stars
345
commits
TypeScript
primary language
Sep 11, 2026
updated
This library is a collection of tools for importing, exporting and processing SVG images.
Its main purpose is to convert icon sets and fonts to Iconify JSON collections, but it can be used for other purposes.
First install it by running this command:
npm install @iconify/tools --save
As of version 5, support for CommonJS has been dropped.
If you need to use CommonJS, install version 4: npm install @iconify/tools@cjs.
Functions incuded in Iconify Tools:
See Iconify Tools documentation.
This library is opinionated.
It does not allow the following content in icons:
All limitations listed above are by design.
Iconify Tools library is designed to export icons that are safe to use in any environment and render identically for all users.
The following code example does the following:
currentColor.IconifyJSON icon set.import { promises as fs } from 'fs';
import { importDirectory } from '@iconify/tools/lib/import/directory';
import { cleanupSVG } from '@iconify/tools/lib/svg/cleanup';
import { runSVGO } from '@iconify/tools/lib/optimise/svgo';
import { parseColors, isEmptyColor } from '@iconify/tools/lib/colors/parse';
(async () => {
// Import icons
const iconSet = await importDirectory('svg/test', {
prefix: 'test',
});
// Validate, clean up, fix palette and optimise
iconSet.forEachSync((name, type) => {
if (type !== 'icon') {
return;
}
const svg = iconSet.toSVG(name);
if (!svg) {
// Invalid icon
iconSet.remove(name);
return;
}
// Clean up and optimise icons
try {
cleanupSVG(svg);
parseColors(svg, {
defaultColor: 'currentColor',
callback: (attr, colorStr, color) => {
return !color || isEmptyColor(color)
? colorStr
: 'currentColor';
},
});
runSVGO(svg);
} catch (err) {
// Invalid icon
console.error(`Error parsing ${name}:`, err);
iconSet.remove(name);
return;
}
// Update icon
iconSet.fromSVG(name, svg);
});
// Export as IconifyJSON
const exported = JSON.stringify(iconSet.export(), null, '\t') + '\n';
// Save to file
await fs.writeFile(`output/${iconSet.prefix}.json`, exported, 'utf8');
})();
Full documentation is too big for simple README file. See Iconify Tools documentation for detailed documentation with code samples.
Library is released with MIT license.
© 2021-PRESENT Vjacheslav Trushkin
TypeScript
98.5%
JavaScript
1.1%
Library for working with SVG: importing, validating, parsing, exporting.
99
stars
345
commits
TypeScript
primary language
Sep 11, 2026
updated
This library is a collection of tools for importing, exporting and processing SVG images.
Its main purpose is to convert icon sets and fonts to Iconify JSON collections, but it can be used for other purposes.
First install it by running this command:
npm install @iconify/tools --save
As of version 5, support for CommonJS has been dropped.
If you need to use CommonJS, install version 4: npm install @iconify/tools@cjs.
Functions incuded in Iconify Tools:
See Iconify Tools documentation.
This library is opinionated.
It does not allow the following content in icons:
All limitations listed above are by design.
Iconify Tools library is designed to export icons that are safe to use in any environment and render identically for all users.
The following code example does the following:
currentColor.IconifyJSON icon set.import { promises as fs } from 'fs';
import { importDirectory } from '@iconify/tools/lib/import/directory';
import { cleanupSVG } from '@iconify/tools/lib/svg/cleanup';
import { runSVGO } from '@iconify/tools/lib/optimise/svgo';
import { parseColors, isEmptyColor } from '@iconify/tools/lib/colors/parse';
(async () => {
// Import icons
const iconSet = await importDirectory('svg/test', {
prefix: 'test',
});
// Validate, clean up, fix palette and optimise
iconSet.forEachSync((name, type) => {
if (type !== 'icon') {
return;
}
const svg = iconSet.toSVG(name);
if (!svg) {
// Invalid icon
iconSet.remove(name);
return;
}
// Clean up and optimise icons
try {
cleanupSVG(svg);
parseColors(svg, {
defaultColor: 'currentColor',
callback: (attr, colorStr, color) => {
return !color || isEmptyColor(color)
? colorStr
: 'currentColor';
},
});
runSVGO(svg);
} catch (err) {
// Invalid icon
console.error(`Error parsing ${name}:`, err);
iconSet.remove(name);
return;
}
// Update icon
iconSet.fromSVG(name, svg);
});
// Export as IconifyJSON
const exported = JSON.stringify(iconSet.export(), null, '\t') + '\n';
// Save to file
await fs.writeFile(`output/${iconSet.prefix}.json`, exported, 'utf8');
})();
Full documentation is too big for simple README file. See Iconify Tools documentation for detailed documentation with code samples.
Library is released with MIT license.
© 2021-PRESENT Vjacheslav Trushkin
TypeScript
98.5%
JavaScript
1.1%