CRC32C checksum codec (version 1.0)#

Editor’s draft 17 July 2023

Specification URI:

Corresponding ZEP:

ZEP 2 — Sharding codec

Issue tracking:

GitHub issues

Suggest an edit for this spec:

GitHub editor

Copyright 2022-Present Zarr core development team. This work is licensed under a Creative Commons Attribution 3.0 Unported License.


Defines an bytes -> bytes codec that appends a CRC32C checksum of the input bytestream.

Status of this document#


This document is a draft for review and subject to changes. It will become final when the Zarr Enhancement Proposal (ZEP) 2 is approved via the ZEP process.

Document conventions#

Conformance requirements are expressed with a combination of descriptive assertions and [RFC2119] terminology. The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in the normative parts of this document are to be interpreted as described in [RFC2119]. However, for readability, these words do not appear in all uppercase letters in this specification.

All of the text of this specification is normative except sections explicitly marked as non-normative, examples, and notes. Examples in this specification are introduced with the words “for example”.

Codec name#

The value of the name member in the codec object MUST be crc32c.

Configuration parameters#


Format and algorithm#

This is a bytes -> bytes codec.

The codec computes the CRC32C checksum as defined in [RFC3720] of the input bytestream. The output bytestream is composed of the unchanged input byte stream with the appended checksum. The checksum is represented as a 32-bit unsigned integer represented in little endian.



S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Best Current Practice. URL:


J. Satran et al. Internet Small Computer Systems Interface (iSCSI). April 2004. Proposed Standard. URL:

Change log#

No changes yet.