Decoded information
- Printer serial (6-digit)
- —
- Printer serial (8-digit)
- —
- Print date
- —
- Print time
- —
- Column 15 value
- —
Decode Machine Identification Codes (MIC) from yellow microdot patterns — entirely in your browser
Click cells on the interactive 15×8 grid to mark yellow dots from a color laser print. Decode the printer serial number, print date, and time using the EFF Xerox DocuColor scheme. Row and column parity are verified automatically.
Mark each yellow dot you observe on a printed page. The top row and left column are parity bits. Data rows are labeled with their bit weights (64 down to 1). Columns are numbered 1–15 left to right.
Many color laser printers embed nearly invisible Machine Identification Codes (MIC) — also called forensic dots or tracking dots — on every page they print. These codes consist of tiny yellow microdots arranged in a repeating grid pattern across the page. Research by the Electronic Frontier Foundation (EFF) demonstrated that Xerox DocuColor printers encode the printer serial number, date, and time of printing in these dots.
The dots are yellow (barely visible on white paper), less than one millimeter in diameter, and repeated across the entire page with slight offsets between repetitions. Similar tracking mechanisms have been reported in printers from Canon, HP, and other manufacturers, though encoding schemes differ by brand and model.
The Xerox DocuColor scheme uses a rectangular grid of 15 columns × 8 rows. The top row and leftmost column serve as parity bits for error detection — every data row and column must contain an odd number of dots. Each data column (2–15) encodes one 7-bit byte, read bottom-to-top (row weights: 1, 2, 4, 8, 16, 32, 64).
| Column | Field |
|---|---|
| 1 | Row parity |
| 2 | Minute |
| 5 | Hour |
| 6 | Day |
| 7 | Month |
| 8 | Year (last two digits) |
| 10 | Separator |
| 11–14 | Printer serial number (BCD pairs) |
| 15 | Configuration / unknown |
The printer serial number is encoded as binary-coded decimal (BCD) across columns 11–14, two digits
per column. For example, serial 00654321 is stored as columns 14=00, 13=65, 12=43, 11=21.
Because tracking dots can link a printed document to a specific printer and timestamp, they raise significant privacy concerns. A whistleblower, journalist, or activist printing sensitive material may unknowingly leave a forensic trail on every page. The U.S. Secret Service acknowledged agreements with printer manufacturers to include such codes, ostensibly to combat counterfeiting.
Understanding how these codes work is the first step toward informed decisions about document security. This decoder is provided for educational and research purposes, based on the EFF's publicly released reverse-engineering work.