Skip to content

JayXon/Leanify

Repository files navigation

LeanifyGitHub Actions CIWindows Build statusDownloadLatest ReleaseGitHub license

Leanify is a lightweight lossless file minifier/optimizer. It removes unnecessary data (debug information, comments, metadata, etc.) and recompress the file to reduce file size. It will not reduce image quality at all.

Features

  • Support recursive minifying. (e.g. aPNGinside anAPKinside aZIP)
  • Support a wide variety offile formats.
  • Lightweight, one file, under 1MB, no external dependency.
  • Everything is done in memory, no temporary files.
  • Cross-Platform, support Windows, Linux, Mac.
  • Support traverse directory recursively.
  • Ability to identify file format by its data instead of name.

Disclaimer

I'm not respossible for any consequence of using Leanify.

PLEASE BACKUP THE FILE BEFORE USING LEANIFY!

File Formats

APK file (.apk)

It is based onZIP.

Note that modifying files insideAPKwill break digital signature. To install it, you'll have to sign it again.

If you don't want to modify any files insideAPK,use-d 1option.

Comic book archive (.cbt,.cbz)

cbtis based ontar.cbzis based onZIP.

Microsoft Office document 2007-2013 (.docx,.xlsx,.pptx)

It is based onXMLandZIP.

Office document 1997-2003 (.doc,.xls,.ppt) is not supported.

Data URI (.html.htm.js.css)

Looks fordata:image/*;base64and leanify base64 encoded embedded image.

Design Web Format (.dwf, dwfx)

It is based onZIP.

EPUB file (.epub)

It is based onZIP.

FictionBook (.fb2,.fb2.zip)

It is based onXML.

Leanify embedded images.

GFT file (.gft)

It's an image container format found in Tencent QQ.

Leanify the image inside.

gzip file (.gz,.tgz)

Leanify file inside and recompress deflate stream.

Remove all optional section:FEXTRA,FNAME,FCOMMENT,FHCRC.

Icon file (.ico)

Convert 256x256 BMP toPNG.

LeanifyPNGinside, if any.

Java archive (.jar)

It is based onZIP.

JPEG image (.jpeg,.jpg,.jpe,.jif,.jfif,.jfi,.thm)

Remove all application markers (e.g.Exif(use--keep-exifto keep it),ICC profile,XMP) and comments.

Optimize withmozjpeg.

Lua object file (.lua,.luac)

Remove all debugging information:

  • Source name
  • Line defined and last line defined
  • Source line position list
  • Local list
  • Upvalue list

OpenDocument (.odt,.ods,.odp,.odb,.odg,.odf)

It is based onXMLandZIP.

OpenRaster (.ora)

It is based on OpenDocument andPNG.

PE file (.exe,.dll,.ocx,.scr,.cpl)

Leanify embedded resource.

RemoveRelocation Tablein executable file.

Remove undocumentedRich Header.

OverlapPE HeaderandDOS Header.

PNG image (.png,.apng)

Remove all ancillary chunks except for:

  • tRNS:transparent information
  • fdAT,fcTL,acTL:These chunks are used byAPNG
  • npTc:Android 9Patch images (*.9.png)

Optimize withZopfliPNG.

RDB archive (.rdb)

It is an archive format found in Tencent QQ.

Leanify all files inside.

Flash file (.swf)

Leanify embedded images.

Recompress it withLZMA.

Remove Metadata Tag.

SVG image (.svg,.svgz)

It is based onXML.

Remove metadata.

Shrink spaces in attributes.

Remove empty attributes.

Remove empty text element and container element.

tar archive (.tar)

Leanify all files inside.

XML document (.xml,.xsl,.xslt)

Remove all comments, unnecessary spaces, tabs, line breaks.

XPInstall (.xpi)

It is based onZIP.

Note that modifying files insidexpiwill break digital signature. To install it, you'll have to sign it again.

XPS document (.xps,.oxps)

It is based onXMLandZIP.

ZIP archive (.zip)

Leanify all files inside and recompress deflate stream usingZopfli.

UseSTOREmethod ifDEFLATEmakes file larger.

Remove extra field inLocal file header.

RemoveData descriptor structure,write those information toLocal file header.

Remove extra field and file comment inCentral directory file header.

Remove comment inEnd of central directory record.

Downloads

Stable Releases

Windows Nightly Build

Usage

Usage: leanify [options] paths
-i, --iteration <iteration> More iterations produce better result, but
use more time, default is 15.
-d, --max_depth <max depth> Maximum recursive depth, unlimited by default.
Set to 1 will disable recursive minifying.
-f, --fastmode Fast mode, no recompression.
-q, --quiet No output to stdout.
-v, --verbose Verbose output.
-p, --parallel Distribute all tasks to all CPUs.
--keep-exif Do not remove Exif.

Compiling

Windows

  • Visual Studio 2015+

    Use Leanify.vcxproj

  • gcc 5+

    build_gcc.batormingw32-make

Linux, Mac

gcc 5+ or clang 3.6+

make