XXX File Documentation
Summary
An .xxx file is a machine-embroidery design in Compucon’s Singer Embroidery File format (from Singer EOS / PSW software): the stitch coordinates, sequence and thread colours that tell an embroidery machine how to sew a motif. It is a proprietary binary stitch file, not an image or document, with the generic MIME type application/octet-stream. Open or convert it with the free Ink/Stitch (via Inkscape) or Wilcom TrueSizer; to sew it on another brand of machine, convert it to that machine’s format such as PES, DST or JEF.
Technical details
| Feature | Value |
|---|---|
| Full name | Compucon / Singer Embroidery Design |
| File extension | .xxx |
| MIME type | application/octet-stream |
| Format type | Machine-embroidery stitch file (binary) |
| Developer | Compucon (Singer EOS / PSW embroidery software) |
| Category | Graphics Files (machine embroidery) |
| Open standard | No — proprietary, no published specification |
| Byte order | Little-endian |
| Header | Fixed block starting with zero bytes; extents, stitch and colour counts |
| Stitch encoding | 1-byte dx/dy deltas; 0x7D = long stitch (2-byte), 0x7F = command |
| Stores | Stitch list, jumps/trims, colour-change stops |
| Does not store | Editable objects/vectors (that is a native project format) |
| Free tools | Ink/Stitch (Inkscape), Wilcom TrueSizer / TrueSizer Web |
| Machine-format exports | .pes (Brother), .dst (Tajima), .jef (Janome) |
| Preview exports | .png, .svg, .pdf worksheet (not stitchable) |
| Also used as | Generic “unknown/placeholder” filename (not embroidery) |
| Related extensions | .pes, .dst, .jef, .exp, .vp3, .hus, .pcs |
What is a .xxx file?
An .xxx file is a machine-embroidery stitch file: it stores the needle coordinates, stitch order, jumps, trims and thread-colour changes that an embroidery machine follows to sew a design. The format comes from Compucon’s EOS embroidery system and was adopted by Singer’s PSW (Professional Sew Ware), so .xxx is usually labelled the Compucon/Singer format. It is a binary, proprietary format with no public specification, and everything documented about it comes from open-source embroidery libraries that reverse-engineered the layout.
It helps to be clear about what an .xxx is not. It is not an image, a document or a video, and it is not an editable design project. It is the “ready to sew” output: a flat list of machine instructions. The sections below cover how that stitch data is stored, why embroidery has so many competing formats, how to convert an .xxx to the format your own machine reads, and the fact that “xxx” is sometimes just a placeholder name rather than an embroidery file at all.
A stitch file, not an editable project
Embroidery software works with two very different kinds of file. A native project file (such as Wilcom EMB) keeps the full editable design: the objects, the vector outlines, the stitch types and the parameters used to generate them, so you can re-scale or re-digitise freely. A stitch file like .xxx keeps only the final result: the exact needle movements after all of that has been resolved. Once a design is saved as stitches, the higher-level intent is gone; you can shift and recolour the stitches, but you cannot cleanly re-flow them the way the original digitiser could. This is why converting an .xxx between machine formats is straightforward (the geometry is fixed) while genuinely editing it is limited.
Inside the file: header, stitch list and colours
An .xxx is organised as a fixed header followed by the stitch data and a colour table. The header is a block that begins with a run of zero bytes (there is no distinctive signature at offset 0), and within it are little-endian fields recording the design’s bounding-box width and height, the total stitch count, the last stitch position and the number of colours. The body is the stitch list: a sequence of movements encoded as coordinate deltas.
Header (fixed block)
... leading zero bytes ...
stitch count, colour count (little-endian)
pattern width / height (little-endian, 2 bytes each)
extents (min/max X, Y)
Stitch list (variable)
normal stitch : 1-byte dx, 1-byte dy (small relative move)
0x7D : long stitch, dx/dy as 2-byte little-endian values
0x7F : command (trim / jump / colour change / end)
The clever part is the delta encoding. Most stitches are short, so each is stored as a single signed byte for the X move and one for the Y move, relative to the previous needle position. When a jump is longer than a single byte can express, a 0x7D marker introduces a “long stitch” whose offsets are two bytes each. A 0x7F marker introduces a command: a thread trim, a jump without stitching, a colour-change stop, or the end of the design. The standard variant ends the file with 0x7F, while some Compucon files terminate with 0x18 instead, one of several small differences that make the format awkward to parse without a library that has seen real samples.
Colour-change stops and thread order
An .xxx does not paint pixels; it records where the machine should pause so the operator (or an automatic thread changer) can switch to the next thread colour. Each colour-change command in the stitch stream marks a boundary between colour blocks, and the header’s colour count tells the software how many blocks to expect. The actual thread colours are a small palette rather than a full-fidelity colour profile, which is why a design imported from one program to another sometimes needs its thread colours reassigned. When a stitch format carries no colour information at all, the colours have to be set entirely by hand, which is a known limitation of the widely used Tajima DST format.
Why embroidery has so many formats
Machine embroidery is fragmented because each manufacturer defined its own stitch format. Brother and Babylock use PES, Tajima uses DST, Janome uses JEF, Husqvarna and Viking use VP3 and HUS, and Singer historically used XXX and PSW. The underlying geometry, a list of stitches and colour stops, is essentially the same across all of them, so designs are interchangeable in principle and digitising software translates one to another routinely. The practical limits on a conversion are not the coordinates but stitch-type fidelity, the palette, and the hoop size the target machine can physically sew.
Converting an .xxx to your machine’s format
The most common task with an .xxx is converting it to the format the recipient’s machine reads. Open the file in an embroidery tool and export to the target stitch format: to PES for a Brother or Babylock machine, to DST for a commercial Tajima-compatible machine, or to JEF for a Janome. The free Ink/Stitch extension for Inkscape, the free Wilcom TrueSizer, and paid suites such as Embird all do this. Two checks matter before you stitch: confirm the design fits your hoop, and confirm the colour-change stops survived the conversion, since some target formats carry colour differently or not at all.
Exports to PNG, SVG or a PDF worksheet are a different thing entirely. Those produce a picture or a printable thread list for reference, not a sewable file. A PNG render of an .xxx cannot be converted back into stitches, and an SVG traced from it is artwork that would have to be re-digitised before a machine could sew it. If a viewer shows you the design as a flat image, that image is a preview, not the machine data.
When .xxx is not embroidery at all
Because “xxx” is a generic three-letter string, a file literally named something.xxx is not always an embroidery design. Some applications and downloads use .xxx as a placeholder for an unknown or unspecified file type, and the string is sometimes used informally in examples or to hint at adult material, neither of which carries any defined file structure. If an embroidery program rejects a .xxx, that is the likely reason: it is not a Compucon/Singer stitch file. Check where the file came from and inspect its first bytes; a genuine embroidery .xxx has the fixed header and stitch stream described above, while a placeholder file will not.
Frequently asked questions
How do I convert .xxx to PES for a Brother machine?
Open the .xxx in Ink/Stitch (with Inkscape), Wilcom TrueSizer or Embird and export or save as PES. Before sewing, confirm the design fits your hoop and that the colour-change stops carried over, since not every format stores colours the same way.
Is a .xxx file an image I can just print?
No. It is a stitch file, a set of machine instructions, not a picture. Embroidery software can render a preview and export a PNG or a PDF worksheet from it, but the .xxx itself only makes sense to an embroidery machine or a digitising program.
Can I open an .xxx file without buying software?
Yes. Ink/Stitch is open source and free, and Wilcom TrueSizer (and its browser-based TrueSizer Web) is free to view and convert designs. Paid suites add editing and digitising power, but you do not need them just to view or convert an .xxx.
References
- Ink/Stitch — supported embroidery file formats (open source)
- Wilcom TrueSizer — free embroidery viewer/converter
- EduTech Wiki — Embroidery format XXX (structure notes)
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.