Skip to main content
CRC Calc

CRC-16 / EN-13757

Width16-bitRefInNoRefOutNo

Need custom parameters? Open in full calculator

Standard test string

Result

0xC2B7

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

0x00000x3D650x7ACA0x47AF0xF5940xC8F10x8F5E0xB23B0xD64D0xEB280xAC870x91E20x23D90x1EBC0x59130x6476
0x91FF0xAC9A0xEB350xD6500x646B0x590E0x1EA10x23C40x47B20x7AD70x3D780x001D0xB2260x8F430xC8EC0xF589
0x1E9B0x23FE0x64510x59340xEB0F0xD66A0x91C50xACA00xC8D60xF5B30xB21C0x8F790x3D420x00270x47880x7AED
0x8F640xB2010xF5AE0xC8CB0x7AF00x47950x003A0x3D5F0x59290x644C0x23E30x1E860xACBD0x91D80xD6770xEB12
0x3D360x00530x47FC0x7A990xC8A20xF5C70xB2680x8F0D0xEB7B0xD61E0x91B10xACD40x1EEF0x238A0x64250x5940
0xACC90x91AC0xD6030xEB660x595D0x64380x23970x1EF20x7A840x47E10x004E0x3D2B0x8F100xB2750xF5DA0xC8BF
0x23AD0x1EC80x59670x64020xD6390xEB5C0xACF30x91960xF5E00xC8850x8F2A0xB24F0x00740x3D110x7ABE0x47DB
0xB2520x8F370xC8980xF5FD0x47C60x7AA30x3D0C0x00690x641F0x597A0x1ED50x23B00x918B0xACEE0xEB410xD624
0x7A6C0x47090x00A60x3DC30x8FF80xB29D0xF5320xC8570xAC210x91440xD6EB0xEB8E0x59B50x64D00x237F0x1E1A
0xEB930xD6F60x91590xAC3C0x1E070x23620x64CD0x59A80x3DDE0x00BB0x47140x7A710xC84A0xF52F0xB2800x8FE5
0x64F70x59920x1E3D0x23580x91630xAC060xEBA90xD6CC0xB2BA0x8FDF0xC8700xF5150x472E0x7A4B0x3DE40x0081
0xF5080xC86D0x8FC20xB2A70x009C0x3DF90x7A560x47330x23450x1E200x598F0x64EA0xD6D10xEBB40xAC1B0x917E
0x475A0x7A3F0x3D900x00F50xB2CE0x8FAB0xC8040xF5610x91170xAC720xEBDD0xD6B80x64830x59E60x1E490x232C
0xD6A50xEBC00xAC6F0x910A0x23310x1E540x59FB0x649E0x00E80x3D8D0x7A220x47470xF57C0xC8190x8FB60xB2D3
0x59C10x64A40x230B0x1E6E0xAC550x91300xD69F0xEBFA0x8F8C0xB2E90xF5460xC8230x7A180x477D0x00D20x3DB7
0xC83E0xF55B0xB2F40x8F910x3DAA0x00CF0x47600x7A050x1E730x23160x64B90x59DC0xEBE70xD6820x912D0xAC48

CRC Source Code

/* 
 * Model: CRC-16 / EN-13757 (16-bit)
 * Poly: 0x3D65, Init: 0x0000, XorOut: 0xFFFF
 * CRC Table C Source Code & Lookup Table Generator
 */
#include <stdint.h>
#include <stddef.h>

