The basics
What is a PICT file?
PICT is the picture format of QuickDraw, the graphics engine of the classic Mac OS. When a program drew into a QuickDraw picture, QuickDraw recorded each command (a line, a filled rectangle, a run of text, a bitmap) as an opcode with its data. Playing the picture back with DrawPicture repeated those commands, at any size. That makes PICT a metafile: like PDF or EPS, it can hold vector shapes and text as well as pixels.
On classic Macs PICT was everywhere. A picture could be saved as a file of type PICT, stored as a PICT resource inside any file, or put on the clipboard, where PICT was one of the two standard formats, next to plain text. Copying a drawing from one program and pasting it into another went through PICT.
When Apple moved to Mac OS X, PDF became the native metafile format and QuickDraw was phased out. You meet PICT files today in archives of 1980s and 1990s Mac work: clip art, scans, diagrams, illustrations from old desktop publishing projects and graphics inside old documents.
Anatomy
What's inside a PICT file
A PICT file is a 512-byte header that applications may use as they like, then a QuickDraw picture: its size, its bounding rectangle, and a list of opcodes, each a command with its data, ending with an end-of-picture opcode. Below is a 658-byte file that ImageMagick wrote for this page from a 3 × 2 image (red, green and blue over yellow, white and black), with each part labelled. It holds one opcode that draws a bitmap; a drawing would hold opcodes for lines, shapes and text instead. It isn't offered for download.
tiny.pict: 3 × 2 pixels, extended version 2, 658 bytes
offset bytes part
0000 00 00 00 … (512 bytes) file header: free for applications, here zeros
0200 02 00 picSize: not meaningful in version 2
0202 00 00 00 00 00 02 00 03 picFrame: top 0, left 0, bottom 2, right 3
020A 00 11 02 FF VersionOp, version 2
020E 0C 00 HeaderOp: 24 bytes of header follow
0210 FF FE 00 00 -2: extended version 2; reserved
0214 00 48 00 00 00 48 00 00 best resolution: 72 × 72 dpi
021C 00 00 00 00 00 02 00 03 source rectangle
0224 00 00 00 00 reserved
0228 00 01 00 0A 00 00 00 00 00 02 00 03
Clip: a 10-byte region, the frame
0234 00 9A DirectBitsRect: a direct-colour bitmap
0236 00 00 00 FF baseAddr: always $000000FF
023A 80 0C rowBytes 12; top bit set: a PixMap
023C 00 00 00 00 00 02 00 03 bounds
0244 00 00 00 04 00 00 00 00 version 0, packType 4, packSize 0
024C 00 48 00 00 00 48 00 00 resolution: 72 dpi
0254 00 10 00 20 00 03 00 08 direct colour, 32 bits a pixel, 3 × 8-bit components
025C 00 00 00 00 × 3 planeBytes, pmTable, reserved
0268 00 00 00 00 00 02 00 03 srcRect
0270 00 00 00 00 00 02 00 03 dstRect
0278 00 40 transfer mode
027A 0A 00 FF FE 00 00 FF FE 00 00 FF
top row: 10 bytes of PackBits
0285 0A 08 FF FF 00 FF FF 00 00 FF 00
bottom row
0290 00 FF OpEndPic: end of picture- 1
00 00 00 … (512 bytes)The file header
Apple reserved the first 512 bytes of a PICT file for the application that made it. Most writers fill them with zeros. QuickDraw itself never reads them, and PICT data on the clipboard or in a resource doesn't have them.
- 2
02 00 00 00 00 00 00 02 00 03Size and frame
picSizeis a 16-bit length that only makes sense for small version 1 pictures; Apple tells programs to ignore it in version 2.picFrameis the picture's bounding rectangle: top, left, bottom, right. - 3
00 11 02 FFThe version opcode
0011then02FF: version 2, so every following opcode is 2 bytes and aligned on an even byte. A version 1 picture has11 01here, with 1-byte opcodes. These bytes at offset 522 are how tools recognise a PICT file. - 4
0C 00 FF FE …The header opcode
0C00and 24 bytes.FFFE(−2) marks an extended version 2 picture, which records its best resolution, here 72 dpi in both directions as fixed-point numbers, and a source rectangle.FFFFwould mean plain version 2. - 5
00 01 00 0A …Clip
Opcode
0001sets the clipping region: drawing outside it is cut off. A region is a size (10 bytes here: just a rectangle) and a bounding box. - 6
00 9A 00 00 00 FFDirectBitsRect
Opcode
009Adraws a direct-colour bitmap. Its first field is a memory address that means nothing in a file, so it's always000000FF. - 7
80 0C … 00 10 00 20 00 03 00 08The PixMap
A description of the bitmap: 12 bytes a row (the top bit of
800Cmarks a colour PixMap), its bounds, packing type 4 (each colour component packed separately), and 32 bits a pixel made of 3 components of 8 bits. - 8
0A 00 FF FE 00 00 FF FE 00 00 FFA packed row
A byte count (10), then the row compressed with PackBits:
00 FFmeans 1 literal byteFF;FE 00means00three times. Unpacked, that's the red valuesFF 00 00, then green00 FF 00, then blue00 00 FF: red, green and blue pixels. Rows go top to bottom. - 9
00 FFEnd of picture
Opcode
00FFends a version 2 picture. In version 1 it's the single byteFF.
Under the hood
How a PICT picture works: opcodes
A picture is picSize, picFrame and then a list of opcodes. Here is Apple's own example of a small version 1 picture, decompiled, from Inside Macintosh. It fills a rectangle and an oval with patterns and paints a triangle, in 79 bytes:
$"004F" /* picture size: 79 bytes */
$"0002 0002 006E 00AA" /* bounding rectangle */
$"11" $"01" /* version 1 */
$"01" $"000A" $"0002 0002 006E 00AA" /* clip region */
$"0A" $"77DD 77DD 77DD 77DD" /* fill pattern */
$"34" $"0002 0002 006E 00AA" /* fillRect */
$"0A" $"8822 8822 8822 8822" /* fill pattern */
$"5C" /* fillSameOval */
$"71" $"001A" … /* paintPoly: a polygon */
$"FF" /* end of picture */A few opcodes you'll see in version 2 pictures:
| Opcode | Name | What it does |
|---|---|---|
0011 | VersionOp | First opcode; 02FF follows for version 2 |
0C00 | HeaderOp | 24 bytes: version, resolution, source rectangle |
0001 | Clip | Sets the clipping region |
0034 | fillRect | Fills a rectangle with the current pattern |
0098 | PackBitsRect | Draws a colour-mapped bitmap, compressed with PackBits |
009A | DirectBitsRect | Draws a direct-colour (16 or 32-bit) bitmap |
00A1 | LongComment | An application comment: a kind, a size and data |
8200 | CompressedQuickTime | Image data compressed by QuickTime, for example JPEG |
00FF | OpEndPic | End of the picture |
Version 2 opcodes are words, and odd-sized data is followed by a zero byte so the next opcode starts on an even byte. Many opcodes are reserved, with sizes defined by rule, so an old reader can skip opcodes it doesn't know. Comments (00A0, 00A1) let applications store extra data, such as the original drawing objects, that other programs ignore.
Versions
Picture versions and the 512-byte header
| Version | Opcodes | Notes |
|---|---|---|
| Version 1 | 1 byte; starts 11 01, ends FF | Original QuickDraw, black and white. Limited to 32 KB |
| Version 2 | 2 bytes, word-aligned; starts 0011 02FF, header version FFFF | Color QuickDraw: colour, PixMaps, a fixed-point bounding box |
| Extended version 2 | As version 2; header version FFFE | Adds the best resolution, so pictures aren't tied to 72 dpi |
The 512-byte header exists only in PICT files: Apple's documentation says the data fork of a PICT file begins with 512 bytes the application can use for its own purposes, followed by the picture. The same picture as a resource or on the clipboard starts straight with picSize. That's why file-type databases look for the version opcode at byte 522 (512 + 2 for the size + 8 for the frame), and why a PICT extracted from a resource needs 512 bytes added in front before most programs will open it.
Old Macs and version 2
On system software before version 4.1, DrawPicture read the 02 of a version 2 picture as the version number and the FF as end of picture, so it stopped without drawing anything.
Deprecation
Why modern Macs struggle with PICT
- Mac OS X replaced PICT with PDF as the native metafile format, though many applications kept reading PICT because it was so common.
- QuickDraw was deprecated in Mac OS X 10.4 Tiger and never made available to 64-bit programs. From then on, 64-bit software could only convert PICT data through a 32-bit helper process. As Mac software went 64-bit, and 32-bit code was removed altogether, built-in PICT support grew patchy.
- Preview is unreliable with PICT files. The 64-bit Preview in Mac OS X 10.6 already reported PICT as unsupported, and users of later macOS versions report files that won't open or show up blank. Apple hasn't documented when or how support changed, so don't count on it.
- Photoshop can still open PICT files that contain only bitmaps, but not those built from QuickDraw drawing objects, and it can no longer save PICT.
- GIMP has never supported PICT.
Comparison
PICT vs PDF, EPS and TIFF
| PICT | EPS | TIFF | ||
|---|---|---|---|---|
| Vector and text | Yes, as QuickDraw commands | Yes | Yes, as PostScript | No |
| Bitmaps | Yes, PackBits or QuickTime-compressed | Yes | Yes | Yes, the main purpose |
| Platform | Classic Mac OS | Everywhere | Print and design software | Everywhere |
| Still supported | Barely | Yes | In design and print tools | Yes |
| Opens in a browser | No | Yes | No | Only Safari |
PDF is PICT's direct successor on the Mac. To preserve an old PICT, convert drawings to PDF or SVG and bitmaps to PNG or TIFF, keeping the original file alongside.
How to
How to open and convert old PICT files today
- LibreOffice (Windows, macOS, Linux) opens PICT files in Draw. From there, export as PDF or SVG to keep a drawing as vectors, or as PNG. On the command line,
soffice --headless --convert-to pdf picture.pctdoes it without opening a window. - ImageMagick reads PICT files that hold bitmaps, which covers most scans and screenshots:
magick picture.pict picture.png(convertin ImageMagick 6). It needs the 512-byte header. - GraphicConverter, a long-running Mac image tool, opens and batch-converts PICT files on current macOS.
- Photoshop opens bitmap-only PICTs; save them as PNG or TIFF.
- Classic Mac OS in an emulator is the last resort for drawings that only the original application (MacDraw, Canvas, ClarisDraw) renders correctly: open them there and export.
Missing header?
If a tool says the header is improper but the file came from a resource, the clipboard or an extraction tool, add 512 zero bytes in front: { head -c 512 /dev/zero; cat picture.pict; } > fixed.pict on macOS or Linux. Then try again.
Troubleshooting
Common PICT problems
- The file has no extension. Classic Mac OS identified files by a hidden four-letter type code, not an extension, and that code is lost when files pass through other systems. Look for
00 11 02 FFor11 01at byte 522, then add.pict. - It opens blank, white or not at all. The program only reads bitmaps and the picture is a drawing, or the program has no PICT support any more. Try LibreOffice.
- Text looks wrong. QuickDraw text refers to fonts by Mac font names and old Mac character sets. Missing fonts are replaced, and accented characters can come out wrong. Check text after converting.
- Images inside are missing. Bitmaps compressed with QuickTime (opcode
8200) need a QuickTime-aware reader. Not every converter has one. - Lines and shapes are jagged after converting. The converter rasterised the drawing. Export as PDF or SVG from LibreOffice to keep vectors.
A PICT file contains drawing commands and comments, not scripts. Treat old files from unknown sources like any other complex binary: keep converters updated, since parsing a long list of opcodes with lengths and regions is the kind of code where bugs hide.
Sample files
There are no sample PICT files on this page yet. To make one for testing, convert any image with ImageMagick: magick input.png output.pict (or convert in ImageMagick 6).
Put it online
Have a PICT file? Give it a link.
Drop a PICT file on 99helpers and it gets its own web address. Browsers can't display PICT, so anyone who opens the link downloads the file; to have the picture seen in the browser, upload a PNG or PDF copy next to it.
Questions
PICT files, frequently asked
What is a PICT file?
An Apple QuickDraw picture, the standard graphics format of the classic Mac OS. It records drawing commands, so it can hold vector shapes, text and bitmaps.
How do I open a PICT file on a modern Mac?
Preview may not open it. Use LibreOffice, GraphicConverter or ImageMagick, or Photoshop for bitmap-only files, and convert the picture to PDF or PNG.
How do I open a PICT file on Windows?
Open it in LibreOffice Draw and export it, or convert it with ImageMagick (magick picture.pict picture.png).
How do I convert PICT to PDF or PNG?
LibreOffice keeps drawings as vectors: soffice --headless --convert-to pdf picture.pct. For bitmaps, ImageMagick's magick picture.pict picture.png works.
What is the 512-byte header in a PICT file?
Space reserved for the application that wrote the file. QuickDraw ignores it, and it's usually zeros. Pictures stored as resources or on the clipboard don't have it.
Is PICT a vector or a bitmap format?
Both. It's a list of QuickDraw commands, which can draw lines, shapes and text or place bitmaps. Many PICT files in archives hold a single bitmap.
What replaced PICT?
PDF, which became the Mac's native metafile format with Mac OS X.
Related formats
Other file types explained
Keep going
Related
Sources
- Inside Macintosh: Imaging With QuickDraw, Pictures (PICT files, resources and the scrap)
- Inside Macintosh: Imaging With QuickDraw, Version and Header Opcodes
- Inside Macintosh: Imaging With QuickDraw, Opcodes in Pictures
- Timac: PICT support in 64-bit applications on Mac OS X (2010)
- Wikipedia: PICT
- GIMP developer site: Image File Formats
Last reviewed 27 October 2026.