A cross-platform GUI app that converts files between many formats — and downloads videos/audio/playlists. Conversions run 100% offline.
Built with Python + PySide6. It orchestrates proven conversion engines already installed on your system:
| Engine | Handles |
|---|---|
| ffmpeg | images (png/jpg/webp/avif/bmp/tiff), audio (mp3/flac/wav/ogg/m4a/opus/wma), video (mp4/mkv/webm/mov/avi/gif, audio extraction) |
Calibre (ebook-convert) |
e-books: azw3/azw/kfx/mobi/epub/fb2/cbz <-> pdf/epub/azw3/mobi/txt/docx/rtf... |
| LibreOffice (headless) | office docs: docx/odt/xlsx/pptx/odp/csv/rtf/txt/html/pdf |
Highlights: drag & drop batch queue with per-file progress, 16 famous color themes with auto-tinted vector icons everywhere, playlist downloads, one-click yt-dlp updates, activity log.
Converter - batch queue with per-file targets and status badges (Catppuccin Mocha)
Downloader - yt-dlp powered, with speed and ETA (Nord)
Logs - timestamped activity trail (Gruvbox Dark)
All 16 themes, live-switchable:
Linux/macOS:
./install.shThis single command:
- Installs any missing conversion engines via your package manager (prompts for your sudo password only when something is missing)
- Creates the Python venv and installs PySide6
- Adds the
anyconvcommand to~/.local/bin - Adds "AnyConv" to your desktop applications menu
Options:
./install.sh --binary— additionally build a standalone executable indist/ANYCONV_SKIP_ENGINES=1 ./install.sh— skip step 1 (no sudo)- Uninstall anytime:
./uninstall.sh
Windows: run install.bat (it prints winget commands for missing engines and
creates a Start Menu shortcut).
-
Python 3.10+ required.
-
Install the engines you need (all optional; the app shows which are missing):
- ffmpeg
- Arch:
sudo pacman -S ffmpeg - Debian/Ubuntu:
sudo apt install ffmpeg - Windows:
winget install Gyan.FFmpeg(or choco/scoop) - macOS:
brew install ffmpeg
- Arch:
- Calibre (e-books)
- Arch:
sudo pacman -S calibre - Debian/Ubuntu:
sudo apt install calibre - Windows/macOS: installer from https://calibre-ebook.com/download
- Arch:
- LibreOffice
- Arch:
sudo pacman -S libreoffice-still - Debian/Ubuntu:
sudo apt install libreoffice - Windows/macOS: installer from https://libreoffice.org
- Arch:
- ffmpeg
-
Run:
./run.sh # creates .venv, installs PySide6, launchesor manually:
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/python main.py- Drag & drop files (or "Add files...")
- Pick a target format per file in the dropdown
- Choose output folder ("Save next to source" by default)
- Click Convert. Jobs run one after another with progress; Cancel stops the queue.
- Example: drop an
.azw3book, choose "PDF document", convert.
Downloads videos, audio or whole playlists via yt-dlp:
- Paste a URL, pick a format: Best video+audio, video capped at 2160p / 1440p / 1080p / 720p / 480p / 360p, or audio-only MP3 / M4A / Opus (needs ffmpeg)
- Tick Whole playlist for multi-item URLs; untick to grab only the linked video
- Live progress with speed and ETA; Cancel stops the current job
This is the one online feature — conversion stays 100% offline.
A timestamped trail of engine detection, every conversion result, download activity and yt-dlp updates. Handy for reporting issues.
Click Update yt-dlp in the Downloader tab. The app downloads the newest release into its per-user data folder and prefers it over any system-wide yt-dlp, so site-breaking changes are always one click away from being fixed:
- Linux:
~/.local/share/anyconv/bin/ - macOS:
~/Library/Application Support/AnyConv/bin/ - Windows:
%APPDATA%\AnyConv\bin\
(Audio extraction additionally needs ffmpeg installed.)
./update.sh # Linux/macOS: git pull + refresh venv dependencies
update.bat # Windows equivalentRequires the app to be a git clone of this repository (which it is, if you followed the manual setup). Your settings (theme) survive updates.
Pick a color scheme from the dropdown (top right). The choice is saved and restored on next launch; switching applies instantly.
Catppuccin (Mocha, Macchiato, Frappe, Latte), Gruvbox (Dark, Light), Nord, Dracula, Tokyo Night, Solarized (Dark, Light), Rosé Pine (Main, Dawn), One Dark, Everforest Dark, GitHub Dark.
To add your own, append a palette to THEMES in anyconv/themes.py —
everything else (stylesheet generation, persistence, UI) picks it up
automatically.
.venv/bin/pip install pyinstaller
.venv/bin/pyinstaller --windowed --name AnyConv main.pyNote: this bundles the GUI only; ffmpeg/Calibre/LibreOffice stay as system dependencies (they are free to install on every platform).
main.py entry point (--selftest for headless smoke test)
anyconv/formats.py extension -> target formats catalog
anyconv/backends.py engine detection + command building + progress parsing
anyconv/downloader.py yt-dlp integration: locate, command builder, self-update
anyconv/themes.py color schemes (Catppuccin, Gruvbox, Nord...) + icon rendering
anyconv/worker.py QThread jobs (convert / download / yt-dlp update)
anyconv/ui.py Qt window: tabs, drag & drop, queue, logs
install.sh|bat first-time installer (engines + venv + menu entry)
run.sh quick launcher (creates venv on demand)
update.sh|bat self-update from this git repo
uninstall.sh remove launcher/menu entries
MIT — free to use, modify and share.



