How to format converter in developer workflows
- Step 1Grab the artifact — Download the archive from the PR, issue, CI run, or vendor portal. You do not need to know its true format — the converter detects it from magic bytes.
- Step 2Open the converter — Go to archive-format-converter and drop the single archive. For files within Free (50 MB / 500 entries) no account is needed.
- Step 3Pick the format your tooling wants — Set
targetFormattozip(Windows / web upload),tar.gz(Linux / CI, the default), orgz(single-file payload). The choice is the only knob this tool exposes. - Step 4Convert and inspect — Run it, then before trusting the artifact drop the output into file-listing-generator to eyeball the tree and archive-integrity-tester to confirm CRCs.
- Step 5Normalize for reproducibility if needed — Because mtimes are set to now, if you are committing the artifact or caching on its hash, run timestamp-normalizer and checksum-generator to make it deterministic.
- Step 6Hand off — Attach the converted archive to the PR, ticket, or release. For automation, remember this is a desk step — the conversion itself has no API to call from CI.
Where it fits in the dev loop
The converter is an interactive triage/handoff tool, not a CI step (no API).
| Moment | Problem | Converter move |
|---|---|---|
| PR review | Reviewer attached a .7z repro | Convert to .zip your scripts read; libarchive WASM reads the 7z |
| Artifact triage | CI artifact is .tar.gz, local tool wants .zip | targetFormat: zip |
| Vendor SDK | SDK ships as .rar | Convert to .tar.gz for a Linux build |
| Bug repro handoff | Colleague on Windows can't open .tar.gz | targetFormat: zip |
| Single dump | Need .gz of one SQL/JSON file | targetFormat: gz (single-entry input) |
Automation reality check
What you can and cannot script around this tool.
| Want | Possible? | Detail / alternative |
|---|---|---|
| Call it from CI via HTTP | No | Schema sets apiAvailable: false; browser-only execution |
| Headless run on Pro+ | Yes (runner) | Pro+ tiers execute via a short-lived headless Chromium runner |
| Batch many archives | No (one per run) | Use the CLI for batch convert; batch-extraction-manager for unpack |
| Set compression level | No | Fixed level 6; tune with compression-level-optimizer after |
| Preserve perms/timestamps | No | Mode 0644, mtime now; normalize after with timestamp-normalizer |
Cookbook
Developer-flow conversions. Blocks show the artifact, the dropdown choice, and the next tooling step.
Reviewer's .7z repro → .zip for your scripts
Your test harness only ingests ZIP. The reviewer used 7-Zip.
Artifact: repro-case-1842.7z (from the PR) targetFormat: zip libarchive WASM reads 7z → fflate writes ZIP Output: repro-case-1842.zip → feed to test harness
CI artifact .tar.gz → .zip for a Windows teammate
Your pipeline emits tar.gz; a teammate on Windows wants a double-click ZIP.
Artifact: build-artifacts.tar.gz targetFormat: zip Output: build-artifacts.zip Share in the ticket; teammate opens with Explorer.
Vendor .rar SDK → .tar.gz for a Linux build
Getting RAR content into an open format with no unrar install.
Artifact: vendor-sdk-3.2.rar targetFormat: tar.gz Output: vendor-sdk-3.2.tar.gz tar -xzf vendor-sdk-3.2.tar.gz -C ./third_party/
Make a converted artifact reproducible
mtimes are set to now; normalize before hashing or committing.
Convert assets.zip → assets.tar.gz (mtime = now) Normalize: timestamp-normalizer → targetTimestamp 1980-01-01 Hash: checksum-generator (SHA-256) Result: stable digest across machines and runs.
Why you can't curl it in CI
There is no HTTP endpoint for the conversion — it is browser-only.
# This does NOT exist: curl -F file=@in.7z https://.../archive-format-converter?target=zip # apiAvailable: false in the schema. # In CI, use 7z/tar directly; use this tool at your desk.
Edge cases and what actually happens
Expecting a REST API for CI
Not availableThe tool schema sets apiAvailable: false — archive tools are browser-only with no server endpoint. Pro+ tiers run it via a headless-browser runner, but there is no HTTP API to convert an archive from a CI job. Use 7z/tar in the pipeline instead.
Encrypted repro archive attached to a ticket
RejectedNo password field here, and libarchive cannot take passwords for 7z/rar. Ask the reporter for the password and decrypt locally, or have them re-pack as an encrypted ZIP via encrypted-zip-creator on a ZIP-aware tool.
Committing a converted artifact, hash differs each time
Not deterministicEntry mtimes are stamped with the current time, so the bytes change per conversion and your commit/cache hash drifts. Normalize with timestamp-normalizer before hashing or committing.
Executable scripts in the repro lose +x
By designOutput mode defaults to 0644 and ZIP has no Unix mode field, so scripts come out non-executable. Re-chmod after extraction in your test harness.
Artifact larger than your tier cap
Over limitFree caps at 50 MB / 500 entries. Big CI artifacts may need Pro (500 MB / 50,000) or higher. Both the size and entry-count caps apply, so a many-thousand-file source tree can exceed Free even when small.
GZIP target on a multi-file artifact
RejectedGZIP is single-stream. A repro bundle with many files must convert to tar.gz. The gz target only works for single-entry input.
Need level-9 to shrink an attachment under a size cap
Fixed levelConversion is fixed at level 6, so it will not squeeze maximally. Convert to tar.gz, then run compression-level-optimizer to push toward level 9.
WASM blocked by a dev-browser extension
Engine errorReading 7z/rar/bz2/xz needs libarchive WASM. A privacy or security extension that blocks WebAssembly will break those inputs, while ZIP/GZIP/TAR/TAR.GZ still convert. Allowlist the page or use the CLI.
Frequently asked questions
Is there an API I can call from CI?
No. The schema sets apiAvailable: false — archive tools run only in the browser, and the conversion has no HTTP endpoint. On Pro+ tiers a headless-browser runner can execute tools, but for CI artifact conversion you should call 7z/tar directly in the pipeline. Treat this as an interactive desk tool.
Can it open a reviewer's 7z without me installing anything?
Yes. libarchive WASM reads 7z (and rar, bz2, xz, iso) in the browser, so you can convert a .7z repro bundle to .zip or .tar.gz without p7zip on your machine.
Does it keep file permissions for build artifacts?
No. Output mode defaults to 0644 and ZIP carries no Unix mode field. It is great for triage and handoff but not for permission-sensitive build artifacts — re-chmod after extraction.
Will the same input always produce the same bytes?
No, because each entry's mtime is set to the current time during TAR build. For reproducible/committed artifacts, normalize timestamps with timestamp-normalizer and then hash with checksum-generator.
What's the only option this tool exposes?
Just targetFormat: zip, tar.gz (default), or gz. There is no compression slider, no password field, no batch input — it is deliberately one-knob.
Can I convert multiple PR artifacts in one go?
No — one archive per run. For scripted batch conversion use the CLI; for in-browser batch UNPACKING, see batch-extraction-manager.
How do I shrink a converted artifact further?
Conversion uses a fixed level 6. Convert to tar.gz, then run compression-level-optimizer to find a smaller level-9 output.
Can it produce a native 7z artifact?
No. It writes only ZIP/TAR.GZ/GZIP. For native 7z in a release, use the 7z CLI. The portable browser output is TAR.GZ.
Is my customer's repro bundle uploaded anywhere?
No. The archive is read and repacked entirely in your browser tab with no network calls for the conversion, so it stays within your data-handling obligations.
What if the GZIP target errors out?
GZIP holds a single stream, so a multi-entry archive can't become .gz. Choose tar.gz instead; gz is only valid for single-file input.
How do I verify a converted artifact before acting on it?
Run file-listing-generator to confirm the tree, archive-integrity-tester for CRCs, and checksum-generator for a digest you can pin in the ticket.
What are the size and entry limits for artifacts?
Free: 50 MB / 500 entries / 1 file. Pro: 500 MB / 50,000 / 20. Pro-media: 2 GB / 500,000 / 100. Developer: 2 GB / 500,000 / unlimited files.
Privacy first
Every JAD Archive tool runs entirely in your browser using fflate, @zip.js/zip.js, and the libarchive WASM bridge. Your archives never leave your device — verified by zero outbound network requests during processing.