[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Bytes](https://evolu.dev/docs/api-reference/common/Bytes) › ByteLength

```ts
const ByteLength: brand(
  "ByteLength",
  NonNegativeInt,
  (value) =>
    Object.is(value, -0)
      ? err<ByteLengthError>({ type: "ByteLength", value })
      : ok(),
  () => "The value -0 is not a byte length. Use 0 instead.",
);
```

Defined in: [packages/common/src/Bytes.ts:1424](https://github.com/evoluhq/evolu/blob/dd96d79f1dbe9a49fa12ce8e0aa7d3d0177795ca/packages/common/src/Bytes.ts#L1424)

Non-negative safe integer number of bytes.

The canonical unit for sizes, as milliseconds are for time. APIs accept
[ByteSize](https://evolu.dev/docs/api-reference/common/Bytes/type-aliases/ByteSize) and normalize it with [byteSizeToByteLength](https://evolu.dev/docs/api-reference/common/Bytes/functions/byteSizeToByteLength). Parse text
such as an environment variable with [ByteLengthFromString](https://evolu.dev/docs/api-reference/common/Bytes/variables/ByteLengthFromString). Negative
zero is rejected so zero has one canonical representation.

### Example

```ts

assertOk(ByteLength.fromUnknown(0), 0);
assertOk(ByteLength.fromUnknown(1024), 1024);
assertErr(ByteLength.fromUnknown(-0));
assertErr(ByteLength.fromUnknown(-1));
assertErr(ByteLength.fromUnknown(1.5));
```