Privacy policy

We don't collect your data.

There's nothing for us to sell, share, lose or hand over, because we never receive it. The rest of this page is the detail behind that sentence.

Last updated

The short version. Ninja compresses, converts and edits videos entirely on your phone. It has no server, no account, no ads and no analytics, and the app itself makes no network requests. If you buy Ninja Pro, Apple or Google handle the payment and Ninja only learns which plan your store account owns. Nothing you open in Ninja — no video, no filename, no usage statistic — is sent to us or to anyone else.

This policy covers the Ninja app — listed as Ninja Video Compressor on Google Play and Ninja Video Compress & Convert on the App Store, package app.ninjacompress.mobile — and this website. Both are published by Aviad Katani (Katani Labs), referred to below as "we".

What Ninja touches on your device

The videos you choose. You pick videos through your phone's own picker (the Android Photo Picker, the iOS photo library picker, a file picker, or by sharing a video into Ninja from another app). Ninja reads the ones you pick, compresses them, and writes the result where you told it to. It never scans your library on its own initiative and never opens a file you didn't choose.

Video frames, briefly. To show a thumbnail, the before/after comparison, or the check that proves a compressed file actually plays, Ninja decodes a few frames in memory on your device. They're drawn on screen and discarded.

What Ninja stores on your device

All of it lives in Ninja's own private app storage — a local database and a private vault folder. No other app can read it, and none of it is transmitted anywhere.

WhatContains
Job historyFor each video you processed: its name and the reference you picked, file size, the settings you used, whether it succeeded, how much space it saved, and timestamps.
Ninja VaultFor originals you chose to stage instead of deleting outright: the original's name and reference, where the staged copy sits in private storage, its size, and how long it's kept. The staged copy is the original video file itself.
PresetsCompression presets you saved, and the names you gave them.
Ninja Pro statusIf you bought Pro: which plan your store account owns, when the store last confirmed it and, for a subscription, when the current period ends — so Pro keeps working offline. No name, email or payment detail; the store never gives those to the app.
Preferences and countersYour settings (default after-compression action, retention, filename template, theme, haptics and so on) and lifetime totals such as space reclaimed and jobs completed.

What leaves your device

Nothing, unless you deliberately send it.

The only way a file leaves Ninja is if you tap Share and pick a destination in your phone's share sheet. Your operating system then hands the file to the app you chose, and that app's privacy policy applies — not ours. Ninja itself doesn't upload, sync or back anything up.

Two honest details behind that promise:

  • On Android, the app doesn't request the INTERNET permission. The operating system therefore blocks all network access by the app, whatever any library inside it might try.
  • Ninja bundles FFmpeg, a general-purpose media library that is capable of reading from network addresses. Ninja only ever hands it local files. On Android the missing INTERNET permission enforces that at the system level; iOS has no equivalent permission, so there the guarantee rests on the app's code, which contains no network address and no HTTP client of any kind.

Your own backups are an exception we don't control. Ninja's private storage is ordinary app data, so if device backup is switched on, your operating system may include it in your backup — Android's backup to your Google account, or an iCloud or computer backup on iOS. That's your backup, under your account, governed by Google's or Apple's terms. We never see it.

Rating Ninja is between you and your app store. Rarely — only right after a compression that saved real space, never in your first day, and at most once every 120 days — Ninja asks your phone to show the App Store's or Google Play's own rating sheet. The store draws it, decides whether to show it at all, and keeps whatever you do there under Apple's or Google's terms; Ninja isn't told whether it appeared or what you chose. To keep to that schedule, Ninja stores two dates on your phone: when you first opened it, and when it last asked.

Ninja Pro purchases

Ninja Pro is sold through Apple's App Store and Google Play. When you buy or restore, the store's own sheet takes over: the store processes the payment and we never see your card, name or email. The store then gives Ninja a signed record of which Pro plan your account owns, which Ninja checks on your phone — there is no Ninja server involved. Apple and Google keep their own records of your purchase under Apple's and Google's privacy policies. We can see aggregate sales reports in our store consoles, as every developer can; those don't identify you to us.

Permissions, and why each is asked for

Ninja asks for as little as possible, and asks in context rather than at launch. You can decline any of these and still compress videos through the system picker.

Android

