This project is currently not in a functional state. Please wait a few more days, I am actively working on it 🙏
PS: I am writing an exam on Monday, Tuesday and Wednesday. Life ain't easy rn.
[!CAUTION]
This README describes the current 3.9 source code and the planned first beta.
The downloadable 3.8 release is an older GPL release. Its app, license,
screenshots, install process, and supported platforms may be different. If
you need information about 3.8, use the documentation from its release tag.
I'm actively working on this rewrite. Some features and builds can still fail;
please report problems with the commit ID or beta version you used.
Porn Fetch - Source-Available Adult Media Downloader
Download (v3.8)
Screenshots
Supported Websites
FAQ
Changelog
Development Status
The 3.9 rewrite
This branch is where I am building the next version of Porn Fetch. It has a PySide6 desktop app, a Qt-free CLI, and a different licensing system from 3.8. The first beta is for finding problems, and I will keep working on them as quickly as I can. See the development status and the installation guide before trying it.
About the License
The 3.9 source is under the Porn Fetch Source-Available License 1.0. Earlier GPL releases keep their GPL rights. The source license and a premium feature credential are separate things.
The 3.9 client now requires a signed license on the commercial policy. It includes one calendar year of updates from first activation and permanent use of builds released within that entitlement, on up to ten installations. First activation requires a connection; subsequent offline use is limited to seven days after successful validation. Older beta credentials are rejected explicitly.
Payment deployment is still sandboxed as of 6 October 2026; Patreon is disabled. Do not assume this client change enables real payments. See the licensing architecture and release requirements.
#FreeHongKong
[!WARNING]
Porn Fetch is NOT associated with the websites. Porn Fetch is AGAINST the Terms of Services of EVERY website! Usage is on YOUR risk.
[!IMPORTANT]
Porn Fetch may get flagged by your antivirus software. See HERE for an explanation why this is.
If your antivirus flags a beta build, check the download source and report the
detection before making changes to your security settings.
🚀 Quick Links
- Features
- Installation & Building
- Donations
- Supported Websites
- Developer Guide
- Qt installer work
- Credits
- License
🌟 Features
- Cross-platform
- Downloading Videos
- Downloading Playlists
- Downloading whole model / channel accounts
- Multithreaded downloading
- Automatic resuming
- Installer updates for desktop builds and signed self-updates for standalone CLI builds
- Custom template for filenames based on video metadata
- Dark mode and CLI support
- No ads or mandatory logins
- Multiple supported websites
- modern looking user interface
- Proxy support
- Model Batch download with database updating (CLI only)
- A lot of available settings
- In-App speed limit
- Automatic file tagging (metadata)
- Automatic conversion from MPEG-TS to mp4 (within seconds)
- Build scripts for supported desktop and CLI targets
- Independent Open-Source Server
- Source-available application, made with ❤️ in 🇩🇪
📦 Installation & Building from Source
There are three ways to get Porn Fetch running:
- Pre-built Binaries & Installers (fastest)
- One-Liner Install Scripts (automatic build)
- Building from Source (recommended for development)
[!TIP]
For the complete multi-platform guide with system package instructions and troubleshooting, see the Installation & Build Guide.
1. Pre-built Binaries & Installers
Grab the latest release for your platform from GitHub Releases:- Qt Installer Framework (
*_Setupinstallers):
maintenancetool for repository-based in-app updates.
- Windows: PornFetch_windows_GUI_x64_Setup.exe
- Linux: PornFetch_linux_GUI_x64_Setup.run (run chmod +x before launching)
- macOS: PornFetch_macos_GUI_Universal_Setup.dmg
- Standalone Portable Bundles (
.zip/.dmg):
pocketbase (or pocketbase.exe) stays right next to the app binary—Porn Fetch needs it for download tracking and queue management.
- Standalone Headless CLI:
PornFetch_linux_CLI_x64, PornFetch_windows_CLI_x64.exe, etc.) with built-in cryptographically verified self-updating:
./PornFetch_linux_CLI_x64 self-update --check
./PornFetch_linux_CLI_x64 self-update
2. One-Liner Install Scripts
To automatically install dependencies, clone, and build the latest code on your machine:- Linux & macOS:
curl -sSL https://raw.githubusercontent.com/EchterAlsFake/Porn_Fetch/master/scripts/install.sh | bash
- Windows (PowerShell as Administrator):
irm https://raw.githubusercontent.com/EchterAlsFake/Porn_Fetch/master/scripts/install_windows.ps1 | iex
3. Building & Running from Source
The source tree targets Python 3.14 and usesuv for dependency management.
# 1. Clone the repository
git clone https://github.com/EchterAlsFake/Porn_Fetch.git
cd Porn_Fetch
2. Sync dependencies (uv automatically provisions Python 3.14)
uv sync --extra gui --group dev
3. Fetch PocketBase (required for database and queue persistence)
uv run python scripts/fetch_pocketbase.py
4. Patch QtAsyncio (required for the GUI under Python 3.14)
uv run python scripts/patch_qtasyncio.py .venv
5. Launch the application!
uv run main.py # Desktop GUI
uv run Porn_Fetch_CLI.py # Headless CLI
Headless / Termux note: If you only need the CLI (e.g. on headless servers or in Android Termux), you don't need any Qt dependencies or the QtAsyncio patch. Just runuv sync(orpip install -e .on Termux) and executeuv run Porn_Fetch_CLI.py.
4. Compiling Standalone Binaries from Source
To produce distributable single binaries yourself:- CLI binary:
uv run pyinstaller --clean packaging/pyinstaller_cli.spec
- GUI executable:
uv run pyside6-deploy -c packaging/pysidedeploy_linux.spec # Linux
uv run pyside6-deploy -c packaging/pysidedeploy_windows.spec # Windows
uv run pyside6-deploy -c packaging/pysidedeploy_macos.spec # macOS
Premium license
A valid entitlement enables these features:
- 1080+ downloads
- parallel downloads
General Information
[!NOTE]
Targets in the current build workflow. A target in the workflow does not
mean its first beta artifact has passed manual testing.
| Platform | App | Architectures | |----------------------------|------------------|-------------------------------------------------| | Windows | GUI | x64 | | Windows | CLI | x64, ARM64 | | Linux (X11 / Wayland) | GUI | x64, ARM64 | | Linux (X11 / Wayland) | CLI | x64, ARM64 | | macOS | GUI | x86_64, ARM64 (Universal build) | | Android | CLI from source | Termux; no beta APK in the desktop build workflow |
Linux 32-bit (x32 artifact) and riscv64 CLI builds are available as experimental workflow-dispatch targets. They use native target toolchains and must pass a CI build and smoke test before their artifacts are published. Linux s390x and ppc64le CLI builds are paused because curl-cffi does not support those architectures. Windows ARM64 GUI and Windows x86 CLI builds are paused after build and runtime failures in pipeline #43.
[!NOTE]
Porn Fetch is mainly developed and tested on Arch Linux with Hyprland and Gnome.
[!NOTE]
Older Android and iOS information is in the project history. I have not
included mobile GUI artifacts in the current desktop build workflow.
🌐 Supported Websites
- PornHub.com
- xnxx.com
- Eporner.com
- XVideos.com
- xhamster.com
- spankbang.com
- youporn.com
- beeg.com
- porntrex.com
- xfreehd.com
- redtube.com
- thumbzilla.com
- tube8.com
[!IMPORTANT]
Not all websites support every feature.
Some providers support only direct videos while others also support profiles or collections. Search is intentionally not available.
You can find more information HERE
For Developers
If you want to develop on Porn Fetch and do local changes, contribute code or do whatever, please have a look at the internal code documentation which explains the core structure of the project, as well as the different concepts used here.See: https://github.com/EchterAlsFake/Porn_Fetch/blob/master/docs/FOR_DEVELOPERS.md
🌍 Translating
[!CAUTION]
Translations are still being brought up to date for 3.9. Please check with me
before starting a large translation update.
Currently available in:
- German (3.0)
- English
- Chinese (3.0)
[*]Thanks to: Joshua-auhsoj - French (3.0)
[*]Thanks to: Egsagon - Italian (3.8) Thanks to: FatalPuppet
To contribute a translation, follow this guide.
If a language is marked with a * it means, you can contribute something, and it needs an update!
👏 Credits
- API: PHUB
- GUI: Qt for Python
- Media processing: PyAV / FFmpeg (license depends on the bundled FFmpeg build; see third-party notices)
See Credits and third-party notices
📚 License
Current development snapshots marked with the Porn Fetch Source-Available License 1.0 use that license for application-owned material. Earlier GPL-3.0-or-later copies retain their GPL rights; the historical license text is in LICENSES. Third-party components retain their own terms. See the licensing guide.Copyright (C) 2023–2026 Johannes Habel
Sponsoring / Donations
The payment deployment remains in sandbox mode as of 6 October 2026. The donation links below are separate and optional; they are not needed to use the beta.However, I kindly ask every one of you to donate a small amount of money. If you have Monero (crypto) or PayPal, you can donate me here:
- Paypal:
https://paypal.me/EchterAlsFake(Prefered) - Monero:
42XwGZYbSxpMvhn9eeP4DwMwZV91tQgAm3UQr6Zwb2wzBf5HcuZCHrsVxa4aV2jhP4gLHsWWELxSoNjfnkt4rMfDDwXy9jR - Ko-Fi :
https://ko-fi.com/EchterAlsFake