How to file type breakdown vs unzip -l and 7z l
- Step 1Pick your archive and reach for the right CLI (or skip it) — For a ZIP, the shell equivalent is
unzip -lorzipinfo; for 7z,7z l; for tarballs,tar -tzf. File Type Breakdown replaces all of these with one dropzone at /archive-tools/file-type-breakdown. - Step 2Compare the counting logic — The CLI pipeline counts every line including directories and is case-sensitive on extensions. File Type Breakdown skips directory entries and lower-cases extensions, so its
countper type can legitimately differ from a naiveunzip -l | wc -l. - Step 3Compare the size columns —
unzip -lshows uncompressed sizes;zipinfo -ladds compressed. File Type Breakdown gives both per extension for ZIP. For non-ZIP formats both columns equal the uncompressed size, exactly liketar -tvf(which has no compressed-per-file figure). - Step 4Compare privacy and install — Both run locally — the CLI on your shell, the tool in your browser tab. The browser path additionally needs no install and no admin rights, which matters on managed corporate machines.
- Step 5Compare scale — The CLI streams and handles multi-GB archives; the tool is capped by tier (2 GB max) and processes one archive per run. For nightly batch jobs over many large archives, the shell wins.
- Step 6Decide per task — Ad-hoc, one archive, no install, shareable output: use the tool. Scripted, batched, or very large: use the CLI. Same numbers, different ergonomics.
Feature-by-feature: browser tool vs shell pipeline
Comparing File Type Breakdown to the common shell equivalents for counting files by extension. CLI behaviour assumes a typical unzip/7z/tar + awk/sort/uniq pipeline.
| Dimension | File Type Breakdown | unzip -l / 7z l / tar -tzf + awk |
|---|---|---|
| Install | None — runs in any modern browser | Requires unzip, p7zip, or tar plus a shell |
| Privacy | Archive read locally in-tab; nothing uploaded | Local too, but requires shell access on the box |
| Output format | Fixed CSV: extension,count,uncompressedSize,compressedSize,ratio | Whatever your pipeline emits; you build the columns |
| Directory rows | Excluded automatically | Counted unless you filter them out |
| Extension case | Lower-cased (.JPG = .jpg) | Case-sensitive unless you add tr A-Z a-z |
| Compressed size per type | Yes for ZIP (central directory) | Needs zipinfo/-v parsing; absent for tar |
| Format coverage | 11 formats with one UI | One command per format family |
| Max size | 2 GB (tier-dependent; 50 MB free) | Effectively unbounded (streams) |
| Batch / automation | One archive per run, manual | Trivial to loop in a script |
Input formats and which size columns are meaningful
ZIP is read straight from the central directory, so both size columns are real and the ratio is accurate. Every other format is decompressed first, after which the compressed total equals the uncompressed total and the ratio reads 0.0%.
| Input format | Read engine | compressedSize accurate? | ratio meaningful? |
|---|---|---|---|
.zip (incl. AES / ZipCrypto encrypted) | Central-directory parser (no fflate needed for metadata) | Yes — real per-entry compressed size | Yes |
.gz (single member) | fflate gunzip | No — one row only, compressed = uncompressed | No (reads 0.0%) |
.tar | fflate tar parser | No — tar stores files uncompressed | No (0.0%) |
.tar.gz / .tgz | fflate | No — sizes are post-decompression | No (0.0%) |
.tar.bz2, .tar.xz, .bz2, .xz, .7z, .rar, .iso | libarchive WASM (read-only) | No — sizes are post-decompression | No (0.0%) |
Tier limits for the archive family
File Type Breakdown is an analysis tool, so the binding limits are usually the per-archive entry count and the file-size cap — both checked before processing starts. Limits are shared across every archive tool.
| Tier | Max archive size | Max entries per archive | Files per run |
|---|---|---|---|
| Free | 50 MB | 500 entries | 1 |
| Pro | 500 MB | 50,000 entries | 20 |
| Pro-media | 2 GB | 500,000 entries | 100 |
| Developer | 2 GB | 500,000 entries | unlimited |
Cookbook
Side-by-side: the shell command and the equivalent File Type Breakdown CSV, with the gotchas that make their numbers differ.
The classic awk one-liner vs the CSV
The shell pipeline counts by extension but is case-sensitive and includes directory lines. File Type Breakdown lower-cases and excludes folders, so the grouped output is cleaner.
Shell:
$ unzip -l assets.zip | awk -F. 'NF>1{print tolower($NF)}' | sort | uniq -c
12 png
3 PNG <-- without tolower these split
8 js
File Type Breakdown (assets-types.csv):
extension,count,uncompressedSize,compressedSize,ratio
png,15,... <-- .PNG and .png already merged
js,8,...
(folders excluded automatically)Getting compressed sizes: zipinfo vs the ratio column
To get per-file compressed sizes in the shell you reach for zipinfo or unzip -v and parse columns. File Type Breakdown gives a per-extension compressed total and ratio directly.
Shell (per-file, must aggregate yourself): $ zipinfo -l build.zip ... (defl:N) columns you then sum per extension ... File Type Breakdown (build-types.csv): extension,count,uncompressedSize,compressedSize,ratio js,318,9842110,2110874,78.6% png,142,24180736,23905111,1.1% No column-parsing — the ratio is computed for you.
7z and RAR without installing p7zip / unrar
On a managed laptop without p7zip you cannot run 7z l. File Type Breakdown reads 7z and RAR via libarchive WASM in the browser, no install needed — though sizes are post-decompression so the ratio reads 0.0%.
Shell (needs p7zip installed): $ 7z l release.7z File Type Breakdown (release-types.csv): extension,count,uncompressedSize,compressedSize,ratio dll,84,40221884,40221884,0.0% exe,3,9920114,9920114,0.0% ratio is 0.0% because 7z is decompressed before counting.
Why Total entries differs from unzip -l's line count
unzip -l prints a row per entry including directories and a summary line. File Type Breakdown's Total entries counts files only. Expect the tool's number to be lower for archives with many folders.
Shell:
$ unzip -l deep-tree.zip | tail -1
1240 files
(but the listing also showed 86 directory rows)
File Type Breakdown metrics:
Distinct types: 9 | Total entries: 1240
Directories (86) are excluded from the type rows entirely.Scripting a batch the tool cannot do
For a nightly job profiling 200 archives, the shell wins — loop and aggregate. The tool is one-archive, manual. Use the CLI here and reserve the tool for ad-hoc inspection.
Shell (batch — out of scope for the browser tool):
for f in /artifacts/*.zip; do
echo "== $f"
unzip -l "$f" | awk -F. 'NF>1{print tolower($NF)}' \
| sort | uniq -c | sort -rn
done
File Type Breakdown: drop one archive at a time; no loop/API.Edge cases and what actually happens
CLI counts directories, tool does not
By designA naive unzip -l | wc -l includes directory rows and the summary line. File Type Breakdown excludes directories, so its Total entries is files-only and will usually be smaller. Neither is wrong — they count different things.
Case-sensitive CLI splits .JPG and .jpg
ExpectedWithout tr A-Z a-z or tolower(), the shell pipeline reports .JPG and .jpg as separate types. File Type Breakdown always lower-cases, so those merge. Add lower-casing to your pipeline to match.
Tool capped at 2 GB; CLI is not
Tier limitArchives above the tier ceiling (2 GB on the highest tiers, 50 MB free) are rejected by the tool. The CLI streams and has no such cap, so for very large archives the shell is the right choice.
No per-file compressed size for tar in either
By designTAR has no per-file compressed figure — neither tar -tvf nor File Type Breakdown can show one. For a TAR.GZ the tool's compressed column equals the uncompressed column, matching what the CLI can know.
7z/RAR need p7zip/unrar in the shell
Supported in toolThe CLI path for 7z and RAR requires installing p7zip and unrar. File Type Breakdown reads both via libarchive WASM with nothing to install — handy on locked-down machines.
Tool has no batch loop
Use the CLIThere is no API or multi-archive mode for this tool — it is one archive per run. For batch profiling across many files, script the CLI instead.
Renamed/mislabelled archive
Detected by signatureBoth approaches can be fooled by extension alone, but File Type Breakdown sniffs magic bytes, so a RAR named .zip is read correctly. Confirm with auto-format-detector if unsure.
Output not identical to zipinfo formatting
ExpectedThe tool's CSV is aggregated per extension; zipinfo is per file. The aggregate is intentional — to match zipinfo line-for-line you would sum its rows by extension yourself.
Frequently asked questions
Does File Type Breakdown replace unzip -l?
For counting by extension, effectively yes — it gives counts, uncompressed and compressed totals, and a ratio per type in one CSV. For listing individual files with timestamps you would still use unzip -l or the file-listing-generator.
Why does my count differ from unzip -l?
Two reasons: File Type Breakdown excludes directory entries (which unzip -l lists), and it lower-cases extensions so .JPG and .jpg merge. Add tolower() and a directory filter to your pipeline and the numbers line up.
Can the tool give me compressed sizes like zipinfo?
Yes, for ZIP — the compressedSize and ratio columns come from the central directory, the same source zipinfo reads. For non-ZIP formats neither the tool nor tar -tvf has a per-file compressed figure.
Is the CLI faster?
For very large archives, yes — it streams and is not capped. For typical archives under a few hundred MB, the browser tool finishes in seconds and saves you writing the pipeline.
Can I script File Type Breakdown?
No — there is no public API or batch mode for it; it runs one archive at a time in the browser. For automation, use the shell equivalents (unzip -l/7z l/tar -tzf + awk) in a loop.
Which handles more formats?
The tool, with one interface: ZIP, GZIP, TAR, TAR.GZ, TAR.BZ2, TAR.XZ, BZ2, XZ, 7z, RAR, ISO. The CLI handles all of these too, but with a different command per family and separate installs (p7zip, unrar).
Do I need 7z or unrar installed for 7z/RAR?
Not for the tool — it reads 7z and RAR via libarchive WASM in the browser. The CLI route does require p7zip and unrar to be installed and on your PATH.
Is the browser tool private?
Yes. The archive is read in your browser tab and nothing is uploaded. The CLI is local too, but the browser path also needs no install and no shell access, which can matter on managed machines.
How big an archive can the tool handle?
Up to the tier cap: 50 MB on Free, 500 MB on Pro, 2 GB on Pro-media and Developer, with matching entry-count limits. Above that, use the streaming CLI.
Does it count files inside nested archives?
No — a .zip inside the archive is counted as one zip entry, not expanded. To recurse into nested archives, extract them first (see the multi-format extractor) and run the breakdown on the inner archive.
Can I get the same output a teammate without a shell can reproduce?
That is the tool's main advantage — anyone with a browser gets the identical CSV by dropping the same archive, no shell skills required. The CLI pipeline assumes shell familiarity.
What if the CLI and the tool disagree on size?
Check whether you are comparing compressed vs uncompressed, and whether directory entries are included. For ZIP, the tool reads the same central-directory sizes zipinfo reports, so once you align those two variables they match.
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.