v0.1.0 — 493 KB

nr Universal
Media Converter

One binary. Zero dependencies. Any format. Convert any media file to any compatible format — ffmpeg is auto-downloaded, you never install it.

nr — convert
$ nr video.mov mp4
Converting: video.mov → video.mp4
✓ Done! (3.2s)
Location: D:\video.mp4
Size: 12.5 MB
$ nr # clipboard → interactive picker
$ nr --force mp4 # batch all clipboard files
Features

Why nr?

Zero-install ffmpeg, clipboard-first workflow, 109 conversion targets, and a 493 KB footprint.

Zero-Install ffmpeg

On first run, nr downloads and caches ffmpeg automatically. You never install it yourself. Works on Windows, Linux, and macOS.

Multi-File Clipboard

Select multiple files in Explorer, Ctrl+C, then nr --force mp4 converts every one. Supports FileDropList format.

Magic Byte Detection

Detects file type by magic bytes (not just extension) for 30+ formats including MP4, MKV, HEIC, AVIF, and more.

Cross-Type Conversion

Image → video slideshow (5s), audio → video with blank frame, video → audio extraction. Any source, any target.

109 Format Targets

24 video containers, 23 audio extracts, 24 audio formats, 25 image formats, 7 slideshow targets, 6 blank-video targets.

493 KB Binary

Written in Rust with LTO, opt-level=z, panic=abort. No TUI framework, no arboard, no infer crate — just clap + anyhow.

Usage

Simple by Design

One command does it all. No flags to memorize for common tasks.

# Interactive — clipboard file, pick format
nr

# Clipboard file directly to mp4
nr mp4

# Specific file, pick format interactively
nr video.mov

# Specific file + target format
nr video.mov mkv

# Batch all clipboard files to one format
nr --force mp4

# Show all 109 supported conversion targets
nr --list
# Extract audio from video
nr video.mp4 mp3

# Image to video slideshow
nr photo.jpg mp4

# Audio wrapped in video container
nr song.mp3 mov

# Lossless remux to MKV
nr video.mov mkv

# Best compression (VP9 + Opus)
nr video.mp4 vp9

# Batch convert all images to WebP
nr --force webp
Format Registry

109 Targets

Every major container, codec, and cross-type path. Variant formats like h265 → .mp4 shown with their real extension.

Video → Video
mp4
h265 → mp4
mkv
webm
vp9 → webm
avi
mov
wmv
flv
m4v
ogv
mpg
ts
3gp
3g2
gif
dv
m2ts
vob
av1 → mkv
mxf
dnxhd
mjpeg
nut
psp → mp4
Video → Audio
mp3
wav
flac
ogg
aac
adts
opus
wma
m4a
ac3
eac3
truehd
aiff
au
caf
voc
w64
tta
amr
gsm
ircam
sox
Audio → Audio
mp3
wav
flac
ogg
aac
adts
opus
spx
wma
m4a
ac3
eac3
truehd
aiff
au
caf
voc
w64
tta
amr
gsm
ircam
sox
oga
Image → Image
jpg
png
apng
webp
avif
bmp
tiff
gif
ico
ppm
pgm
pbm
pam
pcx
tga
xbm
xwd
dpx
sgi
jp2
hdr
sun
wbmp
pfm
fits
Cross-Type
→ mp4 / mkv / webm / vp9 / avi / mov / gif
→ mp4 / mkv / webm / avi / mov / vp9
Install

One-Line Setup

No package manager needed. Single binary, auto-downloads ffmpeg on first run.

Windows (PowerShell)
iex "& { $(irm https://raw.githubusercontent.com/subhradeepsarkae-ai/noir/main/scripts/install.ps1) }"
Linux / macOS
curl -sSL https://raw.githubusercontent.com/subhradeepsarkae-ai/noir/main/scripts/install.sh | bash
Build from source (requires Rust)
cargo install --git https://github.com/subhradeepsarkae-ai/noir nr
FAQ

Common Questions

Do I need to install ffmpeg?

No. nr auto-downloads ffmpeg on first run and caches it at %LOCALAPPDATA%\noir\ffmpeg\ (Windows) or ~/.cache/noir/ffmpeg/ (Linux/macOS). If ffmpeg is already on your PATH, it uses that instead.

How does the clipboard work?

On Windows, nr reads the FileDropList format (what Explorer uses when you Ctrl+C files). This means multi-select works — all selected files are captured. On Linux/macOS, it reads plain text clipboard paths.

What if I don't have a clipboard?

Pass files directly: nr video.mov mp4. The first argument is auto-detected — if it exists on disk it's a file, if it's a known format name it reads the clipboard.

What codecs are supported?

nr uses the gyan.dev ffmpeg build which includes: libx264, libx265, libvpx-vp9, libaom-av1, libmp3lame, libopus, libvorbis, libtheora, native AAC, AC3/E-AC-3, TrueHD, DNxHD, MJPEG, JPEG2000, and more.