A teammate sent project.zip. The CI job wants project.tar.gz. ZipTarShift converts ZIP to tar/tar.gz and back in the browser so nobody has to unpack-and-repack on an upload site. It is a container translator, not a compressor that will suddenly make photos small. Use it when the bytes are already a tree and only the wrapper is wrong. Do not use it as a general unzipper with preview of every JPEG (ZipShift) or as a splitter (SplitShift). Permissions may not survive the round trip; ZIP and tar disagree about that religion.
ZIP to tar.gz is the Linux CI story. Tar.gz to ZIP is the Windows PM story. Drop the archive, pick the other family, download. File names and a directory tree should survive. Symlinks, Unix modes, and extra ZIP fields may not. If the build needed +x on a script, set that after extract on the Linux side.
When it fails: encrypted ZIP, spanned ZIP, tar.zst that the wasm path does not speak, and insane file counts. When not to use it: you needed to add or remove files (unpack in ZipShift/TarShift, edit, pack). Also skip huge archives. Privacy is local — good for source zips that still contain a mistaken .env.
After convert, actually test the consumer. GitHub Actions that calls tar xf will tell you in ten seconds if the gzip stream is honest. A rename of .zip to .tar.gz is not this tool and will not work. People still try. Symlinks may become tiny files in the ZIP direction; recreate them from a README if the project needs them.
vendor.zip, 6.4 MB, a JS library tree. ZipTarShift emits vendor.tar.gz at 6.1 MB (already compressed files). CI's tar xf succeeds. A reverse job: logs.tar.gz for a Windows auditor who only knows ZIP. They extract in Explorer. A shell script inside lost +x, which they did not need on Windows. The tree never uploaded. CI succeeding on vendor.tar.gz is the whole story; the 6.1 MB versus 6.4 MB is not the miracle.
ZipTarShift rewrites archives in the browser. The ZIP or tar never uploads. Source trees with accidental secrets stay on the device. Close the tab when the download finishes. Source trees with a mistaken .env stay on the device, which is the point of a local rewrite.
Full policy: Shift Privacy Policy. Questions: [email protected].
Sometimes, because gzip sees the whole stream. For a pile of JPEGs, no. For many tiny text files, maybe. Convert for compatibility, not for a miracle ratio. Convert for compatibility; a pile of JPEGs will not suddenly shrink because gzip saw the stream.
You may have downloaded ZIP by mistake, or a browser unzipped for you. Check the magic bytes or file command. Do not trust the filename alone. Check magic bytes if CI says not a gzip file; browsers sometimes unzip for you and lie about the name.
This door is ZIP ↔ tar/tar.gz. zstd is a different booth if it exists at all. Do not rename. This door is ZIP and tar/tar.gz; do not rename a result to tar.zst and hope the bytes agree.
ZIP and tar do not agree on symlinks. Recreate links on the Unix side from a README if the project needs them. ZIP and tar disagree on symlinks; Unix projects should document links instead of hoping the round trip.
Related tools: ZipShift · TarShift · SplitShift
Guides · All Shift tools · About · Contact