Ruby/CLI: Automatic lossless reduction of all your images
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin make smusher use its local lib folder for tests Mar 15, 2011
lib make url overwriteable + found the new url + document how to find the… Nov 19, 2011
spec notify users about renamed files Mar 15, 2011
.gitignore now singleton + cmd-line interface... Jan 24, 2009
Gemfile.lock make compatible to new http-client version Apr 22, 2011
VERSION Version bump to 0.4.9 Nov 19, 2011
smusher.gemspec Regenerate gemspec for version 0.4.9 Nov 19, 2011

LOSSLESS image size reduction for jpg, png and gif in the cloud

  • no image libraries needed, everything done in the interwebs
  • less size (up to a 97% saving) = faster downloads = less bandwidth + happy users


install ruby + rubygems
sudo gem install smusher


Optimize a single image or a whole folder:

smusher /apps/x/public/images [options]
smusher /apps/x/public/images/x.png [options]
smusher /apps/x/public/images/*.png [options]

Options: -q, --quiet no output -c, --convert-gifs convert gifs to PNGs --service PunyPng use PunyPng for image optimizing, instead of SmushIt -v, --version display current version


smusher /apps/ts/public/images
  smushing /apps/rs/public/images/social/facebook_icon.png
  2887 -> 132                              = 4%

  smushing /apps/rs/public/images/social/myspace_icon.png
  3136 -> 282                              = 8%

  smushing /apps/rs/public/images/dvd/dvd_1.png
  5045 -> 4                                = 0%

PunyPng - usage limit

The default Smusher::PunyPng.api_key is used by all users and could already be full when you try to smush some images.

Create a .puny_png_api_key in your home directory with your own api key from PunyPng.


Any image that returns a failure code, is larger than before, or is empty will not be saved.


  • only optimize 'new' images -> save time when doing on already optimized folder


reduce images and minify css + js -> try reduce.



Michael Grosser
Hereby placed under public domain, do what you want, just do not hold me accountable...