iOS developer & learning

Privacy manifest generator

Tick the data your app collects and the required-reason APIs it uses, and the page writes a valid PrivacyInfo.xcprivacy property list you can download and add to Xcode.

Tracking
Data your app collects
Required-reason APIs your code or SDKs use

Runs in your browser. Nothing you type or open is uploaded. Free to use, no account. More developer tools

How to use it

  1. Say whether your app tracks users and list any tracking domains.
  2. Tick each data type you collect, with whether it is linked to the user, used for tracking, and why.
  3. Tick the required-reason APIs and their reasons, then download the file and add it to your Xcode target.

What goes in a privacy manifest

Since 2024, Apple asks apps and third-party SDKs to describe their data use in a PrivacyInfo.xcprivacy file. It holds four keys: NSPrivacyTracking, NSPrivacyTrackingDomains, NSPrivacyCollectedDataTypes and NSPrivacyAccessedAPITypes. Xcode combines the manifests of your app and its SDKs into a privacy report that should match your App Store privacy label.

Required-reason APIs are system calls that could be used to fingerprint a device: file timestamps, system boot time, disk space, active keyboards and UserDefaults. For each category you use, you declare one or more approved reason codes such as CA92.1 for UserDefaults access within your own app. The list on this page shows every approved code with what it allows.

Private by design

Privacy

Everything runs in this page and stays on your device. The manifest is built inside this page from what you tick.

This page also shows Google ads, which can use cookies. Privacy and cookies explains how.

Questions

Where do I put PrivacyInfo.xcprivacy?

Add it to your app target in Xcode with File > New > File > App Privacy, or drag the downloaded file into the project and tick your target. SDKs ship it inside their framework or package.

Which reason should I pick for UserDefaults?

CA92.1 covers reading and writing data only your app uses. Choose 1C8F.1 for an App Group shared by your apps, or C56D.1 if you are an SDK wrapping UserDefaults for the app.

Do I need a manifest if I collect no data?

Yes, if you use any required-reason API, which most apps do through UserDefaults or file dates. Declare the APIs with their reasons and leave the data types empty.

Can I edit an existing manifest?

Yes. Press Open an existing file to load it, change the ticks, and download it again.

From the same developer

  • Catalog - UI screenshot 1
  • Catalog - UI screenshot 2
  • Catalog - UI screenshot 3