Machines & formats
Embroidery file formats explained: PES, DST, JEF, EXP, VP3, XXX, HUS and what each one stores
What is inside a stitch file, why DST has no colours, how PES versions differ, what changes when you convert, and which format your machine wants.
5 min read · Published September 8, 2026
An embroidery file is a list of needle positions with a few commands between them: jump here without stitching, stop for a colour change, cut the thread. Everything else, thread names, hoop size, a preview image, is optional and format-specific. Once you know what each format keeps and drops, conversion stops being mysterious.
What every stitch file contains
- Stitches. Positions in 0.1 mm units, almost always stored as a delta from the previous position. A 100 mm design is 1000 units across.
- Jumps. Moves without a needle penetration. Long jumps are broken into pieces because most formats limit one record to about 12.7 mm.
- Colour changes. Stops where the machine waits for you to change thread. In applique the first two "colour changes" are really pauses to lay and trim fabric.
- Trims. Some formats have an explicit trim command; DST signals it with three jumps in a row; JEF relies on the machine's own trim setting.
- End.
What differs between formats is the header: which of these optional fields exist and how colours are represented.
| Format | Machines | Thread colours stored | Trims | Notes |
|---|---|---|---|---|
| PES | Brother, Baby Lock, Bernina (older), Brother ScanNCut reads it | Yes (Brother palette, names in v5+) | Trims and stops | Versions 1–10 share the same PEC stitch block; version 1 is read by every machine. Large hoops need v6+ headers only for PE-Design's own metadata. |
| DST | Tajima, Ricoma, Barudan, Happy, SWF, Melco (reads), most commercial | No (colour stops only) | Trim = 3 jumps | The industrial standard. 0.1 mm relative moves, max 12.1 mm per record; longer moves are split automatically. |
| JEF | Janome, Elna, Kenmore | Yes (Janome chart index) | Trims optional | Colours are chart indices, so the machine shows the nearest Janome thread. Includes hoop-size flags. |
| EXP | Melco, Bernina (also Bernina ART export) | No | Explicit trim | Simple relative format; Bernina pairs it with an INF colour file. |
| VP3 | Husqvarna Viking, Pfaff | Yes (thread names and numbers) | Explicit trim, no jumps | Newer Viking/Pfaff format; long moves are stitched as moves. VP4 is the newer variant. |
| HUS / VIP | Husqvarna Viking and Pfaff (older) | Yes (fixed 29-colour palette) | Explicit trim | Compressed; read-only here. |
| XXX | Singer, Compucon | Yes (RGB table) | Explicit trim | Singer's Futura family. |
| SEW / PCS | Janome/Elna (older) / Pfaff (older) | Yes | Jumps only | Legacy; small hoops. Read-only here. |
| PEC | Brother (embroidery cards) | Yes (Brother palette) | Trim flag on jumps | The stitch block inside every PES file, as a stand-alone file. |
PES
PES is Brother's home-machine format, also read by Baby Lock (a Brother sibling) and older Bernina machines. It comes in versions 1 through 10; the version is the first eight bytes of the file (#PES0001 to #PES0100). Every version contains the same PEC block with the stitches, a 64-colour palette index per block and two small preview bitmaps. That is all the machine reads. Later versions add PE-Design's object data, named threads (from version 5) and a hoop name (from version 9) in front of the PEC block.
Consequences:
- A version 1 file works everywhere. Our converter and the studio write version 1.
- A version 10 file from Premier+ or PE-Design 11 also works on a 2012 PE770, because the machine skips to the PEC block.
- Thread names in the file are cosmetic. The colour the machine shows is the nearest of 64 palette entries.
The PEC encoding needs a needle-down at the end of a jump before it can record a stitch delta, so converters insert a zero-length lock stitch at jump landings. You will see the stitch count rise by a few dozen after conversion; the design is unchanged.
DST
DST is the Tajima format and the lingua franca of commercial embroidery: Tajima, Barudan, Ricoma, Happy, SWF, and most multi-needle machines. It is 512 bytes of text header (design name, stitch count, extents) followed by three-byte records that encode a delta of up to 12.1 mm and the flags jump, colour change, end.
- No colours. The header has no palette; the file has stops. Every viewer, including ours, assigns placeholder colours. Commercial shops keep a colour sequence sheet with the DST.
- No trim command. The convention is three consecutive jumps, which the machine interprets as a trim. Our writer emits exactly that sequence.
- Sequin flags exist but are irrelevant for applique.
A DST converted to PES gains placeholder colours; a PES converted to DST loses thread names and gets the same stitches.
JEF
Janome's format, also used by Elna and Kenmore machines built by Janome. The header stores the hoop the design was made for (Janome hoop codes A, B, C and the larger square hoops), and colours as indices into Janome's own thread chart, not RGB. When you convert a PES to JEF, each colour is matched to the nearest Janome chart entry and the machine shows that thread's name. Trims are optional in the file; most Janome machines trim by their own jump-count setting.
Stitch and jump deltas are limited to 12.7 mm per record, so long moves are split. Read the JEF guide for the hoop codes.
EXP
Melco's format, and the export Bernina machines read from a USB stick (Bernina's own ART files stay in their software). EXP is the simplest format: two bytes per stitch, four bytes for a jump, colour change or trim, no header at all. It stores no colours; Bernina pairs the EXP with an INF file for thread information. Because there is no header, a file cannot be identified by its content, only by its extension.
VP3
The current Husqvarna Viking and Pfaff format. VP3 stores thread names, catalogue numbers and brand per colour block, an extents block, and a design centre. Its quirk: there is no jump command. Moves are written as long stitches that the machine executes as moves, and trims are explicit. Converting a design with many jumps to VP3 therefore produces long "stitches" in the file; the machine handles them, but stitch-length statistics in a viewer look odd. The older HUS and VIP formats from the same machines are compressed and read-only in our tools; VP4 is the newer variant.
XXX
Singer's Futura format, also used by Compucon software. It stores an RGB colour table, explicit trims and jumps. A detail we hit when testing: a stitch of exactly 12.4 mm in the long-form encoding is read back as a jump by every reader, so our writer caps stitch records at 12.3 mm.
Object formats you cannot convert to
ART (Bernina), EMB (Wilcom), PXF (Pulse), OFM (Melco), BE (Embrilliance) and JAN (Janome) contain objects, shapes with stitch types and settings, not final stitches. They can be regenerated at a different size; a stitch file cannot. Only the vendor's software writes them. If you want to edit a design at that level, keep the vector artwork and regenerate; that is what the studio does with your SVG.
What conversion can and cannot preserve
| Converting | Kept | Changed | |---|---|---| | PES → DST | every stitch, stops | thread names and colours dropped; trims become jump triples | | DST → PES | every stitch, stops | placeholder colours added | | PES → JEF | stitches, stops | colours mapped to the Janome chart; hoop code added from the extents | | JEF → PES | stitches, stops | Janome chart colours mapped to Brother's palette | | anything → VP3 | stitches, trims, colours | jumps become moves | | anything → EXP | stitches, trims, stops | colours dropped |
Geometry is always kept to 0.1 mm. Our converter reads eleven formats and writes seven, and the design is centred before writing so it lands in the middle of the hoop.
Try it
Convert a file in the browser
Reads PES, PEC, DST, EXP, JEF, VP3, XXX, HUS, VIP, SEW, PCS; writes PES, DST, JEF, EXP, VP3, XXX, PEC. Nothing is uploaded.
Sources
- pyembroidery, the open-source reader and writer library behind Ink/Stitch (format structures, palettes; our writers are verified byte-identical against it for DST, PES, JEF and EXP).
- Embroidermodder's libembroidery format documentation.
- Manufacturer documentation: Brother PE-Design and machine manuals for PES/PEC; Janome instruction books for JEF hoop codes; Husqvarna Viking and Pfaff manuals for VP3/VP4.
- Our own tests on 225 real files from Brother, Premier+, Wilcom, Embrilliance, Janome and independent designers.
Questions
Is PES better than DST?
Neither is better; they serve different machines. PES carries thread colours and a preview for home machines; DST is the plain relative-move format that every commercial machine reads. The stitches are the same.
Why does my converted DST show random colours?
DST stores colour-change stops but no colour values. Any viewer has to invent colours for the blocks. Keep a colour sheet with the design.
Which PES version should I save?
Version 1 for maximum compatibility. Every Brother and Baby Lock machine reads it, because the stitches are in the PEC block that all versions share. Higher versions add PE-Design metadata the machine does not need.
Can I convert a file to ART or EMB?
No. ART (Bernina) and EMB (Wilcom) are object formats that contain the design as shapes with stitch settings, not just stitches. Only their own software writes them. Machines that use them also read EXP or DST.