CDR File Documentation


Summary

A CorelDRAW Image File is the native vector drawing format of Corel’s CorelDRAW editor, used for logos, flyers, posters, packaging and signage. Its MIME type is application/vnd.corel-draw. A .cdr stores paths, text, spot colours, layers and embedded bitmaps. Older files (up to X3) are a RIFF container; from X4 (2008) onward Corel wraps the drawing in a ZIP package, so newer files begin with PK.

Technical details

FeatureValue
Full nameCorelDRAW image / drawing
File extension.cdr
MIME typeapplication/vnd.corel-draw
Format typeProprietary vector drawing
DeveloperCorel Corporation
Introduced1989 (CorelDRAW 1.0)
Open standardNo — proprietary, no published specification
Container (≤ X3, v13)RIFF; CDR + version form type at offset 8
Container (X4–X5, v14–15)ZIP; RIFF data in content/riffData.cdr
Container (X6+, v16+)ZIP; entry point content/root.dat + content/data/*.dat
Byte orderLittle-endian (RIFF chunk sizes)
Magic number (classic)52 49 46 46 (“RIFF”) at offset 0
Magic number (X4+)50 4B 03 04 (“PK”, ZIP) at offset 0
Version chunkvrsn (≤ v15) or fver (v16+) at offset 12
Colour modelsRGB, CMYK, spot / Pantone
ContentVector paths, artistic & paragraph text, layers, pages, embedded bitmaps
Free import librarylibcdr (Inkscape, LibreOffice Draw)
Related extensions.cdt, .cmx, .cpt, .ai, .svg, .eps
Vendor pagecoreldraw.com
File signature (magic bytes)
52 49 46 46 .. .. .. .. 43 44 52

Classic CDR (up to CorelDRAW X3): offset 0 reads RIFF, bytes 4–7 hold the little-endian file size, and bytes 8–11 begin the RIFF form type CDR followed by a version character (for example CDRX). From CorelDRAW X4 (v14, 2008) onward the drawing is wrapped in a ZIP package, so the file instead starts with 50 4B 03 04 (PK) and the RIFF data lives inside as content/riffData.cdr (X4–X5) or is replaced by content/root.dat plus content/data/*.dat (X6+).

What is a CDR file?

A CDR file is the native drawing format of CorelDRAW, Corel Corporation’s vector graphics editor, which has shipped since 1989. It stores vector artwork — paths, shapes, artistic and paragraph text, layers, effects and embedded bitmaps — for design work that has to scale cleanly, such as logos, business cards, posters, packaging, T-shirt prints and large-format signage. CorelDRAW dominates print shops, sign-making and embroidery, which is why a non-designer usually meets a .cdr when someone sends them artwork they then cannot open.

CDR is proprietary and undocumented: Corel has never published a specification, and it changes the internal layout between versions, so a newer .cdr often will not open in an older CorelDRAW release. The format also changed shape completely over its life. Up to CorelDRAW X3 (version 13) a CDR is a RIFF file; from X4 (version 14, 2008) onward it is a ZIP package. The sections below cover both, based on the reverse-engineered structure that the open-source libcdr importer relies on.

The classic RIFF container and chunk layout

A pre-X4 CDR is built on Microsoft’s RIFF (Resource Interchange File Format), the same chunked container used by WAV and AVI. The file opens with a 12-byte header: the four ASCII bytes RIFF at offset 0, a 32-bit little-endian size at offset 4, and a four-character form type at offset 8 that reads CDR followed by a version letter, for example CDRX. Everything after that header is a sequence of chunks.

Offset  Bytes           Meaning
0       "RIFF"          RIFF container magic
4       uint32 (LE)     total file size minus 8
8       "CDR" + ver     form type, e.g. "CDRX"
12      "vrsn" / "fver" version chunk
...     chunk id (4)    e.g. "DISP", "LIST"
        uint32 (LE)     chunk content size
        content         chunk payload
        LIST -> asci4   list-type, e.g. "cmpr", "INFO"

Each chunk is a four-byte ASCII identifier, a 32-bit little-endian content size, then that many content bytes. A chunk named LIST is special: its content begins with a further four-character list type and then holds nested sub-chunks, which is how CDR builds a tree inside a flat container. A typical drawing carries a handful of top-level chunks — a version chunk, a DISP preview thumbnail, and one or more LIST chunks — with the actual objects packed into a LIST cmpr (compressed) chunk whose payload holds the drawing’s pages, layers and shapes.

Detecting the version: the vrsn and fver chunks

Because CorelDRAW rewrites its format almost every release, the version marker is load-bearing, and a reader checks it before trying to parse anything else. At offset 12 the classic files place a vrsn chunk: the four bytes vrsn, a 32-bit size of 2, and a two-byte version value. From version 16 the marker changed to a fver chunk of sixteen bytes, where the byte before the last encodes the major version number. This is why an importer that lacks the exact version’s object grammar can still identify a file it cannot fully decode, and why files that render perfectly in the CorelDRAW that wrote them may come out wrong elsewhere: the free importers implement the object formats version by version, and the newest ones lag.

CorelDRAW versionContainerWhere the drawing lives
1–X3 (v1–13)RIFFChunks directly in the file (LIST cmpr)
X4–X5 (v14–15)ZIPcontent/riffData.cdr (RIFF inside the ZIP)
X6+ (v16+)ZIPcontent/root.dat + content/data/*.dat

The modern ZIP package (X4 and later)

From CorelDRAW X4 the outer container became a ZIP archive, so a modern .cdr starts with the ZIP local-file-header signature 50 4B 03 04 (PK) exactly like a DOCX or any other zipped package, and can be unzipped to reveal a tree of internal files plus XML metadata. What is inside the ZIP differs by generation. In X4 and X5 the whole classic RIFF structure was simply moved into a single member, content/riffData.cdr, so those files are a RIFF drawing in a ZIP wrapper. From X6 the RIFF blob was broken apart: the entry point is content/root.dat, which references external chunk payloads stored as separate content/data/*.dat members, letting Corel stream and share large objects across the package rather than holding one monolithic stream.

What the drawing stores: paths, text, colour and bitmaps

Inside whichever container, a CDR describes a vector scene. Geometry is stored as paths — sequences of nodes with straight or Bézier segments — grouped into objects, arranged on layers, and distributed across one or more pages, since CorelDRAW is a multi-page document editor. Text is held in two flavours, artistic text for headlines and paragraph text for flowing blocks, and depends on the fonts being present: if a font is not embedded, another machine substitutes it and the layout shifts, a common cause of “the logo looks wrong” complaints.

Colour is where CDR shows its print heritage. Objects can be coloured in RGB, in CMYK for four-colour process printing, or with named spot colours such as Pantone inks, and that spot-colour information is exactly the kind of thing a free importer tends to lose. The file can also hold embedded bitmaps (placed raster images) alongside the vectors, and effects metadata for blends, contours, envelopes and transparencies. Those effects are the least portable part of the format: libcdr, the library Inkscape and LibreOffice Draw both use, reconstructs paths and basic fills well but frequently mishandles recent CorelDRAW effects, which is why the reliable way to receive CorelDRAW artwork on another program is to ask for a PDF, SVG or EPS export.

Frequently asked questions

Why do some CDR files start with “PK” instead of “RIFF”?

CorelDRAW changed its container in X4 (version 14, 2008). Files up to X3 are RIFF and begin with RIFF; X4 and later wrap the drawing in a ZIP archive, so they begin with the ZIP signature 50 4B 03 04 (PK). In X4–X5 the old RIFF data still exists as content/riffData.cdr inside the ZIP; from X6 it is split into root.dat and separate data/*.dat members.

Why won’t my CDR file open in an older CorelDRAW?

Corel changes the on-disk object format between releases and older versions cannot read the newer object grammar, which a reader detects from the vrsn or fver version chunk. Free importers such as libcdr add support version by version and lag the newest CorelDRAW. The fix is a newer CorelDRAW, or an exported PDF, SVG or EPS from whoever created the file.

References