const uint16_t crc_table[256] = {
  0x0000, 0x3D65, 0x7ACA, 0x47AF, 0xF594, 0xC8F1, 0x8F5E, 0xB23B, 
  0xD64D, 0xEB28, 0xAC87, 0x91E2, 0x23D9, 0x1EBC, 0x5913, 0x6476, 
  0x91FF, 0xAC9A, 0xEB35, 0xD650, 0x646B, 0x590E, 0x1EA1, 0x23C4, 
  0x47B2, 0x7AD7, 0x3D78, 0x001D, 0xB226, 0x8F43, 0xC8EC, 0xF589, 
  0x1E9B, 0x23FE, 0x6451, 0x5934, 0xEB0F, 0xD66A, 0x91C5, 0xACA0, 
  0xC8D6, 0xF5B3, 0xB21C, 0x8F79, 0x3D42, 0x0027, 0x4788, 0x7AED, 
  0x8F64, 0xB201, 0xF5AE, 0xC8CB, 0x7AF0, 0x4795, 0x003A, 0x3D5F, 
  0x5929, 0x644C, 0x23E3, 0x1E86, 0xACBD, 0x91D8, 0xD677, 0xEB12, 
  0x3D36, 0x0053, 0x47FC, 0x7A99, 0xC8A2, 0xF5C7, 0xB268, 0x8F0D, 
  0xEB7B, 0xD61E, 0x91B1, 0xACD4, 0x1EEF, 0x238A, 0x6425, 0x5940, 
  0xACC9, 0x91AC, 0xD603, 0xEB66, 0x595D, 0x6438, 0x2397, 0x1EF2, 
  0x7A84, 0x47E1, 0x004E, 0x3D2B, 0x8F10, 0xB275, 0xF5DA, 0xC8BF, 
  0x23AD, 0x1EC8, 0x5967, 0x6402, 0xD639, 0xEB5C, 0xACF3, 0x9196, 
  0xF5E0, 0xC885, 0x8F2A, 0xB24F, 0x0074, 0x3D11, 0x7ABE, 0x47DB, 
  0xB252, 0x8F37, 0xC898, 0xF5FD, 0x47C6, 0x7AA3, 0x3D0C, 0x0069, 
  0x641F, 0x597A, 0x1ED5, 0x23B0, 0x918B, 0xACEE, 0xEB41, 0xD624, 
  0x7A6C, 0x4709, 0x00A6, 0x3DC3, 0x8FF8, 0xB29D, 0xF532, 0xC857, 
  0xAC21, 0x9144, 0xD6EB, 0xEB8E, 0x59B5, 0x64D0, 0x237F, 0x1E1A, 
  0xEB93, 0xD6F6, 0x9159, 0xAC3C, 0x1E07, 0x2362, 0x64CD, 0x59A8, 
  0x3DDE, 0x00BB, 0x4714, 0x7A71, 0xC84A, 0xF52F, 0xB280, 0x8FE5, 
  0x64F7, 0x5992, 0x1E3D, 0x2358, 0x9163, 0xAC06, 0xEBA9, 0xD6CC, 
  0xB2BA, 0x8FDF, 0xC870, 0xF515, 0x472E, 0x7A4B, 0x3DE4, 0x0081, 
  0xF508, 0xC86D, 0x8FC2, 0xB2A7, 0x009C, 0x3DF9, 0x7A56, 0x4733, 
  0x2345, 0x1E20, 0x598F, 0x64EA, 0xD6D1, 0xEBB4, 0xAC1B, 0x917E, 
  0x475A, 0x7A3F, 0x3D90, 0x00F5, 0xB2CE, 0x8FAB, 0xC804, 0xF561, 
  0x9117, 0xAC72, 0xEBDD, 0xD6B8, 0x6483, 0x59E6, 0x1E49, 0x232C, 
  0xD6A5, 0xEBC0, 0xAC6F, 0x910A, 0x2331, 0x1E54, 0x59FB, 0x649E, 
  0x00E8, 0x3D8D, 0x7A22, 0x4747, 0xF57C, 0xC819, 0x8FB6, 0xB2D3, 
  0x59C1, 0x64A4, 0x230B, 0x1E6E, 0xAC55, 0x9130, 0xD69F, 0xEBFA, 
  0x8F8C, 0xB2E9, 0xF546, 0xC823, 0x7A18, 0x477D, 0x00D2, 0x3DB7, 
  0xC83E, 0xF55B, 0xB2F4, 0x8F91, 0x3DAA, 0x00CF, 0x4760, 0x7A05, 
  0x1E73, 0x2316, 0x64B9, 0x59DC, 0xEBE7, 0xD682, 0x912D, 0xAC48
};

uint16_t calculate_crc(const uint8_t *data, size_t length) {
    uint16_t crc = 0x0000;
    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 >> 8) ^ data[i]);
        crc = (crc << 8) ^ crc_table[idx];
        #endif
    }
    return crc ^ 0xFFFF;
}

About CRC-16/EN-13757

CRC-16/EN-13757 is used in metering communication standards including M-Bus.

CRC-16/EN-13757 is a 16-bit CRC model defined by polynomial 0x3D65, an initial register value of 0x0000, and final XOR 0xFFFF. It uses normal, non-reflected input and output processing.

Documented application context for this model includes M-Bus, Smart metering, Utility networks. 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
0xC2B7
Residue
0xA366

Model characteristics

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

Bit order
Normal
Register start
0x0000
Final XOR
0xFFFF
Published check
0xC2B7

Implementation checks for CRC-16/EN-13757

  • Use a 16-bit register and polynomial 0x3D65.
  • Initialize the register to 0x0000 and use XorOut 0xFFFF exactly as listed; changing either value defines a different model.
  • Verify the implementation with ASCII “123456789”; the expected result is 0xC2B7.

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

Complete CRC-16/EN-13757 parameters

CRC parameter guide
ParameterValueMeaningReference
Width16 bitsCRC register and result widthRead guide
Poly0x3D65Generator polynomial without the leading termRead guide
Init0x0000Initial CRC register valueRead guide
RefInNoReflect each input byte before processingRead guide
RefOutNoReflect the register before XOR OutRead guide
XorOut0xFFFFFinal value XORed with the CRC registerRead guide
Check0xC2B7CRC of ASCII “123456789”Read guide
Residue0xA366Expected residue after appending a valid CRCRead guide
AliasesM-Bus CRC

Where CRC-16/EN-13757 is used

  • 01M-Bus
  • 02Smart metering
  • 03Utility networks

CRC-16/EN-13757 FAQ

What is the check value for CRC-16/EN-13757?

For the standard ASCII test input 123456789, the check value of CRC-16/EN-13757 is 0xC2B7.

What polynomial does CRC-16/EN-13757 use?

CRC-16/EN-13757 uses the 16-bit polynomial 0x3D65.

Does CRC-16/EN-13757 use reflected input and output?

For CRC-16/EN-13757, RefIn is No and RefOut is No.

What is CRC-16/EN-13757 commonly confused with?

CRC-16/DNP uses the same polynomial (0x3D65), which is the usual source of mix-ups — matching the polynomial alone does not reproduce CRC-16/EN-13757. The two models differ in input reflection and output reflection, so a port from one to the other needs those fields checked explicitly, not just the poly.