From a file manager
Register a folder once. Rename the extension from any program that can rename a file.
holiday.heic
holiday.jpg
Nothing already in the folder is converted.
Pre-alpha · local file conversion
Change holiday.heic to holiday.jpg and the bytes follow. Put the quality, dimensions, and geometry in the new name: holiday.webp+q80+cap1080.
WebP, quality 80, capped at 1080.
holiday-quality80-cap1080.webpretype c holiday.heic webp+q80+cap1080
01 / The gesture
The filename is the interface. Retype reads the name after the dot, plans the work, and puts the result beside the source. The source stays where it is when you use the command.
Register a folder once. Rename the extension from any program that can rename a file.
holiday.heic
holiday.jpg
Nothing already in the folder is converted.
The second argument is the rest of the new name. No output path is required, because the name already has one.
retype c holiday.heic webp+q80
# holiday-quality80.webp
Every command has a JSON form. Exit codes separate usage, diagnosis, environment, filesystem, daemon, and state failures.
retype c holiday.heic jpg --json
# one object, one result
Before anything runs
retype explain reads a name without a file. --dry-run reads a real one. Both print the output name, the pipeline in order, the program, the command line it would run, and the fidelity tier.
Nothing is written. No converter starts. A name that cannot be understood is a diagnosis with a span, not a guess.
$ retype explain holiday.heic 'webp+q80+cap1080'
intent webp+quality80+cap1080
source holiday.heic
says convert from heic to webp with quality at 80,
then cap to 1080
output holiday-quality80-cap1080.webp
backend magick
argv magick {input} -quality 80 -filter Lanczos
-resize 1080x1080> {output}
tier converted
02 / The grammar
A format, then tokens. The tokens run in the order you write them. A token the target cannot carry is an error, not a silent no-op.
webp+q80+cap1080+rotate90
Categories, not a fixed pipeline. The written order is the pipeline.
Geometry runs where you put it, and the order changes the image.
rotate90+cap1080
turn, then cap
cap1080+rotate90
cap, then turn
Asking a lossless format for a quality dial is a diagnosis. Accepting the token and ignoring it would teach a habit that fails later, on a format where it matters.
retype c scan.png jpg+q80 # fine
retype c scan.jpg png+q80 # E_INAPPLICABLE: png has no quality
A comma starts another output. Each group is one file, and one rename can produce all of them.
retype c holiday.heic png,webp+cap1080
# holiday.png
# holiday-cap1080.webp
Retype is pre-alpha. Some tokens are declared and not yet wired. The manual marks what has landed, and the command says so rather than doing nothing.
03 / Local by construction
No upload path. No account. No telemetry. Retype is a local daemon and a client, not a service with a file input.
A conversion reads the source, runs a program on this machine, and writes beside it. Nothing is sent anywhere. There is no account to create and no usage to report.
The daemon owns the watchers, queue, journal, undo store, and notifications. The command line and the GUI are clients of the same daemon, so a typed job and a watched rename share one queue.
Retype ships no encoder. It calls ImageMagick, FFmpeg, pandoc, and 7-Zip; you install them with your package manager. retype doctor reports the version, build, and missing delegates.
Undo
Every job keeps what it needs to be reversed, including the source bytes when the rename consumed the source name. The defaults are a week and 5 GB, host-level, not a folder setting.
retype undo --last
Ask first
A watched rename that would take a while parks and waits. A source above 4 GiB parks without a timer. +ask asks on purpose; +now says you already know.
holiday.heic → holiday.webp+ask
holiday.heic → holiday.webp+now
Provenance
retype why answers with the intent, the tool and engine, the tier, and the store that matched: an identity index that survives the usual rename, or an extended attribute where the platform has one. No content hash, no signature, and no feature gated on a record being present.
retype why holiday.webp
ImageMagick 7.1+ · FFmpeg 6.0+ · pandoc 3.0+ · 7-Zip 23.0+
The CLI never downloads a tool during a conversion. A missing converter is an environment failure that names what to install.
04 / Coverage with a claim
Retype claims coverage per source and target pair, per tool and engine, with a tier. The claim is evidence, not a feature list.
No sample was re-encoded. The container may change; the payload may not.
mp4 → mkv remux, tiff → pngEvery sample or glyph is decoded and re-embedded. The content is recognisably the same; the encoding is new.
heic → jpg, wav → mp3A tool retype does not model does the work. The promise is a valid file of the target format, nothing about its insides.
psd through ImageMagickIllustrative pairs, from the definitions. A shipped claim is earned against the tool build that produced it. When the build changes, the pair is reported unverified, and a pair that promised exact refuses rather than quietly lowering the promise.
heic, jpg, png, webp, avif, tiff, gif, bmp, ico
mp4, mkv, mov, webm, mp3, flac, wav, opus
md, html, docx, odt, epub, rst, tex, typst, pdf output
zip, tar, tar.gz, 7z; rar read only
05 / Install
The CLI and daemon install today. Some intent tokens are still being wired. The manual says which. The pre-release installer is a convenience, not the signed installed tier.
For Linux and macOS. Run it again to update.
curl -fsSL https://retype.name/install.sh | bash
Installs the CLI, daemon, and shared release assets under ~/.local. Verifies the release checksum.
In PowerShell. Run it again to update.
irm https://retype.name/install.ps1 | iex
Installs under %LOCALAPPDATA%\Programs\retype and adds its bin directory to the user PATH.
With a Rust toolchain, 1.85 or newer. The source tier is the CLI only.
cargo install --git https://github.com/LapilliWorks/retype retype-cli
The binary includes the daemon, but no user service, URI registration, or notifier bundle. A workaround, not the supported path.
06 / The manual
Usage, long-form answers, and the exhaustive reference. Read it in an editor, on the forge, or here.
The quickstart, the default tools, and the first conversion.
Open the manual 01The rename, the command, several outputs, and what is left alone.
02Register once. Rename from any program. Batching, pauses, ignored paths.
03Every token, value class, limit, and diagnostic code.
04Which program carries which format, and what its build must have.
05What exact, converted, and delegated mean, and when a claim goes stale.
06Every subcommand, flag, exit code, and JSON envelope.