Convert SVGs into clean components.
Multi-framework SVG-to-component generator with batch folder-to-library mode. React, Vue, Svelte, Solid — strips Figma/Sketch export junk, fixes ID collisions, generates a tree-shakable icon library with package.json and README. Runs entirely in your browser.
One paste, four frameworks React, Vue, Svelte, Solid — same input |
Output you can ship TypeScript, Tailwind, a11y, forwardRef |
A folder in. A library out. Drop a zip, get a tree-shakable package |
Click any thumbnail to open the live tool. Animated demos play on the landing page at vectorio.app.
Most tools give you a single React component. Vectorio gives you four frameworks, a real cleanup pass, and a whole library.
Design exports come with production noise — vendor namespaces, data-* attrs, duplicate gradient IDs, hard-coded dimensions, fills that should be currentColor. Vectorio is the place to inspect, clean, convert, share, and package those files before they enter your repo.
Use it when you need to:
.zipSkip it when: you already have an SVGR pipeline locked into your repo and the conversion rules are settled. Vectorio is for the before state.
color, size, strokeWidth (toggle each)decorative / labeled / noneforwardRef, memo, default exports, prefix / suffix.zip → preview every icon in a galleryArrow from outline/ and solid/ become ArrowOutline / ArrowSolid)index, package.json, and READMExmlns:sketch, xmlns:figma), data-* attrs, commentsurl(#a) → url(#prefix-a)) so gradients, masks, clipPaths don't collide on a multi-icon pagecolor prop so the palette stays intactwidth / height become props instead of being inlinedThe fastest path is the live app — no install:
To run it locally:
git clone https://github.com/berkinduz/vectorio.git
cd vectorio
npm install
npm run dev
Build for production:
npm run build
Run all checks:
npm run lint
npm test
npm run build
npm run smoke
Vite · React 19 · JSZip · Vanilla CSS · No backend
The whole app is a static SPA. SVG parsing, cleanup, code generation, share-link encoding, and zip packaging all happen in the browser.
<animate> tags)Bug reports, feature requests, and PRs welcome. The fastest path:
npm run lint && npm test && npm run build && npm run smoke before pushingMIT © Berkin Düz
If Vectorio saved you time, you can buy me a coffee ☕