Deflate decompress
Deflate decompress a file locally. Nothing leaves your device.
Runs on your device. The file is never uploaded.
Deflate decompress inflates a raw deflate stream with fflate inflateSync, taking .deflate off the name or adding .out instead. Feed it a gzip or zlib file and the decode fails, because those wrapper bytes are not deflate data. With no checksum in the format, a corrupted stream shows up as a decode failure instead of silently wrong bytes.
Questions
What kind of data does this expect?
A raw deflate stream, with no gzip or zlib wrapper around it. If your file starts with a gzip header, use Gzip decompress, and if it is a zlib stream, use Zlib decompress. Feeding the wrong one in fails, because the wrapper bytes are not valid deflate data.
What do I get back?
Your file with the .deflate suffix stripped off, or with .out appended when the name does not end in one of the recognised suffixes, so the output never takes the name of its input. The bytes are exactly what was compressed.
Why did it fail?
Because the bytes are not a valid deflate stream. The usual causes are a wrapper the tool was not expecting, a truncated file, or data that was never compressed at all. Raw deflate carries no checksum, so damage in the middle of a stream tends to surface as a decode error rather than as a quiet wrong answer.
Are there any options?
None. One file in, one file out, with the same result every time. There is no preset dictionary support, so a stream compressed against one cannot be expanded here. It works per file, so each file you drop is expanded on its own and comes back with its own download.
Is there a limit on how much it will expand?
No declared limit. Raw deflate announces no output size, so the data is inflated into memory as it goes and a large or deliberately crafted stream can run the tab out of room. Extract ZIP is the only tool here with a declared size guard, because zip entries carry their sizes in the headers.
Does anything get uploaded?
No. The whole operation happens in a Web Worker in your tab. Nothing is sent to a server, there are no accounts, and the page works offline after the first visit. The compressed input and the full expanded output are both held in memory, so a large stream is bounded by your device.