Open source · MIT licensed

PDF Helper

Free, private, offline PDF tools for Android. Every operation runs on your device — no uploads, no accounts, no tracking. The app doesn't have the internet permission, so it literally cannot phone home.

v1.0.0 min Android 8.0 Kotlin · Compose 0 bytes uploaded

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.

latest release
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
OrganizeMergeCombine PDFs in any order
OrganizeSplitExtract a range or every page
OrganizeRotatePer-page 90°/180°/270°
OrganizeReorderMove pages up/down
OrganizeRemove pagesTick to delete
ConvertImages → PDFAuto-compressed to keep size small
ConvertText/MD → PDFPaginated, A4 or Letter
ConvertPDF → ImagesPNG or JPEG, 1x/2x/3x
EditAdd text & imagesOverlay without touching original
EditWatermarkText or image, opacity control
EditPage numbersAny corner, any format
SecurePassword protect128-bit standard encryption
SecurePassword unlockRemove 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.

app/src/main/AndroidManifest.xml
<?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:

  1. Bump versionName in app/build.gradle.kts (e.g. 1.0.0 → 1.1.0).
  2. Commit and push to main. No build runs.
  3. Create tag v1.1.0 and push it.
  4. GitHub Actions verifies tag = versionName, builds the signed APK, publishes a GitHub Release, and updates web/data/latest.json on main.
  5. The website picks up the new version on next visit.

Frequently asked questions.

How is this really free? What's the catch?
There is no catch. The app runs entirely on your device, so there are no server bills to cover. The source is MIT-licensed. There's no advertising because the app has no network permission to load an ad.
Why isn't it on the Play Store?
Play Store distribution adds a proprietary signing layer and a 30% cut of any paid features. Shipping signed APKs directly from GitHub keeps the whole pipeline open and auditable — you can rebuild the exact APK from the tag.
Does it work offline?
Permanently. The app has no network permission, so every tool works with airplane mode enabled. If it did need a network, it would fail.
Can I edit the text inside an existing PDF?
Phase 1 (current) lets you add new text or images on top of any page. In-place editing of existing text, matching the original font, is Phase 2 — genuinely hard to do well in the PDF format.
What happens if I open a signed PDF?
Any modification — including removing a password — saves the document as new bytes, which invalidates the original digital signature. The app warns you before you apply. Keep the source file if you need the original signature intact.
Is the source code public?
Yes — MIT-licensed on github.com/realximanta/PDF-helper. Fork it, rebrand it, ship your own version.
What data does this website collect?
None. No cookies, no analytics, no fonts beyond what Google Fonts serves over HTTPS, and no external scripts beyond the ones in the HTML source. The page is a static file.

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).