# SIZE_CONSTANTS

```ts
const SIZE_CONSTANTS: object;
```

Defined in: [packages/synapse-sdk/src/utils/constants.ts:145](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/utils/constants.ts#L145)

Data size constants

## Type Declaration

### DEFAULT\_UPLOAD\_BATCH\_SIZE

```ts
readonly DEFAULT_UPLOAD_BATCH_SIZE: 32 = 32;
```

Default number of uploads to batch together in a single addPieces transaction
This balances gas efficiency with reasonable transaction sizes

### GiB

```ts
readonly GiB: bigint;
```

Bytes in 1 GiB

### KiB

```ts
readonly KiB: 1024n = 1024n;
```

Bytes in 1 KiB

### MAX\_UPLOAD\_SIZE

```ts
readonly MAX_UPLOAD_SIZE: 1065353216 = CORE_MAX_UPLOAD_SIZE;
```

Maximum upload size supported by Curio PDP servers: 1 GiB adjusted for fr32 expansion.

1 GiB * (127/128) = 1,065,353,216 bytes

Fr32 encoding adds 2 bits of padding per 254 bits of data, resulting in 128 bytes
of padded data for every 127 bytes of raw data.

Note: While it's technically possible to upload pieces this large as Uint8Array
(even in browsers), streaming via AsyncIterable is strongly recommended for
non-trivial sizes. In-memory operations with large byte arrays can:
- Cause memory pressure and garbage collection issues
- Block the JavaScript event loop during allocation/copying
- Trigger browser tab slowdowns or "unresponsive script" warnings

For optimal performance and resource utilization, prefer streaming for pieces
larger than a few megabytes, especially in browser environments.

Imported from @filoz/synapse-core/piece

### MiB

```ts
readonly MiB: bigint;
```

Bytes in 1 MiB

### MIN\_UPLOAD\_SIZE

```ts
readonly MIN_UPLOAD_SIZE: 127 = 127;
```

Minimum upload size (127 bytes)
PieceCIDv2 calculation requires at least 127 bytes payload

### PiB

```ts
readonly PiB: bigint;
```

Bytes in 1 PiB

### TiB

```ts
readonly TiB: bigint;
```

Bytes in 1 TiB