Skip to content
Stitch Toolbox

File formats

Embroidery file formats explained: PES, DST, JEF, EXP, VP3, XXX, HUS, U01 and what each one stores

What is inside PES, DST, JEF, EXP, VP3, XXX, HUS, U01 and TBF: colours, trims, stitch limits, which machines read which, and which conversions lose data.

7 min read · Published September 10, 2026

Every embroidery machine reads one or two formats and ignores the rest, so a design that sews on a Brother arrives at a Tajima as a file the machine cannot open. The formats are not as different as the extensions suggest. Almost all of them store the same thing: a list of needle positions in tenths of a millimetre, with a handful of commands in between. The differences are in what else they keep, and those differences decide what a conversion loses.

This guide goes through the formats you will meet, what each one stores, and which conversions are lossless. If you want to look inside a file while you read, the viewer shows the colour blocks, stitch lengths and commands for any of them.

Two kinds of file

Stitch files (PES, DST, JEF, EXP, VP3, XXX and the rest of this guide) contain the finished stitches. The machine reads them one by one: move here, put the needle down, move there, stop for a colour change. They can be converted between each other because they all describe the same needle path.

Object files (EMB from Wilcom, ART from Bernina, BE from Embrilliance, CND from Melco, PXF from Pulse) contain shapes, stitch types and settings. The stitches are generated when you export. Only the software that made them can open them, and no online converter reads them, whatever it claims. Why native formats cannot be converted covers what to do with one.

What a stitch file stores

Four things vary between stitch formats.

Resolution. Every common format uses 0.1 mm units. A stitch 3.5 mm long is 35 units. VP3 headers use 1/1000 mm for the bounds and centre, but the stitches themselves are still in 0.1 mm steps.

Colour. This is where formats diverge most:

| Format | Colour information | |---|---| | DST, EXP, U01, DSB, DSZ, TAP, 10O, KSM, EMD, STX | None. A stop command marks each colour change; the operator threads by a colour sheet. | | PES, PEC, PHC | An index into the Brother 64-colour palette. PES version 5 and later can also carry named threads in the header. | | JEF, SEW | An index into the Janome chart (79 colours). | | HUS, VIP, SHV | An index into the Husqvarna palette (29 or 43 colours). | | XXX, PCS, TBF | RGB values per block. | | VP3 | Thread name, catalogue number, brand and RGB per block. |

So VP3 → PES keeps the colour (matched to the nearest palette entry) but loses the thread name, and anything → DST keeps only the stops.

Trims and jumps. A jump moves the frame without stitching; a trim cuts the thread. EXP, VP3, XXX, U01 and TBF have an explicit trim command. DST, TAP and EXY do not: a trim is written as three consecutive jumps, which the machine recognises as a trim request. JEF writes a trim as a jump of zero length. Converters translate between these conventions; the stitches around them do not move.

Maximum stitch length. A single record can only encode so much movement. DST allows 12.1 mm, PES, JEF and EXP 12.7 mm, XXX 12.4 mm, VP3 25.5 mm, DSB and DSZ 25.5 mm. A longer stitch has to be written as a jump followed by a stitch. That is why a design with long straight satin stitches sometimes sews differently after conversion to DST: the machine does the same distance but with a jump in the middle. The pre-flight check lists stitches over 12.1 mm for exactly this reason.

The formats, one at a time

PES — Brother, Baby Lock, older Bernina

The most common home format. A PES file is a header followed by a PEC block; the PEC block is what the machine actually reads, and it is the same block that lives on Brother embroidery cards. Versions 1 to 10 exist; every version carries the same PEC stitch data, and later versions add design metadata and object information that the machine ignores. A PES version 1 file sews on every Brother machine ever made, which is why converters write version 1.

Colours are palette indices, 64 of them. Newer versions can store the thread name and brand as well, and the viewer shows both when they are present.

DST — Tajima and most commercial machines

The lingua franca of commercial embroidery. Three bytes per stitch in a ternary encoding, a 512-byte text header with the design name, stitch count, bounds and colour count, and no colours anywhere. If a DST shows colours in a viewer, the viewer made them up (or the file uses the unofficial TC header extension that some software writes). Trims are three jumps in a row.

DST is the safest format to hand to a shop you do not know, because everything reads it. It is also the format that loses the most: the colour sequence has to travel separately as a colour sheet. DST in detail.

JEF — Janome, Elna, Kenmore

