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.1.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.1.0
File Size Uploaded Provenance
filefit-1.1.0.tar.gz 60.2 kB With provenance Details

Built distribution (wheel)

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

Total release size: 118.5 kB

Release files / filefit-1.1.0.tar.gz

Download URL filefit-1.1.0.tar.gz
Size 60.2 kB
Tags Source
SHA-256 checksum
How to use checksums
d89ce7b3b75079f002a28dbbc321eee5f8846125dd3bf3815572a855e82e0a55
BLAKE2b-256 checksum
How to use checksums
8883c70faaf75a3e1c6092ca45f973ef4d7c1d558019ca847e2fdb947310beaf
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.1.0-py3-none-any.whl

Download URL filefit-1.1.0-py3-none-any.whl
Size 58.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b7de1fbfdd302041b7abc7c243011c7cb3dea786f2a6399727760f1110784f76
BLAKE2b-256 checksum
How to use checksums
afcb0cc2b140da3c0a093caf11d320a39f7e56cadd77bd71a8b2c42fc2f91687
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.1.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.1.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