utilstuff.com
Back to Dev Tools

CRC Calculator

Calculate and analyze CRC checksums for data integrity verification.

What Is a CRC?

A Cyclic Redundancy Check (CRC) is a short checksum computed from a block of data, designed to catch accidental corruption — a flipped bit from a bad network link or storage error — not to provide cryptographic security. This tool supports dozens of standard CRC-16 and CRC-32 variants, including CRC-16/MODBUS, CRC-16/CCITT-FALSE, and CRC-32/ISO-HDLC.

How to Use the CRC Calculator

  1. Enter data as text or hex bytes.
  2. Choose the CRC variant matching your protocol or file format.
  3. Read the computed checksum, or use the frame/Modbus tools to build and validate a complete data frame.

Technical Notes

  • CRC is for error detection, not tamper resistance — it's easy for someone to intentionally modify data and recompute a matching CRC, which a cryptographic hash or MAC is designed to prevent.
  • Different CRC variants use different polynomials, initial values, and bit orderings, so the same data produces a different checksum under each variant — always match the exact variant your protocol or file format specifies.

Frequently Asked Questions

Is a CRC a secure hash?+

No. A CRC only detects accidental changes such as transmission noise or storage errors. It is trivial to alter data and recompute a matching CRC on purpose, so use a cryptographic hash or an HMAC when you need tamper resistance.

Why does the same data give different CRC values in different tools?+

Because "CRC-16" or "CRC-32" alone is not a full specification. The result depends on the polynomial, the initial value, whether input and output bits are reflected (RefIn/RefOut), and the final XOR value. Match the exact named variant your protocol or file format defines.

What do polynomial, init, RefIn/RefOut, and XorOut mean?+

The polynomial is the divisor that defines the CRC. Init is the starting register value. RefIn and RefOut control whether input bytes and the final result are processed least-significant-bit first. XorOut is a constant XORed into the final value. Together these five parameters fully define a CRC variant.