Colours are indices into Janome's 79-colour thread chart, so a JEF converted from a design with, say, Isacord colours shows the nearest Janome thread on the machine screen. The header records which hoop the design was made for (110 × 110, 50 × 50, 140 × 200, 126 × 110, 200 × 200), and some machines refuse a file whose bounds exceed the hoop code, so a converter has to pick the code from the design size. SEW is the older Janome format with the same idea. JEF+ is the same as JEF with an editing block prepended.

EXP — Melco, Bernina

Two bytes per stitch, signed, so ±127 units. Explicit trim and colour-change commands, no colours. Bernina machines take EXP directly; older Berninas came with an ART/EXP pair, the EXP being the stitch export. EXY (E00, E01, E02) is Melco's DST-style variant.

VP3 — Husqvarna Viking, Pfaff

The most complete of the common stitch formats. Each colour block carries the thread's name, catalogue number, brand, weight and RGB. There is no jump command: long moves are written as moves the machine performs without stitching, and trims are explicit. VP4 is the newer Husqvarna native format, which is an object format and cannot be read here; export VP3 from mySewnet or Premier+.

HUS and VIP are the older Viking and Pfaff stitch formats. Both are compressed with a Huffman-style scheme, VIP with an extra scramble per block. Most free tools cannot read VIP at all; this converter decodes both in the browser.

XXX — Singer, Compucon

Singer Futura's format, also written by Compucon software. RGB colour table at the end of the file, explicit trims, stitches up to 12.4 mm. PCS is the older Pfaff format with an RGB table of its own.

U01 — Barudan

Barudan machines think in needles, not colours. A U01 command says "switch to needle 4", and whatever thread is on needle 4 is what sews. Fast and slow flags let the digitiser slow the machine through dense areas. Converting to U01 assigns needles 1 to 5 in order of colour change; converting from it gives you needle numbers to map to threads. Barudan U01 and Tajima TBF.

TBF — Tajima

Tajima's own format alongside DST. A text header with the same fields as DST plus a needle order (DO:) and an RGB list (DA:), so unlike DST it keeps colours. Explicit trims and stops. If a Tajima shop can take TBF, send that instead of DST.

The rest

DSB (Barudan) and DSZ (ZSK) use the DST header with 8-bit magnitudes, allowing 25.5 mm per record. TAP (Happy) is DST stitches with no header. 10O (Toyota), KSM (older Pfaff), EMD (Elna), SHV (older Husqvarna Designer), PHC (older Brother), Z01 (ZSK) and STX (Data Stitch) are machine-specific formats that the viewer and converter read for the sake of old design collections; nothing new is written in them.

Which conversions are lossless

Geometry is always kept. The table shows what else survives.

| From → to | Colours | Trims | Notes | |---|---|---|---| | PES → DST | lost | become 3 jumps | Take a colour sheet. | | DST → PES | invented | inferred from jump runs | Recolour in the viewer before saving. | | PES ↔ JEF | remapped to the other palette | kept | Names lost. | | VP3 → PES | matched to palette | kept | Thread names lost. | | PES → VP3 | kept, names from palette | explicit | Jumps become moves. | | Anything → TBF | kept as RGB | explicit | Needle order written. | | Anything → U01 | lost, needles assigned | explicit | Write the sequence down. | | HUS / VIP → VP3 | palette names | explicit | Best modern home for old Viking files. |

The converter applies these rules, and every direct conversion page lists them for its pair.

Checking a file before you trust it

Whatever format it arrives in, the numbers to read before stitching are the same: stitch count, size, the count of stitches under 0.3 mm (thread breaks) and over 12.1 mm (become jumps), and where the density piles up. Stitch density explained goes through the thresholds; the pre-flight check applies them to any file in a second, on your machine, without uploading it.

Questions

Are all embroidery formats the same design underneath?

Stitch formats, yes: they all store needle positions in tenths of a millimetre plus a few commands. What differs is whether colours, thread names, trims and speed flags are stored, and how long a single stitch can be. Object formats like EMB and ART store shapes and stitch settings instead of stitches, which is why nothing but their own software can convert them.

Which format should I keep as the master copy?

The one your digitising software saves natively (EMB, ART, BE, CND). If all you have is a stitch file, keep the one that stores the most: VP3 or TBF for colours and names, PES for Brother, and convert from that.

Why does my DST show the wrong colours?

DST does not store colours at all, only stop commands. Whatever opens it invents a colour per block. Take a colour sheet from the file you converted it from.

Does converting lose stitches?

No. Every needle position is kept to 0.1 mm. Stitches longer than the target format's limit are split into a jump plus a stitch, which changes how they are sewn but not where.