Batch Convert Images to SVG
Drop multiple images, pick an engine (VTracer for color or Potrace for black & white), and download a single ZIP containing every converted SVG. Ideal for vectorizing an icon set of 20 files fast.
Every file in this batch uses the same engine.
About Batch Convert
When you have many images to convert — a 20-icon set, or product thumbnails to ship as SVG — Batch Convert fans N jobs out into the BullMQ queue. Each file is processed in parallel (concurrency 2), with real-time per-file progress tracking.
Once everything is done, the server packages the results with archiver into a single ZIP for download. Source images are deleted as soon as each worker finishes; the ZIP lives for 1 hour. Dozens of uploads and downloads collapsed into one.
- Up to 20 files per batch
- 25MB per file, no hard total limit
- Parallel fan-out via BullMQ
- Live per-file progress
- Single ZIP download
- Original filenames preserved (.svg)
How to batch convert images
- 1
Drop multiple images
Pick files or drop a folder. Duplicates are auto-numbered so the ZIP contains no name collisions.
- 2
Pick a shared engine
Color for full-color images. Mono for black-and-white logos. Mixed? Run two batches.
- 3
Click Convert all
N files → N jobs. You'll see per-file progress live.
- 4
Wait for the batch to finish
Large images take 3-30s, small logos under 5s. A 20-file batch typically takes 2-5 minutes.
- 5
Download the ZIP
Click download — the ZIP contains every .svg using the original filenames.
When to use Batch Convert?
Batch Convert vs converting files one-by-one
Real-world timing for a 20-file 256×256 PNG icon set.
| Criterion | Batch Convert (OneSVG) | One-at-a-time |
|---|---|---|
| Upload actions | 1 (drag-drop all) | 20 (file by file) |
| Download actions | 1 (single ZIP) | 20 |
| Wall-clock total | ~2-5 min | ~15-30 min (operator-paced) |
| Output filenames | Original names preserved | Manual rename |
| Single-file failure | Skip, batch keeps going | Manual retry |
| Progress tracking | Per-file live progress bar | No aggregate view |
| Option consistency | Applied once to the whole batch | Must reset every file |
How does Batch Convert work under the hood?
When you upload 20 files, /api/batch creates 20 independent jobs on the BullMQ 'SVGProcessing' queue, all sharing one batchId (UUID v4). Every job has its own jobId (BullMQ auto-generated numeric ID) and lands in Redis with data: {batchId, batchIndex, type, inputPath, outputPath, options}.
The worker pool runs concurrency=2 (our server is a dual-core i5), so two files trace in parallel at any time. When a worker finishes a job it picks up the next one from the queue. Per-job progress flows through Redis pub/sub to the client; the front-end polls /api/batch/[batchId] every 1.5s to update the UI.
Once every job in a batch hits 'completed' or 'failed', POST /api/batch/[batchId]/zip streams chunks via archiver (Node stream-based ZIP) — never loading all files into memory, so large batches don't OOM. The ZIP contains every successful SVG with its original filename. A cleanup cron runs every 30 minutes and deletes ZIPs older than 1 hour.
Batch Convert FAQ
What's the file limit?
Is it parallel?
Does one failed file break the batch?
Can I mix color and mono in one batch?
Related tools
Color Vectorize (VTracer)
Convert color PNG/JPG to pure SVG with the VTracer algorithm — preserves gradients and fine detail.
Mono Vectorize (Potrace)
Vectorize logos, icons, and black-and-white line art with Potrace — smooth curves, clean paths, minimal size.
SVG Optimizer (SVGO)
Shrink existing SVG files by up to 70% with zero visual loss: strip metadata, round coordinates, merge paths.