File formats
PES file format explained: versions, the PEC block, the 64-colour palette and hoop limits
How a Brother PES file is built: the version header, the PEC stitch block every machine reads, why colours snap to a 64-entry palette, and what changes between v1 and v10.
5 min read · Published September 10, 2026
PES is the format Brother and Baby Lock machines read from a USB stick, and the one most designs are sold in. It is two files in one: a PES header, which grew through ten versions to carry design metadata for PE-Design, and a PEC block, which is the part with the stitches and the only part the machine looks at. Understanding that split explains most of what goes wrong with PES files.
The layout
A PES file starts with the eight-byte signature #PES followed by a version string: 0001, 0020, 0030, 0040, 0050, 0055, 0060, 0070, 0080, 0090 or 0100. Bytes 8 to 11 hold the offset of the PEC block. Between them sits the PES section: design name, hoop size, and, in the later versions, the design as objects (CEmbOne and CSewSeg records, which describe stitch segments with their own colour table).
The PEC block starts with LA: and a 16-character label, then the colour count and the palette indices, then the stitches. Machines seek to the PEC offset, read the palette and the stitches, and ignore everything before it. That is why a version 1 file with a minimal PES header and a version 10 file with the full object description stitch out identically.
The PEC stitch encoding
Stitches are relative moves from the previous needle position, in 0.1 mm units. A short move fits in one byte per axis (−64 to +63 units, so 6.3 mm). A longer move uses two bytes with a flag in the top bits: bit 7 set marks a long form, and bits 4 and 5 of the first byte carry the jump and trim flags. The long form holds ±2047 units, so a single PEC record can move 204 mm, which is why PES files rarely need the split-stitch trick that DST needs at 12.1 mm.
A colour change is the byte pair 0xFE 0xB0 followed by a byte that alternates between 2 and 1 for each change. End of design is 0xFF. Trims are a jump flag with a move, not a separate command; Brother machines trim automatically when they see a jump after a colour change or a long jump, according to the machine's own settings, so the file does not carry an explicit cut.
The viewer shows the decoded stitches, jumps and colour changes; if a file looks wrong, the stitch table tells you whether the reader hit a short or long form it disagrees with.
The 64-colour palette
PEC stores every colour as an index into a fixed 64-entry palette that Brother defined for its own thread line: 1 is Prussian Blue, 2 Blue, 3 Teal Green, and so on to 64. There is no RGB in the block. A design digitised in Isacord 3620 becomes "Prussian Blue" or whichever entry is nearest when the file is written, and the machine screen shows that name.
This is not lossy for the stitching, only for the label, but it is the reason the colours on a Brother screen never match the designer's thread list, and why every design shop ships a separate colour sheet. Version 5 and later PES headers can carry named threads with RGB and a brand in the PES section, which software like PE-Design and Embrilliance reads; the machine still shows the PEC palette entry. The thread converter works from RGB, so drop the file and it shows the palette colour and the nearest match in the brand you stock.
What the versions add
| Version | Software | What changed |
|---|---|---|
| 1 (0001) | PE-Design 1–3 | Header with hoop size and a minimal object block; universally readable |
| 2–4 | PE-Design 4–5 | Object records grew; adds the design's stitch data as CSewSeg records |
| 5 (0050) | PE-Design 6 | Named threads with RGB, brand and catalogue number; per-object colour tables |
| 5.5, 6 | PE-Design 7 | More design metadata: description, author, keywords, hoop model |
| 7 (0070) | PE-Design 8 | Extended thread table, larger hoop codes |
| 8, 9 | PE-Design 9, NEXT | Applique and cutwork flags, layout information for the machine's screen |
| 10 (0100) | PE-Design 10, 11 | Current output of PE-Design and of most commercial digitising software |
Every version keeps the same PEC block layout. Converters, including ours, write version 1 with the PEC block because that reads on every machine ever sold; the design metadata of the later versions is only useful in software that edits objects, and a converted file has no objects to edit.
Hoop limits and what the machine checks
The PES header holds a hoop code; the PEC block holds the design's width and height. A machine compares the design's size to the sewing field of the hoop it senses and refuses one that does not fit, typically with "the pattern is too large for the embroidery frame". Some models also read the hoop code and complain if it names a larger frame than the one fitted, even when the design itself would fit.
Practical result: a 4×4 machine (100 × 100 mm field) sews any PES whose design is under 100 × 100 mm. A design that is 101 mm wide is refused even though it is one stitch over. The hoop fit checker applies the field sizes and the 3 mm clearance most machines want at the edges.
Common problems, and where they come from
Colours wrong on the screen. The palette snap above. Use the colour sheet, not the screen.
Design opens as a single colour. The PEC colour count says one, usually because software exported with "merge colours" or because the design was saved from a format with no colour changes (DST) without the colours being restored. The DST to PES page explains what a DST can and cannot bring across.
"Cannot read this file" on a machine. Either a version-10 file with a feature the machine's firmware does not know (rare), or the file was renamed from another format. The viewer identifies the real format by its signature regardless of the extension.
Thread breaks in the same place. Not a format issue; see short stitches.
Design is mirrored or upside down. PES stores coordinates with y pointing down, as the machine sews it. Software that showed it the other way up is the odd one out.
PES from other formats
Converting into PES loses nothing that a machine needs: stitches, jumps and colour changes carry over, and colours become palette indices. Converting out of PES to DST drops the colours entirely; to JEF, the colours are re-mapped to Janome's 79-colour chart; to EXP, the colours are dropped unless a companion file carries them. The converter lists what each target keeps.
The one thing PES cannot carry is the object information from the native PE-Design file (.pem, or a version-10 PES with objects). A PES you downloaded from a shop has stitches; a PES exported by the digitiser from their own working file has stitches; only the designer's own save has the objects. Ask for the PES version you need, not the objects, unless you are going to edit in PE-Design yourself.
Questions
What is the difference between PES and PEC?
PEC is the stitch block inside every PES file, and the only part a Brother machine reads. A bare PEC file is that block on its own, without the PES header and its design metadata.
Which PES version should I save?
Version 1 for any machine: every Brother and Baby Lock reads it, and the stitches are identical in every version. Later versions add metadata for software, not for the machine.
Why did my thread colours change in a PES?
The PEC block stores each colour as an index into Brother's 64-entry palette. Any colour outside it is replaced by the nearest entry when the file is written, so the machine screen shows the palette colour, not the original.
Can a PES be bigger than 4x4?
Yes. The format carries any size; the machine refuses designs larger than its hoop. Sizes up to 360 x 200 mm are common in PES for the larger Brother and Baby Lock models.