Tar implemented in the browser
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.



Have you ever wanted to tar something, but you didn't want to push it to your server first?

Tar-js is here to the rescue!!

With tar-js, you can construct a tar archive in the browser. This is basically a port of tar-async for Nodejs for the browser, with a couple differences.

Here's what it supports:

  • Add strings to a tar archive as files
  • Customizable uid, gid, mtime, and permissions (defaults work well though too)
  • Add files in a directory heirarchy


Tar needs an HTML5 compliant browser. More specifically it needs Uint8Array to work.

The examples depend on pakmanager, a package manager for the browser to make code written for node run in the browser. Install it as such:

pakmanager build

Usage Guide

The easiest way to interface with it is by using pakmanager. Include the package from pakmanager in your html, and then in you javascript:

var Tar = require('tar'),
    tape = new Tar();

Then all you got to do is call tape.append with your params and it'll be added to the archive. That's it!

Here's the api for append: append(filepath, content, [opts], [callback])

  • filepath- string path (can include directories and such)
  • content- string or Uint8Array
  • opts- options:
    • mode- permissions of resulting file (octet) [default: 777]
    • mtime- modification time in seconds (integer) [default: current time]
    • uid- user id (integer) [default: 0]
    • gid- group id (integer) [default: 0]
  • callback- callback when done (takes a Uint8Array as it's only parameter)
    • This is a reference to the tar so far
    • Copy it if you want to use it, because subsequent adds may break stuff