CRC-8 Calculator
Result
Algorithm Reference
Result is calculated from the current input. Check is the published verification value for the standard input 123456789. RefIn and RefOut are separate input and output reflection settings. Click a row to apply that algorithm; on narrow screens, the chevron button at the end of a row reveals its full parameters.
CRC Lookup Table
CRC Source Code
/*
* Model: CRC-8 / SMBUS (8-bit)
* Poly: 0x07, 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, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15,
0x38, 0x3F, 0x36, 0x31, 0x24, 0x23, 0x2A, 0x2D,
0x70, 0x77, 0x7E, 0x79, 0x6C, 0x6B, 0x62, 0x65,
0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5A, 0x5D,
0xE0, 0xE7, 0xEE, 0xE9, 0xFC, 0xFB, 0xF2, 0xF5,
0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD,
0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85,
0xA8, 0xAF, 0xA6, 0xA1, 0xB4, 0xB3, 0xBA, 0xBD,
0xC7, 0xC0, 0xC9, 0xCE, 0xDB, 0xDC, 0xD5, 0xD2,
0xFF, 0xF8, 0xF1, 0xF6, 0xE3, 0xE4, 0xED, 0xEA,
0xB7, 0xB0, 0xB9, 0xBE, 0xAB, 0xAC, 0xA5, 0xA2,
0x8F, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9D, 0x9A,
0x27, 0x20, 0x29, 0x2E, 0x3B, 0x3C, 0x35, 0x32,
0x1F, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0D, 0x0A,
0x57, 0x50, 0x59, 0x5E, 0x4B, 0x4C, 0x45, 0x42,
0x6F, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7D, 0x7A,
0x89, 0x8E, 0x87, 0x80, 0x95, 0x92, 0x9B, 0x9C,
0xB1, 0xB6, 0xBF, 0xB8, 0xAD, 0xAA, 0xA3, 0xA4,
0xF9, 0xFE, 0xF7, 0xF0, 0xE5, 0xE2, 0xEB, 0xEC,
0xC1, 0xC6, 0xCF, 0xC8, 0xDD, 0xDA, 0xD3, 0xD4,
0x69, 0x6E, 0x67, 0x60, 0x75, 0x72, 0x7B, 0x7C,
0x51, 0x56, 0x5F, 0x58, 0x4D, 0x4A, 0x43, 0x44,
0x19, 0x1E, 0x17, 0x10, 0x05, 0x02, 0x0B, 0x0C,
0x21, 0x26, 0x2F, 0x28, 0x3D, 0x3A, 0x33, 0x34,
0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B,
0x76, 0x71, 0x78, 0x7F, 0x6A, 0x6D, 0x64, 0x63,
0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B,
0x06, 0x01, 0x08, 0x0F, 0x1A, 0x1D, 0x14, 0x13,
0xAE, 0xA9, 0xA0, 0xA7, 0xB2, 0xB5, 0xBC, 0xBB,
0x96, 0x91, 0x98, 0x9F, 0x8A, 0x8D, 0x84, 0x83,
0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB,
0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3
};
uint8_t calculate_crc(const uint8_t *data, size_t length) {
uint8_t crc = 0x00;
for (size_t i = 0; i < length; i++) {
#if 0
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;
}CRC Algorithm Identifier
Already know the CRC output for this data but not which algorithm produced it? Enter the known result below — every one of the 70 catalog algorithms is recalculated against the current input data and matched against it automatically.
Enter a known CRC value to search the catalog
All 70 algorithms are checked against the current input data.
CRC Patch Finder
About the CRC-8 Calculator
This calculator loads with CRC-8/SMBUS (polynomial 0x07) selected — the model most often meant when documentation just says “CRC-8” without naming a specific variant, since it is the SMBus packet error code and one of the simplest published 8-bit models. Switch the preset above to load any of the other 19 CRC-8 variants in the catalog, including CRC-8/AUTOSAR, CRC-8/BLUETOOTH, CRC-8/MAXIM-DOW, and CRC-8/SAE-J1850 — the calculator, lookup table, and source code generator below update immediately to match.
Every CRC-8 model differs in polynomial, initial value, reflection, or final XOR, so results are not interchangeable between variants even though all of them produce an 8-bit checksum — check the parameter panel for the currently selected preset, or browse every CRC-8 variant in the catalog below.
Other CRC-8 calculators
19 more published CRC-8 models in the catalog — each opens in a calculator preloaded with its own parameters.
| Algorithm | Poly | Init | RefIn | RefOut | XorOut | Check | Details |
|---|---|---|---|---|---|---|---|
| 0x2F | 0xFF | No | No | 0xFF | 0xDF | View | |
CRC-8/BLUETOOTHBluetooth CRC-8 | 0xA7 | 0x00 | Yes | Yes | 0x00 | 0x26 | View |
CRC-8/CDMA2000CDMA2000 CRC-8 | 0x9B | 0xFF | No | No | 0x00 | 0xDA | View |
CRC-8/DARCDARC CRC-8 | 0x39 | 0x00 | Yes | Yes | 0x00 | 0x15 | View |
CRC-8/DVB-S2DVB-S2 CRC-8 | 0xD5 | 0x00 | No | No | 0x00 | 0xBC | View |
CRC-8/GSM-AGSM CRC-8 A | 0x1D | 0x00 | No | No | 0x00 | 0x37 | View |
CRC-8/GSM-BGSM CRC-8 B | 0x49 | 0x00 | No | No | 0xFF | 0x94 | View |
CRC-8/HITAGHITAG CRC-8 | 0x1D | 0xFF | No | No | 0x00 | 0xB4 | View |
CRC-8/I-432-1CRC-8/ITU · ATM HEC | 0x07 | 0x00 | No | No | 0x55 | 0xA1 | View |
CRC-8/I-CODEI-CODE CRC-8 | 0x1D | 0xFD | No | No | 0x00 | 0x7E | View |
CRC-8/LTELTE CRC-8 | 0x9B | 0x00 | No | No | 0x00 | 0xEA | View |
CRC-8/MAXIM-DOWCRC-8/MAXIM · DALLAS CRC8 · DOW-CRC | 0x31 | 0x00 | Yes | Yes | 0x00 | 0xA1 | View |
CRC-8/MIFARE-MADMIFARE MAD CRC | 0x1D | 0xC7 | No | No | 0x00 | 0x99 | View |
CRC-8/NRSC-5NRSC-5 CRC-8 | 0x31 | 0xFF | No | No | 0x00 | 0xF7 | View |
CRC-8/OPENSAFETYopenSAFETY CRC-8 | 0x2F | 0x00 | No | No | 0x00 | 0x3E | View |
CRC-8/ROHCROHC CRC-8 | 0x07 | 0xFF | Yes | Yes | 0x00 | 0xD0 | View |
CRC-8/SAE-J1850J1850 CRC-8 | 0x1D | 0xFF | No | No | 0xFF | 0x4B | View |
CRC-8/TECH-3250AES/EBU CRC-8 | 0x1D | 0xFF | Yes | Yes | 0x00 | 0x97 | View |
CRC-8/WCDMAWCDMA CRC-8 | 0x9B | 0x00 | Yes | Yes | 0x00 | 0x25 | View |
- Poly
- 0x2F
- Init
- 0xFF
- RefIn
- No
- RefOut
- No
- XorOut
- 0xFF
- Check
- 0xDF
- Poly
- 0xA7
- Init
- 0x00
- RefIn
- Yes
- RefOut
- Yes
- XorOut
- 0x00
- Check
- 0x26
- Poly
- 0x9B
- Init
- 0xFF
- RefIn
- No
- RefOut
- No
- XorOut
- 0x00
- Check
- 0xDA
- Poly
- 0x39
- Init
- 0x00
- RefIn
- Yes
- RefOut
- Yes
- XorOut
- 0x00
- Check
- 0x15
- Poly
- 0xD5
- Init
- 0x00
- RefIn
- No
- RefOut
- No
- XorOut
- 0x00
- Check
- 0xBC
- Poly
- 0x1D
- Init
- 0x00
- RefIn
- No
- RefOut
- No
- XorOut
- 0x00
- Check
- 0x37
- Poly
- 0x49
- Init
- 0x00
- RefIn
- No
- RefOut
- No
- XorOut
- 0xFF
- Check
- 0x94
- Poly
- 0x1D
- Init
- 0xFF
- RefIn
- No
- RefOut
- No
- XorOut
- 0x00
- Check
- 0xB4
- Poly
- 0x07
- Init
- 0x00
- RefIn
- No
- RefOut
- No
- XorOut
- 0x55
- Check
- 0xA1
- Poly
- 0x1D
- Init
- 0xFD
- RefIn
- No
- RefOut
- No
- XorOut
- 0x00
- Check
- 0x7E
- Poly
- 0x9B
- Init
- 0x00
- RefIn
- No
- RefOut
- No
- XorOut
- 0x00
- Check
- 0xEA
- Poly
- 0x31
- Init
- 0x00
- RefIn
- Yes
- RefOut
- Yes
- XorOut
- 0x00
- Check
- 0xA1
- Poly
- 0x1D
- Init
- 0xC7
- RefIn
- No
- RefOut
- No
- XorOut
- 0x00
- Check
- 0x99
- Poly
- 0x31
- Init
- 0xFF
- RefIn
- No
- RefOut
- No
- XorOut
- 0x00
- Check
- 0xF7
- Poly
- 0x2F
- Init
- 0x00
- RefIn
- No
- RefOut
- No
- XorOut
- 0x00
- Check
- 0x3E
- Poly
- 0x07
- Init
- 0xFF
- RefIn
- Yes
- RefOut
- Yes
- XorOut
- 0x00
- Check
- 0xD0
- Poly
- 0x1D
- Init
- 0xFF
- RefIn
- No
- RefOut
- No
- XorOut
- 0xFF
- Check
- 0x4B
- Poly
- 0x1D
- Init
- 0xFF
- RefIn
- Yes
- RefOut
- Yes
- XorOut
- 0x00
- Check
- 0x97
- Poly
- 0x9B
- Init
- 0x00
- RefIn
- Yes
- RefOut
- Yes
- XorOut
- 0x00
- Check
- 0x25
Looking for a different width? Browse the full 70-algorithm catalog.