Converting one vector format to another should be lossless, yet most online converters rasterise the artwork on the way through and hand you an SVG with a picture inside it. That defeats the point. This converter keeps paths as paths.
Vector in, vector out
The parser reads the drawing instructions in your Illustrator file and re-emits them as SVG drawing instructions. A circle stays a circle described by geometry, not a grid of pixels that happens to look like one. Scale the output to a billboard and the edges stay exact.
The practical test is simple: open the exported file in a text editor. You should see <path>elements with coordinate data. A traced or rasterised “SVG” shows one giant <image> tag with base64 in it instead.
Why an .ai file can be read at all
Since Illustrator 9, every .aifile has stored a full PDF representation of the artwork next to Illustrator's own data. This is on by default, which is why a genuine .ai file starts with the bytes %PDF-1.5. The importer reads that representation directly — no reverse engineering and no fragile format sniffing.
Edit before you export
Once the file parses, the artwork opens in an editor with every object still separate. Recolour a shape to match a new brand palette, fix the wording, or delete the artboard background before you export. The SVG is written from what is on screen, so you are not exporting and then re-editing somewhere else.
Where SVG is the wrong target
Be honest about the source material. If the Illustrator file is mostly a placed photograph with a little type over it, the SVG will simply wrap that photograph as an embedded image and be larger than a plain export — use the AI to PNG converter instead. SVG earns its place for logos, icons, illustrations, diagrams, and type-led layouts.
The same conversion in code
This page is built on the public SDK. Because .ai is a PDF container, the importer needs no special case:
import { pdfToJson } from "@polotno/pdf-import";
import { createStore } from "polotno/model/store";
// An .ai file is a PDF container - pass the bytes straight in.
const buffer = await file.arrayBuffer();
const json = await pdfToJson({ pdf: buffer });
const store = createStore({ key: "YOUR_KEY" });
store.loadJSON(json);
await store.waitLoading();
// One SVG per artboard. Inline font embedding writes the font into the
// file, so it renders the same on a machine that lacks it.
const svg = await store.toSVG({
pageId: store.pages[0].id,
fontEmbedding: "inline",
});Full API reference: PDF Import, SVG Import, and the Import & Export overview.
