Skip to main content
CRC Calc

CRC-8 / MAXIM-DOW

Width8-bitRefInYesRefOutYes

Need custom parameters? Open in full calculator

Standard test string

Result

0xA1

Similar CRC Algorithms

Result is calculated from the current input. Check is the published verification value for the standard input 123456789. Click another algorithm to view its detail page.

CRC Lookup Table

0x000x5E0xBC0xE20x610x3F0xDD0x830xC20x9C0x7E0x200xA30xFD0x1F0x41
0x9D0xC30x210x7F0xFC0xA20x400x1E0x5F0x010xE30xBD0x3E0x600x820xDC
0x230x7D0x9F0xC10x420x1C0xFE0xA00xE10xBF0x5D0x030x800xDE0x3C0x62
0xBE0xE00x020x5C0xDF0x810x630x3D0x7C0x220xC00x9E0x1D0x430xA10xFF
0x460x180xFA0xA40x270x790x9B0xC50x840xDA0x380x660xE50xBB0x590x07
0xDB0x850x670x390xBA0xE40x060x580x190x470xA50xFB0x780x260xC40x9A
0x650x3B0xD90x870x040x5A0xB80xE60xA70xF90x1B0x450xC60x980x7A0x24
0xF80xA60x440x1A0x990xC70x250x7B0x3A0x640x860xD80x5B0x050xE70xB9
0x8C0xD20x300x6E0xED0xB30x510x0F0x4E0x100xF20xAC0x2F0x710x930xCD
0x110x4F0xAD0xF30x700x2E0xCC0x920xD30x8D0x6F0x310xB20xEC0x0E0x50
0xAF0xF10x130x4D0xCE0x900x720x2C0x6D0x330xD10x8F0x0C0x520xB00xEE
0x320x6C0x8E0xD00x530x0D0xEF0xB10xF00xAE0x4C0x120x910xCF0x2D0x73
0xCA0x940x760x280xAB0xF50x170x490x080x560xB40xEA0x690x370xD50x8B
0x570x090xEB0xB50x360x680x8A0xD40x950xCB0x290x770xF40xAA0x480x16
0xE90xB70x550x0B0x880xD60x340x6A0x2B0x750x970xC90x4A0x140xF60xA8
0x740x2A0xC80x960x150x4B0xA90xF70xB60xE80x0A0x540xD70x890x6B0x35

CRC Source Code

/* 
 * Model: CRC-8 / MAXIM-DOW (8-bit)
 * Poly: 0x31, Init: 0x00, XorOut: 0x00
 * CRC Table C Source Code & Lookup Table Generator
 */
#include <stdint.h>
#include <stddef.h>

const uint8_t crc_table[256] = {
  0x00, 0x5E, 0xBC, 0xE2, 0x61, 0x3F, 0xDD, 0x83, 
  0xC2, 0x9C, 0x7E, 0x20, 0xA3, 0xFD, 0x1F, 0x41, 
  0x9D, 0xC3, 0x21, 0x7F, 0xFC, 0xA2, 0x40, 0x1E, 
  0x5F, 0x01, 0xE3, 0xBD, 0x3E, 0x60, 0x82, 0xDC, 
  0x23, 0x7D, 0x9F, 0xC1, 0x42, 0x1C, 0xFE, 0xA0, 
  0xE1, 0xBF, 0x5D, 0x03, 0x80, 0xDE, 0x3C, 0x62, 
  0xBE, 0xE0, 0x02, 0x5C, 0xDF, 0x81, 0x63, 0x3D, 
  0x7C, 0x22, 0xC0, 0x9E, 0x1D, 0x43, 0xA1, 0xFF, 
  0x46, 0x18, 0xFA, 0xA4, 0x27, 0x79, 0x9B, 0xC5, 
  0x84, 0xDA, 0x38, 0x66, 0xE5, 0xBB, 0x59, 0x07, 
  0xDB, 0x85, 0x67, 0x39, 0xBA, 0xE4, 0x06, 0x58, 
  0x19, 0x47, 0xA5, 0xFB, 0x78, 0x26, 0xC4, 0x9A, 
  0x65, 0x3B, 0xD9, 0x87, 0x04, 0x5A, 0xB8, 0xE6, 
  0xA7, 0xF9, 0x1B, 0x45, 0xC6, 0x98, 0x7A, 0x24, 
  0xF8, 0xA6, 0x44, 0x1A, 0x99, 0xC7, 0x25, 0x7B, 
  0x3A, 0x64, 0x86, 0xD8, 0x5B, 0x05, 0xE7, 0xB9, 
  0x8C, 0xD2, 0x30, 0x6E, 0xED, 0xB3, 0x51, 0x0F, 
  0x4E, 0x10, 0xF2, 0xAC, 0x2F, 0x71, 0x93, 0xCD, 
  0x11, 0x4F, 0xAD, 0xF3, 0x70, 0x2E, 0xCC, 0x92, 
  0xD3, 0x8D, 0x6F, 0x31, 0xB2, 0xEC, 0x0E, 0x50, 
  0xAF, 0xF1, 0x13, 0x4D, 0xCE, 0x90, 0x72, 0x2C, 
  0x6D, 0x33, 0xD1, 0x8F, 0x0C, 0x52, 0xB0, 0xEE, 
  0x32, 0x6C, 0x8E, 0xD0, 0x53, 0x0D, 0xEF, 0xB1, 
  0xF0, 0xAE, 0x4C, 0x12, 0x91, 0xCF, 0x2D, 0x73, 
  0xCA, 0x94, 0x76, 0x28, 0xAB, 0xF5, 0x17, 0x49, 
  0x08, 0x56, 0xB4, 0xEA, 0x69, 0x37, 0xD5, 0x8B, 
  0x57, 0x09, 0xEB, 0xB5, 0x36, 0x68, 0x8A, 0xD4, 
  0x95, 0xCB, 0x29, 0x77, 0xF4, 0xAA, 0x48, 0x16, 
  0xE9, 0xB7, 0x55, 0x0B, 0x88, 0xD6, 0x34, 0x6A, 
  0x2B, 0x75, 0x97, 0xC9, 0x4A, 0x14, 0xF6, 0xA8, 
  0x74, 0x2A, 0xC8, 0x96, 0x15, 0x4B, 0xA9, 0xF7, 
  0xB6, 0xE8, 0x0A, 0x54, 0xD7, 0x89, 0x6B, 0x35
};

