Squish

Free program for zipping and unzipping epubs on Windows.

SQUISH IS DESIGNED to be as simple and effortless to use as possible. That’s how I like my software and I assume you do too. But there’s a second side to Squish’s personality: It gives you a bunch of optional features that let you take manual control of technical details if you want to.

Squish never alters your files, and it can handle ZIP64.


Squish’s main window is all you need if you want to keep things 
simple.  Just drag your epub or file folder or both onto Squish and use 
the Zip and Unzip buttons.

Squish’s main window is all you need if you want to keep things simple. Just drag your epub or file folder or both onto Squish and use the Zip and Unzip buttons.


Go to the options window for more control and choices.

Go to the options window for more control and choices.

How to zip

On the first line of the main window, select the folder that contains the files. You can drag, type, or use the little button with three dots. Then click Zip.

How to unzip

On the second line of the main window, select the epub. You can drag, type, or use the little button with three dots. Then click Unzip.

Is it really that simple?

It’s really that simple if you want it to be. But there’s more you can do with this program if you wish.

If you Zip and Unzip the way I just described, Squish will pick the name and location of the files it creates for you. To make that choice yourself, enter info on both lines (Files and Epub) before you press Zip or Unzip.

Press the little buttons with three dots (called browse buttons) to help enter locations of files. Or drag and drop on Squish’s main window.

Other buttons on the main window

Exp displays folder contents in File Explorer. (To explore the epub’s folder, use its three-dot button.).

Open displays your epub in your default epub reader. Set the default reader with Windows.

A displays a technical analysis of your epub file.

The options window

Squish’s options are really truly optional. Even if you never look at them, the program will almost certainly serve your needs. Here’s what the options do:

Save backups of overwritten files: When this is checked, Squish saves backups of epubs and file folders when it replaces them. (However it doesn’t save backups of the analysis log.) Backups have names that include "back" and a number. Use the three controls immediately under this one to specify the folder where backups get placed.

Show success message after job completes: When this is checked, after you zip or unzip successfully, Squish displays a pop up box with a few facts about the results.

Open work after job completes: When this is checked, after you unzip, Squish shows the contents of the files folder, and after you zip, Squish opens the completed epub in your default reader.

Use real file creation times (override tunneling): Windows has a strange feature built into it that Microsoft calls “file system tunneling.” Under certain circumstances it puts old datetimes on new files. This makes it impossible to tell whether Squish did the work it says it did. Check this box to override tunneling on files created by Squish, ensuring that those files always get new datetimes.

Deflate compressed files: By default, when Squish zips, it doesn’t compress files such as jpg’s and png’s that are already compressed. It simply copies them into the epub as they are. This is called storing a file instead of deflating it. The reason for this is that compressing an already-compressed file rarely makes much difference. If you want Squish to compress these files, check this box. (When you set Compression Level to 0, all files are stored. The special epub3 file “mimetype” is always stored regardless of settings.)

Compression level: Lower numbers do the job faster but the resulting epubs are bigger. Higher numbers are slower but the resulting epubs are smaller. Computers are so fast today and epubs are so small that most users will probably want to leave this set to 9, the maximum. This setting doesn’t affect mimetype (a required file for epub3s) which is always uncompressed regardless of settings.

Datetime: This option lets you set dates and times on files. This allows you to make it look as if your epub was created at some particular date and time of your choosing.

This option affects only datetimes maintained by the operating system and Zip container (file metadata). It doesn’t affect datetimes in file contents such as dc:date. Squish never alters file contents.

If you enter a datetime on Squish’s options window:

  • when zipping, Squish puts that datetime on the epub file and the files inside the epub;
  • when unzipping, Squish puts that datetime on the files folder, on the folders inside the files folder, and on all the unzipped files.

If you leave Datetime blank, those datetimes are determined by the current system time and pre-existing datetimes on input files.

Whether or not you leave this option blank, the results can be surprising because of limitations in the Zip format and the fact that Windows assumes times are stored as UTC and converts them to local time when it displays them. As a result, datetimes may appear to be off by as much as 23 hours. (Tunneling also causes inaccurate datetimes. See “Real file creation times” above.)

If you specify a datetime, write it in ISO 8601 format like these examples:

2022-03-16
2022-03-16Z
2022-03-16T12:17:58
2022-03-16T12:17:58Z

Append Z to indicate UTC (GMT) time. Omit it to indicate local time.

Analysis log: By default Squish picks a name and location for the log file it generates when you click the little A button on the main window. If you wish you can specify the name and location here. Squish doesn’t make backups of this file.

ZIP64

Squish supports ZIP64, an extension to the original Zip specification that enables larger files. Without it, epubs are limited to about 4 gigabytes. With it, they can be four billion times bigger.

The Epub specification requires epub apps to support ZIP64 but many do not. This is understandable because ordinary epubs, the kind made from text and pictures, aren’t large enough to require it. But some people use epubs for other purposes — for example, as containers for movies — which benefit from ZIP64.

To put this in perspective, the largest commercial epub I can find on the Internet is a 313 megabyte medical textbook. It could grow 13 times larger before it needs ZIP64. With ZIP64, it could grow 56,205,067,234 times larger.

Squish uses ZIP64 automatically when necessary. For example, if you ask it to create an epub whose total size is more than about four gigabytes, Squish will use it.

To determine whether an epub uses ZIP64, press the little A button on Squish’s main window. You’ll see something like this:

To generate this picture, I made a test epub with 12 gigabytes of files inside it.

Requirements

Squish requires 64-bit Windows Vista or higher. Most Windows computers meet that requirement except some very old ones.

Limitations

Squish doesn’t handle encryption.

Questions

Can Squish do both epub2’s and epub3’s?

Yes.

Does Squish modify my files in any way?

No. All it does is compress and decompress them. Nothing gets changed, removed, lost, or added in that process.

If I specify a datetime, doesn’t that change the files?

No, because datetimes aren’t parts of files. They are comments about files (“metadata”). They are stored separately from files by the Zip container and operating system. When you change a datetime the file itself is unchanged.

Can I unzip an epub then rezip it?

Sure. You can zip and unzip the same project repeatedly as many times as you want.

Where should I put my files and epub on my hard disk?

With one exception, explained in the next answer, you can put them anywhere that Windows lets you.

Can I put the epub in the same folder as the unzipped files?

No. Squish doesn’t allow this because it’s likely to lead to epubs that contain unwanted copies of themselves inside themselves — a sort of software fractal or matryoshka doll. Instead I recommend that you create a project folder for each book you work on. Then put the files folder and epub in that project folder. In programmer lingo, the files folder and epub should be siblings rather than parent and child.

Should I back up my files before using Squish?

Of course! You should always back up computer files frequently when you work on them regardless of the tools you use.

Where does Squish store its settings?

%userprofile%\appdata\local\Mojoware\Squish\settings.xml

Does Squish need to be installed by its msi package or can I just copy and paste its exe file?

You can copy and paste its exe file. That’s the entire program. It doesn’t need to be installed.

What Zip library does Squish use?

It uses the zlib compression library but it doesn’t use a Zip library. I wrote Squish’s Zip code myself.

What languages is Squish written in?

C and C++.

Acknowledgments

Squish incorporates source code from zlib written by Jean-loup [the lower-case L is his] Gailly and Mark Adler and from Boost.CRC written by Daryle Walker. Many thanks to them for their generosity and excellent work.

Links

This page was first published on May 2, 2022 and last revised on May 2, 2022.

Comments