Skip to content
Stitch Toolbox

What 226 real embroidery files taught us before launch

We parsed 226 designs against a reference library before shipping the viewer: what disagreed, where the reference itself was wrong, and what it changed in the tools.

3 min read · Published September 12, 2026

A viewer that opens the files in a format specification is easy. A viewer that opens the files people actually have is a different job, because a lot of those files bend the specification and the machines forgive them. Before launch we collected 226 designs across 22 formats: bought designs from three commercial shops, free downloads from hobby sites, output from auto-digitising services, and files exported from Wilcom, Embird, PE-Design, Hatch, Ink/Stitch and mySewnet. Each one was parsed by our readers and by pyembroidery, the open-source reference library, and every stitch compared.

What disagreed

Needle-set commands. U01 and a few PES-derived files carry "select needle N" records. pyembroidery counts them as commands; a machine treats them as a colour change only when the needle actually changes. We now count colour blocks by needle changes, which matches the block count on the machine screen.

Empty colour blocks. Some files carry colour changes with no stitches between them, left behind by software that deleted an object but not its colour stop. Both readers see them; the difference is what to report. We count the non-empty blocks in the viewer and flag the empty ones in the pre-flight check, because a machine stops at every one of them and the operator changes thread for nothing.

One VP3 where the reference was wrong. A design with a block that starts far from the previous block's end. pyembroidery truncates block start positions to whole units of 0.1 mm inside a scaled header field and lands a tenth of a millimetre off. The machine reads the exact position. We matched the machine, kept a note in the test that says the reference disagrees and why, and moved on.

One PHC that nobody opens. A Brother PHC (the format of the older PE-series machines' internal memory) that neither reader could decode. It is in the corpus as a known failure. If you have PHC files that open on your machine, we would like copies.

What we measured

Density is where the guides on this site get their numbers, so we measured rather than quoted. Same-rail spacing on satin columns across the commercial designs: median 0.40 to 0.41 mm, tight around that, in every shop's files. Hobby and auto-digitised files: 0.20 to 0.61 mm, all over the place, and the ones at 0.2 mm are the ones whose owners complain about thread breaks. Those numbers set the pre-flight check's density threshold (six penetrations per mm², two layers stacked) and the lettering tool's satin spacing (0.40 mm).

Stitch lengths: the median file has 0.2 % of its stitches under 0.3 mm, which is the tie-ins. 74 files had more than 1 % and 31 more than 5 %, nearly all of them software test designs and auto-generated artwork rather than shop designs; one auto-generated VP3 was half short stitches. That is the short-stitch finding in the pre-flight check, and it is why the check exists.

What it changed

The writers were tested the other way round: files written here were compared byte for byte with the reference writer's output for the same stitches. DST, EXP, JEF, PES, PEC, XXX, U01 and TBF are identical. VP3 differs only in the block-start positions above, on purpose. The remaining writers (DSB, DSZ) round-trip through our own readers and through the reference.

The viewer runs in your browser and the files never leave it, so we cannot see what fails. If a file does not open, the error message asks you to tell us the format and where it came from; that list decides what we fix next.