PDF tools that never leave your phone.
Most free PDF tools online work by uploading your file to a server, processing it, and sending it back. Even when the operator means well, your document has made a round trip through somebody else's disk.
PDF Helper removes that entire category of risk. Every operation happens locally, inside an Android app whose manifest has no INTERNET permission. Android will kill the process if any code ever attempts to open a socket. That is not a policy — it's an enforcement at the OS layer.
The app targets Android 8.0 (API 26) and newer, uses the Storage Access Framework for file access (no storage permissions), and is released under the MIT license with fully public source code.
Get the latest signed APK.
Releases ship as signed APKs, built and published automatically by GitHub Actions. There is no Play Store listing — you download directly, and you can verify the tag-to-binary correspondence in the repo.
Fetching latest release info…
Installing outside the Play Store requires allowing your browser or file manager to install unknown apps. That is normal for any sideloaded APK.
Thirteen tools, one app.
Grouped by what you're trying to do. Every tool is fully offline.
| Category | Tool | Notes |
|---|---|---|
| Organize | Merge | Combine PDFs in any order |
| Organize | Split | Extract a range or every page |
| Organize | Rotate | Per-page 90°/180°/270° |
| Organize | Reorder | Move pages up/down |
| Organize | Remove pages | Tick to delete |
| Convert | Images → PDF | Auto-compressed to keep size small |
| Convert | Text/MD → PDF | Paginated, A4 or Letter |
| Convert | PDF → Images | PNG or JPEG, 1x/2x/3x |
| Edit | Add text & images | Overlay without touching original |
| Edit | Watermark | Text or image, opacity control |
| Edit | Page numbers | Any corner, any format |
| Secure | Password protect | 128-bit standard encryption |
| Secure | Password unlock | Remove a password you know |
Phase 2. An advanced editor that lets you edit existing PDF text in its original font, replace images in place, and mix multiple font styles within a single document. This is a genuinely hard problem in the PDF format — it's on the roadmap and will land as its own release.
The permission it doesn't have.
The privacy guarantee isn't a policy page. It's a line of XML that isn't in the manifest.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!--
No INTERNET permission on purpose.
Every PDF operation runs on-device.
Android will crash the process if any code
attempts to open a network socket.
-->
<application
android:name=".PdfHelperApp"
android:allowBackup="false"
...>
...
</application>
</manifest>
No analytics. No Firebase. No Crashlytics. No Sentry. No "anonymous usage statistics."
No storage permissions. File picking and saving go through Android's Storage Access Framework, so the app only ever sees the specific files you hand it — never the rest of your storage.
No backups. android:allowBackup="false" keeps the app's private data out of Google's cloud backup system.
You can read every line of the implementation on GitHub.
What it's built with.
Language & UI
Kotlin 2.0 · Jetpack Compose · Material 3. Single-activity architecture.
PDF engine
PDFBox-Android for manipulation. Native PdfRenderer for page rasterization.
Build
AGP 8.7 · Gradle 8.11 · JVM 17. Min SDK 26, target SDK 35.
Distribution
GitHub Actions builds and signs releases from v* tags.
How a release gets made.
Local build (for development):
gradle assembleRelease
No Gradle wrapper is committed — CI installs Gradle via gradle/actions/setup-gradle.
Without KEYSTORE_PATH, KEYSTORE_PASSWORD, KEY_ALIAS, and KEY_PASSWORD environment variables, the release APK is unsigned. That's fine for local testing.
Release flow:
- Bump
versionNameinapp/build.gradle.kts(e.g.1.0.0→1.1.0). - Commit and push to
main. No build runs. - Create tag
v1.1.0and push it. - GitHub Actions verifies tag =
versionName, builds the signed APK, publishes a GitHub Release, and updatesweb/data/latest.jsononmain. - The website picks up the new version on next visit.
Frequently asked questions.
How is this really free? What's the catch?
Why isn't it on the Play Store?
Does it work offline?
Can I edit the text inside an existing PDF?
What happens if I open a signed PDF?
Is the source code public?
What data does this website collect?
MIT licensed. One person.
PDF Helper is released under the MIT license. Free to use, modify, and redistribute with attribution.
Made and maintained by Himanta Bhuyan (realximanta).