---
name: "vipsthumbnail"
section: "1"
platform: "linux"
package: "libvips"
version: "8.18.7-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/vipsthumbnail"
---

# vipsthumbnail(1)

make thumbnails of image files

## NAME

vipsthumbnail - make thumbnails of image files

## SYNOPSIS

**vipsthumbnail \[flags\] imagefile1 imagefile2 ...**

## DESCRIPTION

**[vipsthumbnail(1)](/vipsthumbnail/1.md)** processes each **imagefile** in turn, shrinking each image to fit within a 128 by 128 pixel square. The shrunk image is written to a new file named **tn\_imagefile.jpg.** This program is typically faster and uses less memory than other image thumbnail programs.

For example:

 $ vipsthumbnail fred.png jim.tif

will read image files **fred.png** and **jim.tif** and write thumbnails to the files **tn\_fred.jpg** and **tn\_jim.jpg.**

 $ vipsthumbnail --size=64 -o thumbnails/%s.png fred.jpg

will read image file **fred.jpg** and write a 64 x 64 pixel thumbnail to the file **thumbnails/fred.png.**

## OPTIONS

- **-s N, --size=N**

  Set the output thumbnail size to **N** x **N** pixels.

  You can use "MxN" to specify a rectangular bounding box. The image is shrunk so that it just fits within this area, images which are smaller than this are expanded.

  Use "xN" or "Mx" to just resize on one axis.

  Append "\<" to only resize if the input image is smaller than the target, append "\>" to only resize if the input image is larger than the target.

- **--path=FORMAT**

  Set the output path format. Three substitutions are performed: **%s** is replaced by the input basename with any suffix removed, **%d** is replaced by the input dirname, and **%c** is replaced by the current working directory.

  The default value is **%d/tn\_%s.jpg** meaning JPEG output, to the same directory as the input file, with **tn\_** prepended. You can add format options too, for example **%c/%s/tn\_%s.jpg\[Q=20\]** will write JPEG images to a tree within the current directory with Q set to 20.

- **-e PROFILE, --eprofile=PROFILE**

  Export thumbnails with this ICC profile. Images are only colour-transformed if there is both an output and an input profile available. The input profile can either be embedded in the input image or supplied with the **--iprofile** option.

- **-i PROFILE, --iprofile=PROFILE**

  Import images with this ICC profile, if no profile is embedded in the image. Images are only colour-transformed if there is both an output and an input profile available. The output profile should be supplied with the **--oprofile** option.

- **-c, --crop**

  Crop the output image down. The image is shrunk so as to completely fill the bounding box in both axes, then any excess is cropped off.

- **-d, --delete**

  Delete the output profile from the image. This can save a small amount of space.

- **-t, --rotate**

  Auto-rotate images using EXIF orientation tags.

- **-a, --linear**

  Shrink images in linear light colour space. This can be much slower.

## RETURN VALUE

returns 0 on success and non-zero on error. Error can mean one or more conversions failed.

## SEE ALSO

[vipsheader(1)](/vipsheader/1.md)