uint8_t calculate_crc(const uint8_t *data, size_t length) {
    uint8_t crc = 0x00;
    for (size_t i = 0; i < length; i++) {
        #if 1
        uint8_t idx = (uint8_t)(crc ^ data[i]);
        crc = (crc >> 8) ^ crc_table[idx];
        #else
        uint8_t idx = (uint8_t)((crc >> 0) ^ data[i]);
        crc = (crc << 8) ^ crc_table[idx];
        #endif
    }
    return crc ^ 0x00;
}

About CRC-8/MAXIM-DOW

CRC-8/MAXIM-DOW is a reflected 8-bit CRC commonly used by Dallas and Maxim one-wire devices.

CRC-8/MAXIM-DOW is a 8-bit CRC model defined by polynomial 0x31, an initial register value of 0x00, and final XOR 0x00. It processes reflected input bytes and reports a reflected output.

Documented application context for this model includes 1-Wire devices, Dallas sensors, Device identification. The calculator above applies this exact parameter set to the current input; the published Check value below is instead the fixed verification result for ASCII 123456789.

Standard test vector

CRC implementations are commonly verified with the ASCII input 123456789.

Input format
ASCII
Input
123456789
Expected CRC
0xA1
Residue
0x00

Model characteristics

A model is identified by its complete parameter set, not its polynomial alone.

Bit order
Reflected
Register start
0x00
Final XOR
0x00
Published check
0xA1

Implementation checks for CRC-8/MAXIM-DOW

  • Use a 8-bit register and polynomial 0x31.
  • Initialize the register to 0x00 and use XorOut 0x00 exactly as listed; changing either value defines a different model.
  • Verify the implementation with ASCII “123456789”; the expected result is 0xA1.

Continue with the main calculator, browse the algorithm catalog, compare models in the Algorithm Reference section, or generate a lookup table.

Complete CRC-8/MAXIM-DOW parameters

CRC parameter guide
ParameterValueMeaningReference
Width8 bitsCRC register and result widthRead guide
Poly0x31Generator polynomial without the leading termRead guide
Init0x00Initial CRC register valueRead guide
RefInYesReflect each input byte before processingRead guide
RefOutYesReflect the register before XOR OutRead guide
XorOut0x00Final value XORed with the CRC registerRead guide
Check0xA1CRC of ASCII “123456789”Read guide
Residue0x00Expected residue after appending a valid CRCRead guide
AliasesCRC-8/MAXIMDALLAS CRC8DOW-CRC

Where CRC-8/MAXIM-DOW is used

  • 011-Wire devices
  • 02Dallas sensors
  • 03Device identification

CRC-8/MAXIM-DOW FAQ

What is the check value for CRC-8/MAXIM-DOW?

For the standard ASCII test input 123456789, the check value of CRC-8/MAXIM-DOW is 0xA1.

What polynomial does CRC-8/MAXIM-DOW use?

CRC-8/MAXIM-DOW uses the 8-bit polynomial 0x31.

Does CRC-8/MAXIM-DOW use reflected input and output?

For CRC-8/MAXIM-DOW, RefIn is Yes and RefOut is Yes.

What is CRC-8/MAXIM-DOW commonly confused with?

CRC-8/NRSC-5 uses the same polynomial (0x31), which is the usual source of mix-ups — matching the polynomial alone does not reproduce CRC-8/MAXIM-DOW. The two models differ in initial value, input reflection, and output reflection, so a port from one to the other needs those fields checked explicitly, not just the poly.