explaingit

u84u/photu

Analysis updated 2026-07-24

4TypeScriptAudience · developerComplexity · 2/5Setup · easy

TLDR

A command-line tool that lets you resize, crop, blur, and convert batches of images by chaining simple pipe commands together. It processes everything quickly and with low memory usage.

Mindmap

mindmap
  root((repo))
    What it does
      Batch image processing
      Shell pipe pipelines
      Fast and memory efficient
    Tech stack
      TypeScript
      libvips
      CLI
    Use cases
      Resize many images
      Convert image formats
      Apply filters in bulk
    Audience
      Developers
      Content creators
      Ops teams

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Resize a folder of photos to thumbnails in one command.

USE CASE 2

Convert images between formats like JPEG, PNG, and WebP.

USE CASE 3

Apply blur or grayscale filters to batches of images.

USE CASE 4

Download and process images directly from web URLs.

What is it built with?

TypeScriptlibvipsCLI

How does it compare?

u84u/photu0labs-in/vision-linkadarsh-me/image-sdk
Stars444
LanguageTypeScriptTypeScriptTypeScript
Setup difficultyeasymoderateeasy
Complexity2/53/52/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

In plain English

photu is a command-line tool for batch image processing. It lets you build image manipulation pipelines using ordinary shell pipes, where each step chains into the next. The tool is built on top of libvips, a fast image processing library, and it runs the entire pipeline as a single operation at the end. This approach makes it quick and memory-efficient compared to alternatives like ImageMagick, whose command syntax can be difficult to remember correctly. The way photu works is clever. The pipe between stages does not actually carry image data. Instead, each stage appends its operation to a small JSON plan and passes that plan along. The final write stage hands the whole plan to libvips in one go. This means you can chain as many stages as you like, and each image is still only decoded and encoded once. You can inspect the plan at any point by piping into photu explain. Because the plan is plain text, pipelines work the same way in bash, zsh, PowerShell, and cmd. photu supports a range of commands including read, resize, crop, rotate, flip, mirror, grayscale, adjust, blur, sharpen, overlay, pad, and write. You can read from local files or HTTP URLs, mix them freely, and use output templates with placeholders like the source filename or index. Supported formats include JPEG, PNG, WebP, GIF, TIFF, and AVIF. Animated GIF, WebP, and TIFF files are processed frame by frame, so every stage applies correctly to each frame. The tool tries to fail before touching any pixels. It catches bad arguments, empty globs, malformed URLs, filename collisions, and attempts to overwrite an input file up front. Errors from dead links or corrupt files surface at write time and fail the whole batch. The author acknowledges photu is a libvips wrapper, noting that what it adds is the interface, globs, URL sources, output templates, and a simple install. The full README is longer than what was shown.

Copy-paste prompts

Prompt 1
Write a photu command that reads all JPEGs in a folder, resizes them to 800px wide, converts them to WebP, and saves them to an output folder.
Prompt 2
Create a photu pipeline that downloads an image from a URL, applies a grayscale filter, adds padding, and writes it as a PNG file.
Prompt 3
Explain how to use photu explain to inspect a multi-step image processing pipeline before any images are actually modified.
Prompt 4
Build a photu command that reads an animated GIF, flips it horizontally, and writes it back out as an animated WebP.

Frequently asked questions

What is photu?

A command-line tool that lets you resize, crop, blur, and convert batches of images by chaining simple pipe commands together. It processes everything quickly and with low memory usage.

What language is photu written in?

Mainly TypeScript. The stack also includes TypeScript, libvips, CLI.

How hard is photu to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is photu for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.