DEV Community

Adobe Rejected My First 100 Vectors. The Fix Was One Setting.

I traced my first hundred vectors wrong.

Not badly. Technically correct. Every file opened, every path closed, nothing corrupted. And Adobe rejected almost all of them anyway, with the same note: jagged edges.

It took me an embarrassingly long time to understand that "jagged edges" was not a quality judgement. It was a literal description of the geometry, and the geometry was my fault.

The trace has a mode, and the default is the wrong one

When you vectorise a bitmap, the tracer decides how to approximate every edge. It has two options:

  • Polygon mode: approximate curves with many short straight line segments.
  • Spline mode: fit actual Bezier curves to the edge.

Polygon mode is faster and it looks fine on a thumbnail. On a circle, it is a polygon with enough sides to pass at small size. Zoom in and the smooth curve is a staircase.

I measured the difference on one of my own files. Polygon mode produced zero curves and 33,520 straight line segments. The same source in spline mode produced 4,088 Bezier curves and 35 line segments.

That is the whole rejection. A marketplace reviewer zooms in, sees a circle built from 33,000 tiny straight lines, and calls it jagged. They are not wrong. I had handed them a staircase and called it a circle.

Switching to spline was a one line change. It was also the single biggest jump in my pass rate.

But spline alone was not enough

Here is the part that took another round of failures.

My source images came from a generative model, which outputs JPEG. JPEG is lossy. Every edge in the image has a soft anti-aliased gradient, a ramp of pixels fading from the shape into the background.

When a tracer sees that gradient, it does not see one edge. It sees two: the start of the ramp and the end of it. So it traces a thin ring around every shape instead of a solid fill. My traced shapes came out hollow, with a faint double outline that only showed up on close inspection.

The fix was to binarise the image before tracing: force every pixel to either fully inside or fully outside, no gradient in between. My pass rate on those assets went from 3 out of 10 to 10 out of 10.

One caveat, and it cost me a batch to learn. Binarising is right for flat one-colour icons and wrong for colour illustrations. Binarise a colour character and you flatten it to a single-colour silhouette. The rule I settled on: binarise flat art, leave colour art alone.

The cleanup step nobody mentions

Even a good spline trace leaves small imprecision. An edge that should be a perfect 90 degree corner comes out at 87.4 degrees. An edge that should be vertical is a fraction off.

There is a pass you can run after tracing that snaps near-axis angles to exactly 0, 45, or 90 degrees. The important detail is that it is lossless at the pixel level. When I diffed before and after, the change was between 0.01 and 0.05 percent of pixels. You get clean geometry and keep the image.

The lesson

Most of my rejections were not an art problem. They were a settings problem dressed up as an art problem.

The tracer has a mode. The input needs pre-processing. The output needs a regularisation pass. None of that is in the prompt, and none of it is in a tutorial that stops at "just vectorise it".

If you are tracing AI art and getting jagged-edge rejections, check the mode first. If the shapes look hollow, fix the input before you touch the settings. And if the corners look almost right, there is a pass for that.

I packaged the exact scripts, the binarisation rules, and the regularisation settings into the Pipeline Starter Kit:

The Pipeline Starter Kit

It runs on a 1 CPU server with no GPU, which is where I built all of this.

Top comments (0)