# browser-stream-tar

> split tar web-stream into a sequence of Files

Latest version **3.0.6** (published 2025-11-24) · MIT license · 0 weekly downloads

## Install

```sh
npm install browser-stream-tar
pnpm add browser-stream-tar
yarn add browser-stream-tar
bun add browser-stream-tar
```

## Health

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

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

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 3.0.6 |
| Published | 2025-11-24 |
| First published | 2022-11-11 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=20.15.0 |
| Dependencies | 0 |
| Unpacked size | 24 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 7 |
| Maintainers | k0nsti |
| Keywords | pax, tar, web-stream |

## Links

- npm: https://www.npmjs.com/package/browser-stream-tar
- Repository: https://github.com/k0nsti/browser-stream-tar
- Homepage: https://github.com/k0nsti/browser-stream-tar#readme
- Issues: https://github.com/k0nsti/browser-stream-tar/issues
- npm.io page: https://npm.io/package/browser-stream-tar

## Alternatives

- [byte-size](https://npm.io/package/byte-size.md) — 2.1M weekly downloads
- [speed-limiter](https://npm.io/package/speed-limiter.md) — 16.0K weekly downloads
- [@powersync/node](https://npm.io/package/@powersync/node.md) — 10.9K weekly downloads
- [@ledgerhq/coin-cardano](https://npm.io/package/@ledgerhq/coin-cardano.md) — 1.0K weekly downloads
- [@jayesol/jayeson.lib.streamfinder](https://npm.io/package/@jayesol/jayeson.lib.streamfinder.md) — 1.0K weekly downloads

## Recent versions

- 3.0.6 (latest) — 2025-11-24
- 3.0.5 — 2025-05-21
- 3.0.4 — 2025-05-07
- 3.0.3 — 2024-10-16
- 3.0.2 — 2024-10-16
- 3.0.1 — 2024-09-18
- 3.0.0 — 2024-09-12
- 2.1.2 — 2024-08-31
- 2.1.1 — 2024-05-28
- 2.1.0 — 2024-02-11
- 2.0.1 — 2024-02-01
- 2.0.0 — 2023-11-06
- 1.2.5 — 2023-09-01
- 1.2.4 — 2023-07-13
- 1.2.3 — 2023-07-12
- … 16 more at https://npm.io/package/browser-stream-tar/versions

## README

[![npm](https://img.shields.io/npm/v/browser-stream-tar.svg)](https://www.npmjs.com/package/browser-stream-tar)
[![License](https://img.shields.io/badge/License-MIT--Clause-blue.svg)](https://spdx.org/licenses/MIT.html)
[![Typed with TypeScript](https://flat.badgen.net/badge/icon/Typed?icon=typescript\&label\&labelColor=blue\&color=555555)](https://typescriptlang.org)
[![bundlejs](https://deno.bundlejs.com/?q=browser-stream-tar\&badge=detailed)](https://bundlejs.com/?q=browser-stream-tar)
[![downloads](http://img.shields.io/npm/dm/browser-stream-tar.svg?style=flat-square)](https://npmjs.org/package/browser-stream-tar)
[![GitHub Issues](https://img.shields.io/github/issues/k0nsti/browser-stream-tar.svg?style=flat-square)](https://github.com/k0nsti/browser-stream-tar/issues)
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fk0nsti%2Fbrowser-stream-tar%2Fbadge\&style=flat)](https://actions-badge.atrox.dev/k0nsti/browser-stream-tar/goto)
[![Styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
[![Known Vulnerabilities](https://snyk.io/test/github/k0nsti/browser-stream-tar/badge.svg)](https://snyk.io/test/github/k0nsti/browser-stream-tar)
[![Coverage Status](https://coveralls.io/repos/k0nsti/browser-stream-tar/badge.svg)](https://coveralls.io/github/k0nsti/browser-stream-tar)

# browser-stream-tar

split tar web-stream into a sequence of Files

# example

```js
import { files } from "browser-stream-tar";

const response = await fetch("some tar file");
for await (const file of files(response.body)) {
  console.log(file.name);
  // do something with entry.stream()
}
```

# API

<!-- Generated by documentation.js. Update this documentation by updating the source code. -->

### Table of Contents

*   [BLOCKSIZE](#blocksize)
*   [decodePaxHeader](#decodepaxheader)
    *   [Parameters](#parameters)
*   [decodeHeader](#decodeheader)
    *   [Parameters](#parameters-1)
*   [files](#files)
    *   [Parameters](#parameters-2)
*   [enqueue](#enqueue)
*   [buffer](#buffer)
*   [decodeString](#decodestring)
    *   [Parameters](#parameters-3)
*   [decodeInteger](#decodeinteger)
    *   [Parameters](#parameters-4)
*   [fill](#fill)
    *   [Parameters](#parameters-5)
*   [skip](#skip)
    *   [Parameters](#parameters-6)
*   [streamToUint8Array](#streamtouint8array)
    *   [Parameters](#parameters-7)

## BLOCKSIZE

Field Name   Byte Offset     Length in Bytes Field Type
name         0               100             NUL-terminated if NUL fits
mode         100             8
uid          108             8
gid          116             8
size         124             12
mtime        136             12
chksum       148             8
typeflag     156             1               see below
linkname     157             100             NUL-terminated if NUL fits
magic        257             6               must be TMAGIC (NUL term.)
version      263             2               must be TVERSION
uname        265             32              NUL-terminated
gname        297             32              NUL-terminated
devmajor     329             8
devminor     337             8
prefix       345             155             NUL-terminated if NUL fits

Type: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)

## decodePaxHeader

*   **See**: <https://www.systutorials.com/docs/linux/man/5-star/>

Decodes a PAX header

### Parameters

*   `reader` **ReadableStreamReader<[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)>** where to read from
*   `buffer` **[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)**&#x20;
*   `header` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** to be filled with values form buffer

Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)>** buffer positioned after the consumed bytes

## decodeHeader

Decodes the next header.

### Parameters

*   `reader` **ReadableStreamReader<[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)>** where to read from
*   `buffer` **([Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))**&#x20;
*   `header` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** to be filled with values form buffer and reader

Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<([Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))>** buffer positioned after the consumed bytes

## files

Provide tar entry iterator.

### Parameters

*   `tar` **ReadableStream**&#x20;

Returns **AsyncIterable\<File>**&#x20;

## enqueue

\--512--|-----512------|
|  R |     O   |
|
DDDDDDDDDDDD---------HHHH
|    |         |
A0   A0        A1

## buffer

+--------- size --------+
|         +- remaining -+- overflow -+
|         |             |            |
HDD ... DDDDDDDDDDDDDDDDDD------------HHHHHH
\[BUFFER .... ]             \[BUFFER ... ]
+-----------  skip --------+

## decodeString

Convert bytes into string.

### Parameters

*   `bytes` **[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)**&#x20;

Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20;

## decodeInteger

Convert ASCII octal number into number.

### Parameters

*   `bytes` **[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)**&#x20;

Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)**&#x20;

## fill

Read bytes from a reader and append them to a given buffer until a requested length of the buffer is reached.

### Parameters

*   `reader` **ReadableStreamReader<[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)>** where to read from
*   `buffer` **[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)?** initial buffer or undefined
*   `length` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** desired buffer length

Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<([Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))>** filled up buffer

## skip

Skip some bytes from a buffer.

### Parameters

*   `reader` **ReadableStreamReader<[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)>** where to read from
*   `buffer` **[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)**&#x20;
*   `length` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** to be skipped

Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<([Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))>** buffer positionend after skipped bytes

## streamToUint8Array

Reads web stream content into a Uint8Array.

### Parameters

*   `stream` **ReadableStream**&#x20;

Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)>**&#x20;

# install

With [npm](http://npmjs.org) do:

```shell
npm install browser-stream-tar
```

# license

BSD-2-Clause

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