Privacy Policy for Pixel Perfect
Effective Date: March 21, 2026
Last Updated: March 21, 2026
This Privacy Policy explains how Pixel Perfect (the "App") handles information when you use this Android application. Pixel Perfect is a system-wide UI inspection overlay for developers, designers, and testers. It displays grids, rulers, layout guides, window information, and a screen magnifier.
This policy describes the current Android implementation. It does not change the privacy practices of Google, Firebase, Google Play, GitHub, an email provider, or any other service you open from the App.
1. Developer and privacy contact
Developer / data controller: Samuel Jarosiński
Privacy and support email: samueljarosinski@gmail.com
App: Pixel Perfect
Where applicable law uses the terms "controller" or "business," the developer identified above is the controller or business for information handled by the developer. Google generally acts as a service provider or processor for Firebase customer data, subject to the applicable Google and Firebase terms.
2. Summary
The App does not require an account and has no sign-in, user profile, or developer-operated application backend.
Screen content used by the magnifier is processed in volatile memory on the device. The App does not record, save, upload, or send that screen content to the developer or to Firebase.
App settings and inspection configurations are stored in Android app-private storage and are not uploaded by the App.
Configured release builds include Firebase Analytics, Firebase Crashlytics, and Firebase Performance Monitoring. When a real Firebase App ID is present, the App enables those SDKs at startup, and they can automatically transmit usage, crash, performance, device, network, and SDK identifier data.
The App contains no advertising SDK, in-app purchase or billing SDK, authentication SDK, or custom API client.
The current implementation does not provide a separate in-app consent toggle for Firebase Analytics, Crashlytics, or Performance Monitoring. This policy is the required notice of that processing, but it is not a substitute for obtaining consent or providing an opt-out where applicable law requires one.
3. Information handled by the App
3.1 Automatically collected and transmitted information
When Firebase is configured for the build, the following information can be collected automatically without a separate user action:
App interactions and usage
Examples: Screen views; navigation; taps and clicks; overlay start and stop; feature toggles; Quick Settings tile events; screen-capture permission result; tip impressions; event categories and names; configuration values such as enabled states, feature names, colors, sizes, opacity, ruler positions, and durations.
Purpose: Understand feature use, improve the App, and diagnose reliability and usability issues.
Recipient: Firebase Analytics and Firebase Crashlytics.
Crash logs and exception diagnostics
Examples: Crash traces, stack traces, non-fatal exceptions, exception types and messages, developer-generated event logs, custom diagnostic properties, and app and device state associated with a crash.
Purpose: Detect, investigate, and fix crashes and other failures.
Recipient: Firebase Crashlytics.
Performance diagnostics
Examples: App startup and runtime performance information, performance traces, timing and network-performance information where applicable, and technical information needed to interpret those measurements.
Purpose: Monitor and improve stability and performance.
Recipient: Firebase Performance Monitoring.
SDK and device identifiers
Examples: Firebase App Instance ID, Firebase Installation ID, Crashlytics Installation UUID, Firebase session identifiers, and, where available, Android Advertising ID or a related advertising identifier.
Purpose: Distinguish installations and sessions, measure aggregate usage, associate diagnostics with an installation, and prevent duplicate reports.
Recipient: Firebase and Google measurement components.
Device, app, and network information
Examples: Device model and manufacturer, operating system and API version, app version, screen orientation and other configuration information, available memory or storage information, locale or similar technical context, network metadata, and the IP address visible to Google when data is transmitted.
Purpose: Provide Firebase services, understand technical compatibility, secure the services, map performance events to a general country or region, and diagnose problems.
Recipient: Firebase and Google measurement components.
The App does not directly read an Android ID, IMEI, serial number, MAC address, GPS location, contacts, or precise location. The App does not use the Advertising ID for advertising. The merged release manifest includes Google advertising-ID and Ad Services permissions because they are brought in by Google/Firebase components; those components may use an available advertising identifier for measurement. Google may also derive a general location from a network IP address. The App itself does not request a location permission or display a location-based feature.
The App's local Device Information screen reads technical values such as manufacturer, model, board codename, memory, storage, Android version, API level, display dimensions, resolution, density, refresh rate, HDR support, rounded corners, supported postures, window size classes, and font scale. The App sends only the literal DeviceInfo screen name for that screen; it does not send those displayed values as event parameters. Firebase may separately collect its own technical device context as described above.
3.2 Information handled locally at your request
The following information is used for App functionality and is not sent to the developer or Firebase by the App:
Screen content: If you grant Android MediaProjection permission and turn on the magnifier, the App receives the visible display as in-memory bitmap frames so it can show a magnified area and inspect a pixel. Frames are not written to a file, uploaded, or retained after capture stops or the overlay is destroyed.
Inspection configuration: Android DataStore Preferences stores the overlay settings, grid, rulers, layout guide, window guide, magnifier options, colors, sizes, positions, opacity, selected formats, and dismissed tips. These values remain in app-private storage until changed, reset, cleared, or removed with the App. The source contains no Room, SQLite, SharedPreferences, or app-specific file database for these values.
Device and display information: The values shown in the Device Information screen are computed and displayed locally.
Clipboard color: A long press on the magnifier's color value places the selected color string in the Android system clipboard. The App does not read the clipboard or transmit that value. Android and other apps may apply their own clipboard behavior and privacy rules.
The App has no free-form user profile, document upload, photo library, camera, microphone, contacts, messaging, health, payment, or authentication feature. It does not collect user files, documents, audio, music, or user-entered credentials.
3.3 Information you voluntarily send to us
The About screen can open a mailto: message addressed to samueljarosinski@gmail.com. If you choose to send a message, we receive the email address, message, attachments, and other information that you choose to include. The App does not send a message automatically. We use this information to respond to support requests, feedback, and bug reports.
4. Permissions and system access
The App's main manifest explicitly declares:
SYSTEM_ALERT_WINDOW, a special Android permission used to draw the inspection overlay over other apps.
FOREGROUND_SERVICE, FOREGROUND_SERVICE_SPECIAL_USE, and FOREGROUND_SERVICE_MEDIA_PROJECTION, used by the visible foreground service that keeps the overlay running and, when requested, captures the display.
The release merged manifest also contains permissions supplied by Firebase, Google Play services, and AndroidX dependencies:
INTERNET and ACCESS_NETWORK_STATE for Firebase/Google telemetry and network-state checks;
WAKE_LOCK for SDK and service operation;
com.google.android.gms.permission.AD_ID, android.permission.ACCESS_ADSERVICES_AD_ID, and android.permission.ACCESS_ADSERVICES_ATTRIBUTION for Google measurement components where supported; and
com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE for installation attribution components.
The merged manifest also contains an app-private signature permission used for non-exported dynamic receivers. It is not user-granted and is not used to collect information. The Quick Settings tile is protected by Android's BIND_QUICK_SETTINGS_TILE component permission.
The App does not declare CAMERA, RECORD_AUDIO, location, contacts, SMS, storage/media, health, Bluetooth, or POST_NOTIFICATIONS permissions. Screen capture is controlled by Android's separate MediaProjection confirmation dialog, and overlay access is controlled by Android's special-access settings. The foreground service displays an ongoing, low-priority notification while it is active.
5. Purposes and legal bases
Where the GDPR or a similar law applies, we use the following legal bases:
Local overlay, magnifier, clipboard, and configuration processing
Purpose: Provide the feature you request and remember your choices.
Legal basis: Performance of your request or service. The Android MediaProjection system confirmation is required before screen capture.
Firebase Analytics usage events and technical context
Purpose: Measure aggregate feature use and improve the App.
Legal basis: Our legitimate interests in improving and securing the App where permitted; consent where applicable law requires consent for analytics or identifiers.
Firebase Crashlytics reports and logs
Purpose: Diagnose crashes, non-fatal failures, and reliability problems.
Legal basis: Our legitimate interests in maintaining a safe and reliable App where permitted; consent where applicable law requires it.
Firebase Performance measurements
Purpose: Diagnose and improve performance and stability.
Legal basis: Our legitimate interests in maintaining and improving the App where permitted; consent where applicable law requires it.
Support correspondence
Purpose: Respond to a message, investigate a report, and keep appropriate support records.
Legal basis: Your request and our legitimate interest in providing support.
Legal and compliance requests
Purpose: Meet legal obligations and protect rights, safety, and security.
Legal basis: Compliance with a legal obligation or legitimate interests, as applicable.
If consent is the required legal basis, you may withdraw it at any time. The App currently has no in-app Firebase consent control. You can contact us to withdraw consent or object, and you can uninstall the App or clear its data to stop the App from creating new local records. Clearing or uninstalling does not automatically erase information already held by Google; use the deletion process in Section 8.
We do not use App data to make decisions about you based solely on automated processing, and the App does not create advertising profiles.
6. Third-party services and sharing
Firebase and Google services
The only runtime services in the build that receive App telemetry are Google's Firebase services and their Google Play services transport components:
Firebase Analytics
Data received and purpose: App interaction events and parameters, screen names, user properties such as dark mode, orientation, and form factor, and Firebase/Google technical identifiers and device context; used for aggregate product analytics.
Privacy information: Firebase Privacy and Security and Google Privacy Policy.
Firebase Crashlytics
Data received and purpose: Crash traces, non-fatal exceptions, event logs, custom diagnostic keys, installation identifiers, and device/app context; used to diagnose failures.
Privacy information: Firebase Privacy and Security.
Firebase Performance Monitoring
Data received and purpose: Performance measurements, Firebase installation identifiers, IP-associated event information, and device/app context; used to monitor performance.
Privacy information: Firebase Privacy and Security.
Firebase/Google transport, Installations, Sessions, measurement, and install-referrer components
Data received and purpose: Technical service data and identifiers needed to deliver, attribute, secure, and deduplicate Firebase telemetry.
Privacy information: Firebase Privacy and Security and Google Privacy Policy.
Google states that Firebase services use HTTPS for data in transit and may process data on global Google infrastructure. Google generally acts as a processor or service provider for Firebase customer data, while Firebase service data may be handled under Google's own privacy policy and applicable terms. See the Firebase Data Processing and Security Terms.
Other runtime libraries in the build, including AndroidX/Jetpack Compose, DataStore, Kotlin serialization and coroutines, Reorderable, AboutLibraries, and Timber, provide local UI, storage, logging, or build functionality. No code path sends App data to the operators of those libraries, and they are not separate data recipients in this App. The Google services, Firebase, Crashlytics, and Performance Gradle plugins and the Play Policy Insights lint dependency are build-time tooling, not user-facing data collection services.
External apps and websites
Only when you choose an action, the App can open:
Google Play to rate the App or share its store URL;
GitHub for the source code or this policy;
Google support pages or a third-party help page; and
an email composer for feedback.
Those services receive information according to their own practices. See Google's Privacy Policy and GitHub's Privacy Statement. The App has no custom web API, hard-coded application backend, or upload endpoint. Firebase endpoints are managed by Google and are not exposed as App configuration.
Sale, rental, and advertising
We do not sell, rent, or exchange personal information. We do not share personal information for cross-context behavioral advertising, and the App has no advertising SDK or advertising feature. Firebase telemetry is sent to Google for the analytics, crash-reporting, performance, and service purposes described in this policy. We may disclose information when required by law or to protect the App, users, or the public.
7. Retention
App-private settings: DataStore Preferences remain on the device until you change or reset them, clear the App's storage, or uninstall the App. Restoring defaults changes the values but does not itself uninstall the App.
Screen frames: Screen-capture bitmap frames are held only while needed for the active magnifier and are released when capture or the overlay stops.
Clipboard: The Android system controls how long a copied color remains in the clipboard. The App does not control or delete that system value.
Firebase Crashlytics: Google's Firebase documentation states that crash stack traces, extracted crash data, and associated identifiers are kept for 90 days before the removal process starts.
Firebase Performance Monitoring: Google's Firebase documentation states that IP-associated performance events are kept for 30 days and installation-associated and de-identified performance data for 60 days before the removal process starts.
Firebase Analytics: The App code does not set a retention period. The Firebase project's Google Analytics retention setting controls user-level and event-level retention. Google's documented standard-property options include 2 or 14 months; aggregated reports are not removed by that setting. The currently configured Firebase Console value cannot be inferred from the Android source code.
Support messages: We retain correspondence only for as long as reasonably necessary to respond, maintain an appropriate support record, resolve disputes, and meet legal obligations. The email provider may retain copies under its own policies.
We do not operate a remote account database or retain screen recordings, photos, documents, or magnifier frames on a server.
8. Access, deletion, and other user rights
How to delete local data
On Android, open Settings > Apps > Pixel Perfect > Storage & cache > Clear storage (the labels can vary by Android version). This removes the App's local DataStore data. Uninstalling Pixel Perfect also removes its app-private data. You can revoke overlay access in Android's Display over other apps settings and stop screen capture by stopping the magnifier or revoking the Android screen-capture permission.
How to request deletion or exercise rights
Email samueljarosinski@gmail.com with the subject Privacy Request. You may request, where applicable:
confirmation of whether we process your personal data and access to it;
correction of inaccurate data;
export or portability of data you provided;
deletion or erasure;
restriction of processing;
objection to processing based on legitimate interests;
withdrawal of consent; and
information about the categories, purposes, recipients, and retention of your data.
For Firebase data, provide enough information to identify the relevant records, such as approximate dates, App version, device model, or a Firebase installation identifier if you have it. Do not send screen captures, passwords, payment details, or other unnecessary sensitive information. We will use available Firebase deletion and privacy controls or explain when a request must be directed to Google. We cannot delete data that is held only by an independent third-party service; in that case, we will direct you to that service's request process.
We may need to verify a request to protect against unauthorized access. We will respond within the period required by applicable law. You may also lodge a complaint with the data protection authority in the country where you live, work, or believe an infringement occurred.
California rights
If the California Consumer Privacy Act, as amended by the California Privacy Rights Act, applies to you, you may have the right to know or access the categories and specific pieces of personal information collected, the purposes and categories of recipients, correct inaccurate information, delete personal information, and opt out of sale or sharing for cross-context behavioral advertising. We do not sell personal information or share it for that advertising purpose. We do not knowingly collect sensitive personal information for advertising, and we will not discriminate against you for exercising applicable rights. Submit a request using the email address above; an authorized agent may submit a request with proof of authorization. We do not charge a fee unless permitted by law.
9. Security
Firebase telemetry is transmitted using Firebase's HTTPS/TLS transport. The App does not define a separate network protocol or custom API endpoint. Android DataStore files are stored in app-private storage protected by the Android application sandbox. The App does not add a separate encryption layer for its local settings, so device-level encryption and the security of the user's device remain important. Screen frames are kept in memory rather than written to storage. Firebase states that Firebase Crashlytics and Performance Monitoring also use encryption at rest within their services.
No storage or transmission method is completely secure. Keep Android updated, use device security features, and avoid enabling the magnifier over content you do not want displayed in an overlay.
10. Children's privacy
Pixel Perfect is intended for a general audience, particularly developers, designers, and software testers. It is not directed to children under 13 in the United States or to children under the applicable digital age of consent in other regions. We do not knowingly collect personal information from children under those ages.
If we learn that a child has provided personal information, a parent or guardian may contact us at samueljarosinski@gmail.com and request deletion. We will take reasonable steps to investigate and delete information that we are required to remove.
11. International processing
Firebase and Google may process information on global infrastructure, which can involve transfers outside your country or the European Economic Area. Google describes its applicable data-protection terms and transfer safeguards in its Firebase Privacy and Security information, Firebase Data Processing and Security Terms, and Google Privacy Policy. We will use available lawful safeguards for transfers where required by applicable law.
12. Google Play Data Safety summary
For the current configured release, the Google Play Data Safety disclosure should reflect these categories:
App activity: App interactions and usage events collected automatically for analytics and diagnostics.
App info and performance: Crash logs, non-fatal exception diagnostics, and performance information collected automatically.
Device or other IDs: Firebase installation and app-instance identifiers, Crashlytics identifiers, and an available Android Advertising ID or related identifier collected automatically by Google/Firebase components for measurement and diagnostics.
The App does not collect screen content, user files, audio, contacts, location, or credentials for transmission. Data sent to Firebase is encrypted in transit and is not used by the developer for sale, rental, or cross-context behavioral advertising. The Google Play Console disclosure must be kept consistent with the actual release configuration and any future SDK changes.
13. Changes to this policy
We may update this policy when the App, its SDKs, or applicable legal requirements change. We will post the revised policy at the URL linked from the App's About screen, update the Effective Date and Last Updated dates, and, where practicable and legally required, provide additional notice through an App release note, the Google Play listing, or an in-App notice. The App does not maintain an email notification list, so users should review this page periodically.