PermissionWhy
READ_MEDIA_VIDEO, READ_MEDIA_VISUAL_USER_SELECTEDOnly for the in-app video grid and the "biggest videos on your device" list. The system Photo Picker needs no permission at all, and Ninja works without this one.
READ_EXTERNAL_STORAGE (Android 12 and older)The pre-Photo-Picker equivalent of the above.
WRITE_EXTERNAL_STORAGE (Android 10 and older)Saving compressed copies to your gallery, and removing originals you chose to delete, on versions that predate scoped storage.
ACCESS_MEDIA_LOCATIONKeeps a video's location tag when Ninja copies it — the compressed copy, a Vault copy, and "Replace original". Without it Android strips the location from every copy, and your gallery map loses those videos. The location is only ever written back into your own files; it never leaves your phone.
MANAGE_MEDIA (Android 12 and newer, optional)Never requested on its own. If you turn it on in system Settings, moving originals to the Trash or deleting them no longer shows a confirmation dialog for every batch. It changes nothing else: the nine checks still run first, and Ninja works the same without it.
FOREGROUND_SERVICE, …MEDIA_PROCESSING, …DATA_SYNCKeeps a long compression running when you switch apps, instead of losing your progress.
POST_NOTIFICATIONSThe progress notification for that service.
WAKE_LOCKKeeps the device awake during a job, if you turned that setting on.
com.android.vending.BILLINGLets Ninja ask the Google Play app to show the Ninja Pro purchase sheet and read which plan you own. The purchase runs inside the Play Store app, so Ninja still has no Internet permission.
ACCESS_NETWORK_STATEAdded by the video playback library; it can only tell whether a network exists. It can't open a connection — only INTERNET can, and Ninja doesn't have it.

Ninja deliberately never requests MANAGE_EXTERNAL_STORAGE ("all files access"). It has no need for it.

iOS

PermissionWhy
Photo library accessOnly when you save a compressed video into your library, or move an original to Recently Deleted. Compression itself works without it.

The iOS app also carries camera and microphone usage notes, because Apple requires them for capture code inside the FFmpeg library. Ninja never calls that code and never asks for either permission.

Deleting everything

  • Ninja Vault items: open the Vault and delete or restore each staged original.
  • Everything Ninja stores: on Android, Settings → Apps → Ninja Video Compress → Storage → Clear data, or uninstall the app. On iOS, delete the app. Either removes the database, the vault folder and every preference.
  • A Ninja Pro purchase belongs to your store account, not to the app's storage: clearing data or uninstalling doesn't cancel a subscription, and Restore purchases brings Pro back after a reinstall.
  • Videos you saved to your gallery or Files stay where they are. They're your files, in your storage; removing Ninja doesn't touch them.

There's no "request my data" process, because there's no copy of your data anywhere but your phone.

This website

ninjacompress.app sets no cookies, runs no analytics, and loads nothing from any other company — its fonts, images and scripts are all served from this domain. The web server is configured not to keep access logs, so it doesn't record the pages you visit, your IP address or your browser. The site is served from a server in Germany over an encrypted connection.

Two small things the server does with your browser's user-agent (its name and version, which every browser sends to every site): it reads it to show the right store button — the App Store on an iPhone, Google Play on an Android phone — and then forgets it. Nothing is written down.

On iPhone, Safari may show Apple's Smart App Banner for Ninja at the top of the page. That banner is part of Safari: Safari itself asks Apple for the app's name and icon, as it does for any site that names an app. No other page on this site loads anything from Apple.

If you close the language suggestion at the bottom of a page, or pick a language from the menu, your browser remembers that choice in its own storage on your device, so the suggestion doesn't come back. It's never sent to us. Clearing this site's data in your browser removes it.

There is one more exception, and it only applies if you arrive by tapping one of our ads. The next section explains it in full.

Our ads, and the one thing this website sends

We advertise Ninja on Facebook, Instagram and TikTok. When you tap one of those ads, the ad network adds a click ID to the address of the page it opens — fbclid for Meta, ttclid for TikTok — and usually some campaign tags (utm_…).

While you browse from that ad, links between our pages keep those same parameters in the address — nothing is stored on your device to do it. If you then tap a store button, the page sends one message to our own server, which passes it straight on to the network whose ad you tapped. The message contains:

  • the click ID from the ad,
  • your browser's user-agent string (its name and version, which every browser sends to every site),
  • which store button you tapped and which of our pages you were on,
  • the time.

That lets Meta or TikTok count that an ad led to a store visit, and show the ad to people who are more likely to want the app. Meta and TikTok handle the click ID under their own policies (Meta, TikTok).

  • Nothing is sent if you didn't arrive from one of our ads, or if your browser sends Global Privacy Control or Do Not Track.
  • No cookie, no local storage, no tracking pixel or script from any ad network. The site still loads nothing from any other company.
  • Our server keeps nothing. It doesn't store or log the message, and it doesn't pass on your IP address.
  • The campaign tags also travel on the store link itself, so Google Play and the App Store can tell us — as totals, never per person — how many installs came from each campaign.
  • The app is not involved. It still makes no network requests, and on Android it still has no Internet permission.

Children

Ninja is a general-purpose utility. It collects nothing from anyone, of any age.

Changes

If this policy changes, the new version will be published here with a new "last updated" date. Ninja can't tell you in-app, because it never contacts a server.

Contact

Questions about this policy: support@ninjacompress.app.