Skip to main content

FileFit — File Converter & Compressor

Convert documents between the formats upload portals ask for, and shrink them under a size limit (for example 2 MB or 200 KB), all offline on your own PC.

From To
JPG, JPEG, PNG, WEBP, BMP, GIF, TIFF, HEIC (iPhone photos) JPG, JPEG, PNG, WEBP, PDF, DOCX
PDF JPG / JPEG / PNG / WEBP (one picture per page), DOCX (editable), PDF (compressed)
DOCX PDF, pictures, DOCX (compressed)

Extra options: size limit with one-click presets (100 KB to 5 MB), maximum width and height in pixels, combine many files into one PDF (drag to reorder), and save next to the original or into a chosen folder. Originals are never changed.

Install

  • Windows: download FileFit-Setup.exe from the Releases page or the website and run it.
  • Android: download FileFit-Android.apk from the Releases page or the website, tap it and choose Install (Google Play later).
  • Linux: pipx install filefit, then filefit-cli --install-shortcut to add it to your app menu.
  • Command line (any OS): filefit-cli photo.jpg --to pdf --max-size 2MB

DOCX → PDF / JPG needs Microsoft Word or the free LibreOffice installed. Every other conversion works with nothing else installed.

Releases are built automatically by GitHub Actions; see PUBLISHING.md. To build the single-file exe yourself on Windows, double-click build_windows.bat.

How size limits work

  • JPG / WEBP: finds the highest quality that fits, and only shrinks the pixel size if quality alone is not enough.
  • PNG: reduces colours, then pixel size. For photos, JPG reaches small sizes with far better quality.
  • PDF: first recompresses the pictures inside the PDF (text stays selectable). If that is still too big, pages are turned into compressed images; the result says so.
  • DOCX: recompresses the pictures inside the document.

If a file cannot reach the limit, the result shows ⚠ with its final size.

Contact

Made by Dipanjan Banerjee. Questions, bugs or ideas: dipanjanbanerjee20@gmail.com or open an issue.

Project layout

main.py                     starts the app
filefit/core/               conversion + compression engine (no GUI code)
filefit/gui/                PySide6 (Qt) desktop window and styling
tests/                      pytest suite for the engine
filefit/cli.py              command line tool (filefit-cli)
FileFit.spec                PyInstaller recipe for the .exe
installer/FileFit.iss       Windows installer (Inno Setup)
site/                       download website (GitHub Pages)
.github/workflows/          automatic builds, releases, website
build_windows.bat           local one-click Windows build

Run the tests: pip install -r requirements-dev.txt then pytest -q tests.

Android app

mobile/ holds the phone app: a Flet (Python + Flutter) screen on top of the same filefit/core engine, with a welcome tour, format and size-limit chips, and Share / Save buttons for the results. GitHub Actions builds FileFit-Android.apk with flet build apk.

Try it on a computer: pip install "flet[all]==1.0.5", then python mobile/main.py. Turning DOCX into PDF or pictures is not available on the phone (it needs Word or LibreOffice).

Fonts: Outfit and DM Sans, SIL Open Font License (see mobile/assets/fonts/).

Metadata

Release files for filefit 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for filefit 1.3.0
File Size Uploaded Provenance
filefit-1.3.0.tar.gz 69.5 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for filefit 1.3.0
File Interpreter ABI Platform
filefit-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 138.3 kB

Release files / filefit-1.3.0.tar.gz

Download URL filefit-1.3.0.tar.gz
Size 69.5 kB
Tags Source
SHA-256 checksum
How to use checksums
29315ae28bfa4b828cc910036459d05be3253fefa398dfe0cc6b6ae2c57e368f
BLAKE2b-256 checksum
How to use checksums
dad5b189a6d20d8405107c51f680c1f650c4fdfe9f4cb12ad2a5ce6d594b0446
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / filefit-1.3.0-py3-none-any.whl

Download URL filefit-1.3.0-py3-none-any.whl
Size 68.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a5b739704452d1c72dace7f6f32778bf9b292f079ffe32047c6fc8a7bfa887cc
BLAKE2b-256 checksum
How to use checksums
0df11633da083bb3b798c3cf46643d0e64521b5cbed018c9c737ce3bd8e9ff04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for filefit 1.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for filefit-1.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page