Images

Compress, resize and convert images, locally

palupdated 2026-09-29MediaIn pal's registry

Open in pal

In pal's registry: the button shows it in pal, which asks before installing; the command does the same from a terminal. This page can't see what your pal has installed.

Images: The images at hand: the Finder selection and the clipboard, each with its size and dimensions, the result of a compression under Results
The images at hand: the Finder selection and the clipboard, each with its size and dimensions, the result of a compression under Results
Images: Every operation on a row: compress, optimise for web, resize, convert, rotate, crop, strip, grayscale, icon set, OCR, info
Every operation on a row: compress, optimise for web, resize, convert, rotate, crop, strip, grayscale, icon set, OCR, info
Images: The detail pane: the picture, its size, dimensions, format, colour profile and camera
The detail pane: the picture, its size, dimensions, format, colour profile and camera
Images: Resize: the presets and a typed size, each row saying the pixels it lands on
Resize: the presets and a typed size, each row saying the pixels it lands on
Images: Convert: the formats, each row naming the tool that writes it, a missing tool named
Convert: the formats, each row naming the tool that writes it, a missing tool named
Images: Optimise for web: the before and after of every image, the saving as a tag, the total at the bottom
Optimise for web: the before and after of every image, the saving as a tag, the total at the bottom
1 of 6

What it does

Compress, resize, convert, crop and strip the images selected in Finder or on the clipboard, with the tools already on your machine. Every result is saved next to the original, its path copied.

  • Works on the images at hand: the Finder selection, the clipboard or a typed path
  • Compress with whatever is installed (pngquant, oxipng, mozjpeg, cwebp, avifenc, ImageMagick), or TinyPNG with a key
  • Resize, convert (PNG, JPEG, WebP, AVIF, HEIC, PDF), rotate, crop, grayscale and strip metadata
  • Optimise for web: resize, compress and strip in one step, with the size saved per image
  • Make an icon set (.icns, favicon, touch and Android sizes); read the text in an image
  • Results land next to the original with a suffix; Replace keeps the original for Restore

Palettes 1

  • Imagesimagesinput

    The images selected in Finder, on the clipboard or at a typed path; every operation an action on a row, the results next to their sources.

    • ↵Compress
    • ⌘↵Optimise for web
    • ⌘LCompress losslessly
    • ⌘TCompress with TinyPNG (with a key)
    • ⌘⇧RResize…
    • ⌘⇧VConvert…
    • ⌘⇧ORotate or flip…
    • ⌘⇧ACrop or pad…
    • ⌘⇧MStrip metadata
    • ⌘GGrayscale
    • ⌘⇧FMake an icon set
    • ⌘⇧TCopy text (OCR)
    • ⌘⇧ICopy info
    • ⌘CCopy path
    • ⌘⇧PCopy image
    • ⌘OOpen
    • ⌘⇧EReveal in Finder
    • ⌘⇧ZRestore original (a replaced result)
    • ⌘DMove result to Trash
    • ⇥Mark a row; x too while nothing is typed

Actions

  • CompressLossy at the quality; the smaller of the encoders' results, or nothing when the file is already small.↵
  • Optimise for webCap the long side, encode, strip; a view with the before and after.⌘↵
  • Compress losslesslyoxipng, jpegtran, cwebp -lossless, gifsicle: the pixels untouched.⌘L
  • Compress with TinyPNGWith an API key set.⌘T
  • Resize…Presets, or a typed size: 800, x600, 800x600, 50%, 2x.⌘⇧R
  • Convert…PNG, JPEG, WebP, AVIF, HEIC, PDF, TIFF, GIF.⌘⇧V
  • Rotate or flip…90° either way, 180°, mirror.⌘⇧O
  • Crop or pad…Square, 16:9, 4:3, 3:2, 9:16 centred; pad to a square.⌘⇧A
  • Strip metadataEXIF, XMP, comments, the ICC profile; lossless for PNG and JPEG.⌘⇧M
  • Grayscale⌘G
  • Make an icon setA folder with the .iconset, .icns, favicon.ico and the web sizes.⌘⇧F
  • Copy text (OCR)⌘⇧T
  • Copy infoThe detail pane's lines as text.⌘⇧I
  • Copy path⌘C
  • Copy imageThe picture onto the clipboard (PNG and JPEG); other formats as a file.⌘⇧P
  • Open⌘O
  • Reveal in Finder⌘⇧E
  • Restore originalOn a result that replaced its source.⌘⇧Z
  • Move result to TrashAsks first; the source stays.⌘D

