# Install
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install optipng # Ubuntu/Debian
-weight: 500;">brew -weight: 500;">install optipng # macOS # Optimize (overwrites in place)
optipng -o5 image.png # Batch optimize
optipng -o5 *.png
# Install
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install optipng # Ubuntu/Debian
-weight: 500;">brew -weight: 500;">install optipng # macOS # Optimize (overwrites in place)
optipng -o5 image.png # Batch optimize
optipng -o5 *.png
# Install
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install optipng # Ubuntu/Debian
-weight: 500;">brew -weight: 500;">install optipng # macOS # Optimize (overwrites in place)
optipng -o5 image.png # Batch optimize
optipng -o5 *.png
# Install
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install pngquant # Ubuntu/Debian
-weight: 500;">brew -weight: 500;">install pngquant # macOS # Reduce to 256 colors (default)
pngquant image.png --output compressed.png # Reduce to 128 colors (smaller file, more banding risk)
pngquant 128 image.png --output compressed.png # Batch process
pngquant --quality=65-80 *.png --ext .png --force
# Install
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install pngquant # Ubuntu/Debian
-weight: 500;">brew -weight: 500;">install pngquant # macOS # Reduce to 256 colors (default)
pngquant image.png --output compressed.png # Reduce to 128 colors (smaller file, more banding risk)
pngquant 128 image.png --output compressed.png # Batch process
pngquant --quality=65-80 *.png --ext .png --force
# Install
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install pngquant # Ubuntu/Debian
-weight: 500;">brew -weight: 500;">install pngquant # macOS # Reduce to 256 colors (default)
pngquant image.png --output compressed.png # Reduce to 128 colors (smaller file, more banding risk)
pngquant 128 image.png --output compressed.png # Batch process
pngquant --quality=65-80 *.png --ext .png --force
# Resize to 50% of original dimensions
magick input.png -resize 50% output.png # Resize to specific width (height auto-calculated)
magick input.png -resize 800x output.png # Resize to fit within maximum dimensions
magick input.png -resize 1200x800 output.png
# Resize to 50% of original dimensions
magick input.png -resize 50% output.png # Resize to specific width (height auto-calculated)
magick input.png -resize 800x output.png # Resize to fit within maximum dimensions
magick input.png -resize 1200x800 output.png
# Resize to 50% of original dimensions
magick input.png -resize 50% output.png # Resize to specific width (height auto-calculated)
magick input.png -resize 800x output.png # Resize to fit within maximum dimensions
magick input.png -resize 1200x800 output.png
# Strip all metadata
magick input.png -strip output.png
# Strip all metadata
magick input.png -strip output.png
# Strip all metadata
magick input.png -strip output.png
# Remove all metadata (Perl, works on any OS)
exiftool -all= image.png
# Remove all metadata (Perl, works on any OS)
exiftool -all= image.png
# Remove all metadata (Perl, works on any OS)
exiftool -all= image.png
Is the PNG a photograph?
├── Yes → Convert to JPEG (quality 80) or WebP lossy
│ Savings: 70-90%
└── No → Does it need to stay PNG (transparency, lossless, compatibility)? ├── Yes → Lossless optimize first (20-50% savings) │ Still too big? → Reduce colors (if flat graphics) │ Still too big? → Resize to smaller dimensions └── No → Convert to WebP lossless (26% smaller, keeps transparency) Still too big? → WebP lossy at quality 80+
Is the PNG a photograph?
├── Yes → Convert to JPEG (quality 80) or WebP lossy
│ Savings: 70-90%
└── No → Does it need to stay PNG (transparency, lossless, compatibility)? ├── Yes → Lossless optimize first (20-50% savings) │ Still too big? → Reduce colors (if flat graphics) │ Still too big? → Resize to smaller dimensions └── No → Convert to WebP lossless (26% smaller, keeps transparency) Still too big? → WebP lossy at quality 80+
Is the PNG a photograph?
├── Yes → Convert to JPEG (quality 80) or WebP lossy
│ Savings: 70-90%
└── No → Does it need to stay PNG (transparency, lossless, compatibility)? ├── Yes → Lossless optimize first (20-50% savings) │ Still too big? → Reduce colors (if flat graphics) │ Still too big? → Resize to smaller dimensions └── No → Convert to WebP lossless (26% smaller, keeps transparency) Still too big? → WebP lossy at quality 80+ - Open pixotter.com/compress.
- Drop your PNG file(s).
- Download the optimized files. - Screenshots with flat colors and solid backgrounds
- Logos and icons with limited color palettes
- Diagrams, charts, and infographics
- UI elements with consistent design system colors - Photographs (256 colors causes severe banding)
- Images with smooth gradients (banding at color transitions)
- Images with many similar but distinct colors - Open pixotter.com/resize.
- Drop your PNG.
- Enter the target dimensions or percentage.
- Download the resized PNG. - The image is displayed at a smaller size than its actual dimensions (a 4000px image in a 600px blog column)
- The image is for screen viewing, not printing (screens need far fewer pixels than print)
- The image is a screenshot of a full desktop but only the application window matters — crop first, then resize - Open pixotter.com/convert.
- Drop your PNG.
- Select the output format (WebP recommended for most cases). - Crop unnecessary borders and whitespace
- Resize to the smallest dimensions you actually need
- Reduce colors (if the image has few colors and no gradients)
- Lossless optimize (always — there is no downside)
- Convert format (if PNG is not required)