Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 47,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here
svg2vector logo

svg2vector

hellovass-svg2vector

developmentClaude Codeby HelloVass

Summary

Convert SVG to Android VectorDrawable. Drop-in agent-callable replacement for Android Studio's Vector Asset Studio—batch-aware, structured exit codes, ~8ms cold start.

Install to Claude Code

/plugin install svg2vector@hellovass-svg2vector

Run in Claude Code. Add the marketplace first with /plugin marketplace add HelloVass/svg2vector-skills if you haven't already.

README.md

svg2vector

![License: MIT](LICENSE) ![Built on Svg2Vector](https://android.googlesource.com/platform/tools/base/+/refs/heads/mirror-goog-studio-main/sdk-common/src/main/java/com/android/ide/common/vectordrawable/Svg2Vector.java) ![Native binary](#install) ![Cold start](#install)

> English | 中文

> ### The missing SVG → VectorDrawable CLI for Android.

Android Studio's Vector Asset Studio is GUI-only. Google's official

android CLI ships with create, emulator, sdk, skills... but no SVG conversion. So in 2026 you still need to launch a 1 GB IDE and click through dialogs just to turn an icon into a drawable.

svg2vector is the headless, agent-callable CLI that should have shipped: same Svg2Vector algorithm Android Studio uses internally, packaged as a ~24 MB native binary with ~8 ms cold start. Wire it into Claude, agents, scripts, or CI.

| | Vector Asset Studio (AS GUI) | svg2vector | | --------------------- | ---------------------------- | ----------------------------------------- | | Invocation | Mouse clicks | CLI / Claude / agent / CI | | Batch | ✗ one file at a time | ✓ batch -r for an entire directory | | Exit codes | ✗ | ✓ structured 0 / 1 / 2 / 3 | | stdout / stderr split | ✗ | ✓ stdout = success only, stderr = warnings| | Cold start | seconds (IDE startup) | ~8 ms (macOS arm64 native binary) | | Output | Svg2Vector algorithm | same algorithm, byte-identical |

Under the hood it wraps Android's official com.android.ide.common.vectordrawable.Svg2Vector (com.android.tools:sdk-common) — the exact class the Vector Asset Studio GUI runs. Anything the GUI can convert, this CLI can convert, byte-for-byte the same.

---

Install

Option 1 — Claude Code plugin (recommended)

In Claude Code:

/plugin marketplace add HelloVass/svg2vector-skills
/plugin install svg2vector

Once installed:

  • Active: /svg2vector convert <input.svg> slash command
  • Passive: just say `convert all SVGs under ./design/svgs into vectordrawables

and put them in app/src/main/res/drawable/` — the skill auto-activates.

On first use the slash command will offer to install the native binary (~24 MB):

curl -fsSL https://raw.githubusercontent.com/HelloVass/svg2vector-skills/main/install.sh | sh

Option 2 — Plain CLI (no Claude required)

curl -fsSL https://raw.githubusercontent.com/HelloVass/svg2vector-skills/main/install.sh | sh
svg2vector --version

install.sh auto-detects OS and arch (darwin-arm64 / darwin-x86_64 /

linux-x86_64), pulls the matching native binary from GitHub Releases, and drops it at ~/.local/bin/svg2vector.

---

Usage

Convert a single file

svg2vector convert input.svg                  # writes input.xml beside it
svg2vector convert input.svg -o out/icon.xml  # explicit output path

Convert a whole directory

svg2vector batch ./svgs ./drawable
svg2vector batch ./svgs ./drawable -r         # recurse into subdirectories

Help / version

svg2vector --help
svg2vector --version
svg2vector convert --help
svg2vector batch --help

---

Exit codes (this is the API)

| Code | Meaning | | ---- | ------------------------------------------------------------------------- | | 0 | Success, no warnings | | 1 | Fatal: cannot convert, or I/O error | | 2 | Converted with warnings — XML still written, some SVG features dropped| | 3 | Bad CLI arguments |

In batch mode, the process exits with the worst per-file code (max). A single warning anywhere in the batch surfaces as exit 2 overall.

stdout carries success messages only (wrote ..., batch summary like

done: N ok, M warned, K failed). stderr carries errors and "feature X is not supported" warnings. The two streams are deliberately separated so agents can capture them independently.

Agent invocation pattern

out=$(svg2vector convert icon.svg -o icon.xml 2>err.log)
rc=$?
case $rc in
  0) echo "clean: $out" ;;
  2) echo "converted with dropped features (see err.log)" ;;
  *) echo "failed rc=$rc (see err.log)" ;;
esac

---

Supported SVG features

Supported: path / rect / circle / ellipse / line / polygon /

polyline / g (transforms baked into paths) / basic fill / stroke /

opacity / linearGradient / radialGradient / clipPath.

Silently dropped (exit 2 + stderr warning): text / filter / mask /

pattern / image / external <use> / CSS @import / some advanced gradient features.

Figma users — read this

  • ✅ SVGs from Figma's Export panel (literal hex colors): drop straight in.
  • ⚠️ SVGs from Figma's Dev Mode (localhost:3845/assets/...svg) embed

var(--token, fallback) CSS variables. Svg2Vector doesn't resolve those — output strokes / fills become unusable strings. Pre-process:

  sed -E 's/var\(--[^,]+,\s*([^)]+)\)/\1/g' input.svg > clean.svg

---

Acknowledgements

  • The conversion algorithm is Android tooling's

Svg2Vector (com.android.tools:sdk-common).

  • Four of the regression test fixtures are taken from the

Ashung/svg2vectordrawable issue tracker — credit to the upstream community for reporting these bugs over the years.

---

License

MIT

Related plugins

Browse all →