A file converter that runs entirely on this PC. No accounts, no uploads, no
internet. The web page is served from 127.0.0.1 only, so nothing outside the
machine can reach it, and every conversion is done by tools already installed
locally (ffmpeg, Pillow, MuPDF, pandas, and the Office apps when present).
Double-click run.bat, or:
python fileconverter/server.pyIt opens http://127.0.0.1:8377 in your browser. Drop files, pick a target
format, hit Convert. The result downloads through the browser like any
other file. Temp files live in %TEMP%\localconverter and are deleted after
each conversion.
python fileconverter/cli.py photo.heic --to jpg
python fileconverter/cli.py *.png --to webp --opt quality=80 --out converted
python fileconverter/cli.py report.docx --to pdf
python fileconverter/cli.py --list mp4 # what can mp4 become, and the options
python fileconverter/cli.py --matrix # every source -> targets| Kind | In | Out | Engine |
|---|---|---|---|
| Images | png jpg webp gif bmp tiff ico avif heic heif tga psd dds ppm pcx eps | png jpg webp gif bmp tiff ico avif heic pdf tga ppm pcx | Pillow + pillow-heif |
| Vector | svg | png jpg webp avif bmp tiff pdf | MuPDF |
| Audio | mp3 wav flac aac m4a ogg opus wma aiff ac3 amr ape ... (and any video) | mp3 wav flac aac m4a ogg opus wma aiff ac3 | ffmpeg |
| Video | mp4 mkv mov avi webm flv wmv m4v ts mpg 3gp ogv gif mts vob ... | mp4 mkv mov avi webm flv wmv m4v ts mpg 3gp ogv gif, plus jpg/png frame grab | ffmpeg |
| Subtitles | srt vtt ass ssa sub sbv lrc | srt vtt ass | ffmpeg |
| Text | txt log md html | html pdf md txt docx | markdown, MuPDF Story, html2text |
| Word docs | docx | html md txt (+ pdf without Word) | mammoth |
| Word docs | doc docx rtf odt dot dotx mht | pdf xps docx doc rtf odt html txt md | Microsoft Word (if installed) |
| Spreadsheets | csv tsv xlsx xls xlsm json ndjson parquet feather | csv tsv xlsx json ndjson parquet feather html md | pandas |
| Spreadsheets | xlsx xls xlsm ods csv | pdf xlsx xls ods html | Microsoft Excel (if installed) |
| Presentations | pptx ppt pps ppsx odp | pdf pptx ppt odp png jpg | Microsoft PowerPoint (if installed) |
| txt md html docx svg png jpg webp tiff (per page, zipped when multi-page) | MuPDF + pdf2docx | ||
| E-books | epub xps cbz fb2 mobi | pdf txt html docx png jpg webp tiff | MuPDF |
| Config | json yaml toml | json yaml | PyYAML |
| Archives | zip tar tar.gz tar.bz2 tar.xz | zip tar tar.gz tar.bz2 tar.xz | stdlib |
| Fonts | ttf otf woff woff2 | ttf otf woff (woff2 needs brotli) |
fontTools (if installed) |
The Supported formats & engines panel at the bottom of the page shows exactly what is available on this machine.
Each target exposes a few options behind the gear button: image quality and max size, video quality / resolution / frame rate / trim range, audio bitrate, GIF fps and width, PDF page range and DPI, Excel sheet selection.
Add a Converter(...) in any module under converters/ and register it. A
converter is a function fn(src, dst, options) -> Path. If several converters
cover the same pair, the highest priority wins.
pip install -r fileconverter/requirements.txt
winget install Gyan.FFmpeg