How to archive format detector online for free
- Step 1Open the Archive Format Detector — Go to the auto-format-detector tool page. No account is needed for files within the free 50 MB limit.
- Step 2Drop any file — the extension does not matter — Drag a single file onto the upload zone or click to browse. The picker accepts archive extensions plus
application/octet-stream, so even an extensionless or oddly-named file is accepted. This tool reads one file at a time; it does not take folders or batches. - Step 3Run the detection — The detector reads the file's bytes in your browser, checks the first 8 bytes against each known signature, and — for TAR — checks for
ustarat byte offset 257. There are no options to configure; the detector has no settings panel. - Step 4Read the format result — The result panel shows two metrics: Format (such as
zip,gz,tar,bz2,xz,7z,rar, orunknown) and Magic bytes (the first 8 bytes as uppercase hex). A short description explains what that format is. - Step 5Follow the recommended next tool — For recognised formats the JSON output includes a
recommendedToolslist — for example a GZIP file recommends the gzip-to-zip and tar-gz-to-zip converters. Use those to actually open or convert the file once you know what it is. - Step 6Copy or download the JSON report — Copy the JSON to your clipboard with the copy button, or download it as
<filename>-format.jsonfor an audit trail. The report contains the filename, detected format, magic-byte hex, a description, and the recommended tools.
Signatures the detector checks
Each format is matched by exact bytes at a fixed offset. ZIP, GZIP, BZIP2, XZ, 7z, and RAR are matched at offset 0; TAR is matched by the 'ustar' string at offset 257, which is why TAR needs at least 262 bytes to be recognised.
| Format | Magic bytes (hex) | Offset | Result value |
|---|---|---|---|
| ZIP | 50 4B (PK ...) | 0 | zip |
| GZIP | 1F 8B | 0 | gz |
| BZIP2 | 42 5A 68 (BZh) | 0 | bz2 |
| XZ | FD 37 7A 58 5A 00 | 0 | xz |
| 7z | 37 7A BC AF 27 1C | 0 | 7z |
| RAR | 52 61 72 21 (Rar!) | 0 | rar |
| TAR | 75 73 74 61 72 (ustar) | 257 | tar |
| Anything else | no signature match | — | unknown |
What the JSON output contains
The detector outputs a small JSON object. The recommendedTools field is populated only for ZIP, GZIP, 7z, and RAR results; other formats return an empty list.
| Field | Example value | Meaning |
|---|---|---|
filename | "backup.dat" | The name of the file you dropped, unchanged |
format | "zip" | The detected format, or unknown |
magicBytes | "50 4B 03 04 14 00 00 00" | First 8 bytes as uppercase hex |
description | "ZIP archive — DEFLATE-compressed ..." | Plain-English summary of the format |
recommendedTools | ["multi-format-extractor", ...] | Sibling tools that open or convert this format |
Free vs paid limits
The per-file size cap is the only limit that matters for this tool. It reads only the file header for detection, so the per-archive entry-count cap is not a factor here.
| Tier | Max file size | Files per job |
|---|---|---|
| Free | 50 MB | 1 |
| Pro | 500 MB | 1 (this tool reads a single file) |
| Pro-media | 2 GB | 1 |
| Developer | 2 GB | 1 |
Cookbook
Concrete inputs and the JSON the detector returns. The detector decides purely from bytes, so the filename in each example is deliberately misleading.
A renamed download that is actually a ZIP
Someone shared report.dat and your extractor refused it. Drop it on the detector — the PK signature reveals it is a normal ZIP, so any ZIP tool will open it once renamed (or fed directly into the multi-format extractor, which ignores the extension too).
Input file: report.dat
Output:
{
"filename": "report.dat",
"format": "zip",
"magicBytes": "50 4B 03 04 14 00 00 00",
"description": "ZIP archive — DEFLATE-compressed entries with central directory at end.",
"recommendedTools": ["multi-format-extractor", "archive-previewer", "archive-integrity-tester"]
}A .gz that is genuinely GZIP
A db-dump.sql.gz from a server backup. The 1F 8B signature confirms it is a GZIP stream. The recommended converters turn it into something Windows can open without a CLI.
Input file: db-dump.sql.gz
Output:
{
"filename": "db-dump.sql.gz",
"format": "gz",
"magicBytes": "1F 8B 08 00 00 00 00 00",
"description": "GZIP single-stream — typically used for one-file compression (.log.gz, .sql.gz).",
"recommendedTools": ["gzip-to-zip", "tar-gz-to-zip"]
}A .tar.gz reports as gz (not tar.gz)
A release.tar.gz is a TAR wrapped in GZIP. Because the OUTER bytes are GZIP, the detector reports gz — it reads the GZIP signature at offset 0 and stops there. That is correct: the file's outermost format is GZIP. Use the tar-gz-to-zip converter to unwrap both layers.
Input file: release.tar.gz
Output:
{
"filename": "release.tar.gz",
"format": "gz",
"magicBytes": "1F 8B 08 00 00 00 00 00",
"description": "GZIP single-stream — typically used for one-file compression (.log.gz, .sql.gz).",
"recommendedTools": ["gzip-to-zip", "tar-gz-to-zip"]
}A 7z mislabelled as .zip
WinRAR or 7-Zip produced a bundle.zip that is really a 7z archive. fflate and zip.js can't open a 7z, so the original extractor failed. The detector's 37 7A BC AF 27 1C signature catches it; the multi-format extractor (libarchive WASM) can read it.
Input file: bundle.zip
Output:
{
"filename": "bundle.zip",
"format": "7z",
"magicBytes": "37 7A BC AF 27 1C 00 04",
"description": "7-Zip archive — LZMA/LZMA2 compression with optional encryption.",
"recommendedTools": ["multi-format-extractor", "archive-previewer"]
}An unrecognised file returns unknown
A plain text log renamed to archive.gz. The bytes start with ASCII text, not 1F 8B, so the detector returns unknown — proving the file is not really GZIP regardless of its name.
Input file: archive.gz (actually a text log)
Output:
{
"filename": "archive.gz",
"format": "unknown",
"magicBytes": "32 30 32 36 2D 30 36 2D",
"description": "Unrecognised — magic bytes do not match any supported archive format.",
"recommendedTools": []
}Edge cases and what actually happens
File over the 50 MB free cap
Rejected (tier limit)On the free tier a file larger than 50 MB is blocked before detection runs, with a message naming the limit. Detection only needs the file header, but the size check applies to the whole file. Pro raises this to 500 MB and Developer to 2 GB.
.tar.gz shows as gz
By designA gzip-compressed TAR has GZIP bytes (1F 8B) at offset 0, so the detector reports gz — the true outermost format. It does not return a tar.gz value. To unwrap both layers use the tar-gz-to-zip converter.
An .iso disc image shows as unknown
ExpectedISO 9660's volume descriptor sits far inside the file, not in the first bytes the detector inspects, so an ISO returns unknown. The detector targets compressed/archived formats; it does not sniff disc images.
A renamed .gz that is actually plain text
ExpectedIf the bytes are not 1F 8B, the file is not GZIP no matter what the extension says, so the result is unknown. This is the detector working correctly — it reports what the bytes are, not what the name claims.
A tiny file under 4 bytes
unknownA file shorter than 4 bytes cannot hold any signature, so detection returns unknown immediately. This is rare but happens with truncated downloads or empty placeholder files.
A TAR file smaller than 262 bytes
unknownTAR is detected by the ustar string at byte offset 257, so the file must be at least 262 bytes to be recognised. A truncated or empty TAR shorter than that reports unknown even though it is structurally a TAR header.
An old GNU TAR without the ustar magic
unknownPre-POSIX (old-style) TAR archives lack the ustar magic at offset 257, so the detector cannot confirm them and returns unknown. Modern TARs from tar, 7-Zip, and most tooling include the magic and detect correctly.
A self-extracting EXE archive
unknownA self-extracting archive begins with an executable stub (MZ for Windows EXE), so its first bytes are not an archive signature — the detector returns unknown. The archive payload is appended after the stub, beyond the bytes inspected.
Result says unknown but the file opens elsewhere
ExpectedFormats outside the supported set (such as LZ4, Zstandard, or CAB) are not in the signature table, so they report unknown even though they are valid archives. The detector only recognises ZIP, GZIP, TAR, BZIP2, XZ, 7z, and RAR.
Frequently asked questions
Is it really free?
Yes. Files up to 50 MB are detected free with no account. Larger files need a paid tier (Pro 500 MB, Developer 2 GB) purely because of the size cap, not because detection itself is gated.
Do you upload my file?
No. The file is read locally in your browser via the File API and the bytes never leave your device. There is no server-side path for archive tools.
Which formats can it identify?
ZIP, GZIP, TAR, BZIP2, XZ, 7z, and RAR. Anything that matches none of those signatures returns unknown.
How does it work without trusting the extension?
It compares the file's actual bytes against each format's known signature — for example PK for ZIP and 1F 8B for GZIP. Detection is byte-exact, so the extension is irrelevant.
Why does my .tar.gz show as gz?
A .tar.gz is a TAR wrapped in GZIP, and the outermost bytes are GZIP. The detector correctly reports the outer format, gz. Use the tar-gz-to-zip converter to unwrap it.
Why does my .gz show as unknown?
The file is probably renamed or corrupted. A real GZIP starts with 1F 8B; if those bytes are missing, it isn't actually GZIP regardless of the name.
Are there any options to set?
No. The detector has no settings — drop a file and read the result. The answer is determined entirely by the file's bytes.
Can I detect multiple files at once?
No. This tool reads one file per run. For folder or batch workflows, use a sibling tool such as the batch-extraction-manager.
What does the output look like?
A small JSON object with the filename, detected format, the magic-byte hex (first 8 bytes), a description, and a list of recommended next tools. You can copy it or download it as <filename>-format.json.
Why does it recommend other tools?
Once it knows the format, it suggests siblings that can actually open or convert it — for example GZIP points at the gzip and tar.gz converters, and ZIP points at the multi-format-extractor.
Can it tell me what's inside the archive?
No — it only identifies the container format from the header. To see entries, use the archive-previewer; to read metadata, use the archive-metadata-extractor.
Will it detect a damaged archive?
It detects the format as long as the signature bytes are intact, even if the rest is damaged. To check whether the archive is actually readable, run the archive-integrity-tester.
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.