Settings

Extension, [extensions.images]

replace
Off boolean
quality
80 number

For the lossy encoders (JPEG, WebP, AVIF, HEIC, pngquant's floor is 25 below it).

web_format
Keep the format select

What Optimise for web writes: the source's format, or WebP or AVIF. One of keep, webp, avif.

web_max
2000px number

Optimise for web shrinks the long side to at most this many pixels; smaller images are left at their size.

thumbnails
On boolean
pad_color
#ffffff text

What Pad to a square fills with, as hex.

tinypng_api_key
empty secret

From tinypng.com/developers (500 compressions a month free). Adds Compress with TinyPNG to every row.

tools
pngquantoxipngoptipngcjpegjpegtrancwebpavifencgifsicleexiftoolsipsmagick list

The encoders in the order they are tried; one left out is never used. Resizing and the other geometry are sips's on macOS whenever it is listed; ImageMagick is the fallback for everything.

Defaults shown. Change them in pal's settings window or in the config file.

The README

Everything Images does, key by key, from the extension's own README.md

Images

Compress, resize, convert, rotate, crop, strip metadata, make an icon set, read the text: what Raycast's TinyPNG and Image Modification do, with the tools on the machine first and TinyPNG only when you give it a key. One input palette: the rows are the images at hand, every operation is an action on a row, and every result is written next to its source with a suffix and its path copied.

What is at hand

Before you type, the palette lists:

section rows
Finder selection the image files selected in Finder while it is the app in front (the core's selection.files(), read once per panel show); a selected folder lists its images (200 at most, not recursive). macOS only
Clipboard an image on the clipboard (the file pal's history keeps for it, as "Clipboard image"), or the images of a copied file list
Results what this session wrote, newest first, with the saving as a tag; a result is a file row too, so it can be worked on again

With more than one image an All N images row leads, and every operation on it runs over all of them; tab (or x with nothing typed) marks rows for the same. A typed path lists a file (~/Desktop/a.png), a folder's images (~/Desktop/site/, with its own All row) or the completions of the last segment; anything else filters the rows by name. Each row shows a thumbnail, the size and the pixel size; the detail pane (open by default) shows the picture at 256 px over the info: dimensions, format, colour space and profile, camera, lens, exposure, date, location (the last five from exiftool when it is installed; sips knows make, model, copyright and artist).

The operations

keys action writes
enter Compress name-compressed.ext, lossy at quality; a file no encoder can shrink writes nothing and says so
cmd+enter Optimise for web name-web.ext (or .webp / .avif per web_format): the long side capped at web_max, encoded at quality, metadata stripped; a view with the before and after of every image, the saving as a tag, a bar, and the total at the foot; the view follows a long batch as it lands
cmd+l Compress losslessly name-compressed.ext, the pixels untouched
cmd+t Compress with TinyPNG name-compressed.ext through the API (with a key)
cmd+shift+r Resize… a level: half, quarter, double, fit in 2000 or 1000, widths, a height; or type 800, x600, 800x600 (fit inside), 50%, 2x. name@0.5x.ext, name-800w.ext, name-800x600.ext; @2x strips an existing @Nx from the stem, half of an @2x stem is the bare name
cmd+shift+v Convert… a level: PNG, JPEG, WebP, AVIF, HEIC, PDF, TIFF, GIF, each row naming the tool that writes it (a missing one says what to install and takes no action). name.ext
cmd+shift+o Rotate or flip… 90° either way, 180°, mirror left-right or top-bottom. name-rotated90.ext, name-flipped-h.ext
cmd+shift+a Crop or pad… centred crops to 1:1, 16:9, 4:3, 3:2, 9:16 (name-square.ext, name-16x9.ext); pad to a square with pad_color (name-padded.ext)
cmd+shift+m Strip metadata name-stripped.ext: EXIF, XMP, comments and the ICC profile gone; PNG and JPEG losslessly in pal itself, other formats through exiftool or ImageMagick
cmd+g Grayscale name-gray.ext
cmd+shift+f Make an icon set a folder name-icons/ with name.iconset/ (the ten files iconutil wants), name.icns (macOS), favicon.ico, favicon-16.png, favicon-32.png, apple-touch-icon.png (180), android-chrome-192.png, android-chrome-512.png; a non-square image is centre-cropped first
cmd+shift+t Copy text (OCR) the text in the image onto the clipboard (Vision on macOS, tesseract on Linux)
cmd+shift+i Copy info the pane's lines as text
cmd+c Copy path the paths of the marked rows, one per line
cmd+shift+p Copy image the picture onto the clipboard (PNG and JPEG; other formats as a file)
cmd+o, cmd+shift+e Open, Reveal in Finder
cmd+shift+z Restore original on a result that replaced its source: the kept copy goes back
cmd+d Move result to Trash on a result written next to its source; asks first, the source stays

Every operation ends the same way: the result's path on the clipboard (the paths, one per line, for a batch; the image itself when the input was the clipboard, so a screenshot compresses and pastes), the panel down, and the HUD saying what happened and with what: "Compressed photo.png: 1.4 MB → 312 KB (−78%), pngquant · path copied". A batch that takes longer than eight seconds answers with a progress toast and finishes behind the panel; the HUD then sums it up. With replace on the result takes the source's place and the source is copied to ~/Library/Caches/pal/images/originals/ first, so Restore original always has something to restore; nothing is ever deleted. A clipboard image's result goes to ~/Library/Caches/pal/images/clipboard/ (the source is pal's history file).

Which tool does it

The tools setting is the order the encoders are tried; one left out is never used. Every result says which tool made it. On macOS sips (in every install) does the geometry (resize, rotate, flip, crop, pad, grayscale) whenever it is listed, and converts to PNG, JPEG, TIFF, GIF, BMP, PDF, HEIC, AVIF and ICO; ImageMagick (magick, or convert on version 6) does all of that elsewhere and is the fallback for everything. The compressors:

format lossy lossless
PNG pngquant (quality floor 25 under quality) oxipng, optipng, ImageMagick (never sips: it re-encodes a palette PNG as RGBA and grows it)
JPEG cjpeg (mozjpeg's if brew install mozjpeg, else libjpeg-turbo's; decoded through djpeg), ImageMagick, sips jpegtran
WebP cwebp, ImageMagick cwebp -lossless
AVIF avifenc, sips, ImageMagick avifenc -l
HEIC sips, ImageMagick
GIF gifsicle

A source an encoder cannot read is decoded to PNG first (sips, ImageMagick, dwebp, avifdec, heif-convert); SVG is rasterised to PNG. The empty listing names up to three encoders worth installing when none of the sources are there. TinyPNG (tinypng_api_key, from tinypng.com/developers, 500 compressions a month free) takes PNG, JPEG, WebP and AVIF and posts the file to api.tinify.com.

Settings

[extensions.images]:

key type default what
replace boolean false Write over the source; a copy is kept for Restore original.
quality 1 to 100 80 For the lossy encoders.
web_format keep, webp, avif keep What Optimise for web writes.
web_max 100 to 10000 2000 Optimise for web caps the long side at this many pixels.
thumbnails boolean true A thumbnail on each row and in the pane (the core's own for PNG, JPEG and GIF; sips -Z or ImageMagick into ~/Library/Caches/pal/images/thumbs/ for the rest).
pad_color hex #ffffff What Pad to a square fills with.
tinypng_api_key secret Adds Compress with TinyPNG.
tools list every tool The order the encoders are tried.

How it is made

ops.ts is pure: the formats, the output naming, plan(job, input, opts) answering the steps ({ tool, argv }) for a job with the tools at hand, the built-in JPEG and PNG strip (APPn and COM segments; the text, time, EXIF and ICC chunks), and the parsers for sips -g all, identify -format and exiftool -j. exec.ts finds the binaries, runs the steps (a replace goes through a temp file, so a failed step leaves the source whole), keeps the thumbnails, reads the Finder selection, writes the clipboard, talks to TinyPNG and keeps the originals. index.ts is the rows, the levels, the view and the picks. The tests draw their own PNGs (host/test/extensions/images-png.ts) and turn one into a JPEG through sips or ImageMagick.

What it does not do

  • Batch across folders recursively, or watch a folder.
  • Edit pixels beyond the list above (no filters, no annotations, no background removal).
  • Read RAW files: sips can, but the palette lists the common formats only.
  • A per-file quality: quality is one setting; run again with another.

Platforms

macOS (sips in every install; the encoders from Homebrew) and Linux (ImageMagick and the encoders from the package manager; the Finder selection is macOS only, the clipboard and typed paths work everywhere).