# @uttori/data-tools

> Tools for working with binary data.

Latest version **4.1.0** (published 2026-09-24) · MIT license · 0 weekly downloads

## Install

```sh
npm install @uttori/data-tools
pnpm add @uttori/data-tools
yarn add @uttori/data-tools
bun add @uttori/data-tools
```

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; recently updated; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 4.1.0 |
| Published | 2026-09-24 |
| First published | 2020-06-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM |
| Node | >=20.0.0 |
| Dependencies | 1 |
| Unpacked size | 1.4 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Matthew Callis |
| Maintainers | matthewcallis |
| Keywords | uttori, binary, data, parsing |

## Links

- npm: https://www.npmjs.com/package/@uttori/data-tools
- Repository: https://github.com/uttori/uttori-data-tools
- Issues: https://github.com/uttori/uttori-data-tools/issues
- npm.io page: https://npm.io/package/@uttori/data-tools

## Dependencies (1)

- [pako](https://npm.io/package/pako.md) ^3.0.2

## Alternatives

- [gamedig](https://npm.io/package/gamedig.md) — 29.3K weekly downloads
- [join-monster](https://npm.io/package/join-monster.md) — 12.8K weekly downloads
- [masked](https://npm.io/package/masked.md) — 5.5K weekly downloads
- [@comunica/actor-query-process-explain-logical](https://npm.io/package/@comunica/actor-query-process-explain-logical.md) — 4.7K weekly downloads
- [@veracity/vui](https://npm.io/package/@veracity/vui.md) — 4.6K weekly downloads

## Recent versions

- 4.1.0 (latest) — 2026-09-24
- 4.0.0 — 2026-06-15
- 3.2.0 — 2025-10-17
- 3.1.2 — 2025-01-16
- 3.1.1 — 2024-09-01
- 3.1.0 — 2024-08-30
- 3.0.0 — 2024-01-26
- 2.4.0 — 2022-05-31
- 2.3.0 — 2021-12-27
- 2.2.0 — 2021-06-26
- 2.1.0 — 2021-04-05
- 2.0.2 — 2021-01-15
- 2.0.1 — 2021-01-09
- 2.0.0 — 2021-01-08
- 1.8.0 — 2021-01-06
- … 13 more at https://npm.io/package/@uttori/data-tools/versions

## README

[![view on npm](https://img.shields.io/npm/v/@uttori/data-tools.svg)](https://www.npmjs.com/package/@uttori/data-tools)
[![npm module downloads](https://img.shields.io/npm/dt/@uttori/data-tools)](https://www.npmjs.com/package/@uttori/data-tools)
[![Coverage Status](https://coveralls.io/repos/uttori/uttori-data-tools/badge.svg?branch=master)](https://coveralls.io/r/uttori/uttori-data-tools?branch=master)
[![Tree-Shaking Support](https://badgen.net/bundlephobia/tree-shaking/@uttori/data-tools)](https://bundlephobia.com/result?p=@uttori/data-tools)
[![Dependency Count](https://badgen.net/bundlephobia/dependency-count/@uttori/data-tools)](https://bundlephobia.com/result?p=@uttori/data-tools)
[![Minified + GZip](https://badgen.net/bundlephobia/minzip/@uttori/data-tools)](https://bundlephobia.com/result?p=@uttori/data-tools)
[![Minified](https://badgen.net/bundlephobia/min/@uttori/data-tools)](https://bundlephobia.com/result?p=@uttori/data-tools)

# Uttori Data Tools

Tools for working with binary data.

- **CRC32** - Derive the Cyclic Redundancy Check of a data blob.
- **DataStream** - Helpter class to ease parsing binary formats.
- **DataBuffer** - Helper class for working with binary data.
- **DataBufferList** - A linked list of DataBuffers.
- **DataBitstream** - Read a DataStream as a stream of bits.

## Install

```bash
npm install --save @uttori/data-tools
```

* * *

## Examples

```js
import { CRC32, DataBuffer, DataBufferList, DataBitstream, DataStream } from '@uttori/data-tools';

CRC32.of('The quick brown fox jumps over the lazy dog');
➜ '414FA339'

const stream_a = DataStream.fromData(Buffer.from([20, 29, 119]));
const stream_b = DataStream.fromData(Buffer.from([20, 29, 119]));
stream_a.compare(stream_b);
➜ true

const buffer = new DataBuffer(data);
const list = new DataBufferList();
list.append(buffer);
```

## Tree Shaking with ESM Modules

To enable tree-shaking with [RollUp](https://rollupjs.org/), you will likely want to use `replace()` of [@rollup/plugin-replace](https://www.npmjs.com/package/@rollup/plugin-replace) like the following example to get a clean output:

```js
rollup({
  input: './you-entry-file.js',
  plugins: [
    replace({
      'process.env.UTTORI_DATA_DEBUG': 'false',
    }),
  ],
});
```

* * *

## Tests

To run the test suite, first install the dependencies, then run `npm test`:

```bash
npm install
npm test
DEBUG=Uttori* npm test
```

## Contributors

- [Matthew Callis](https://github.com/MatthewCallis)

## License

- [MIT](LICENSE)

---
_Source: https://npm.io/package/@uttori/data-tools · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
