Privacy Policy
How HTML Viewer handles your data.
Last updated: October 27, 2026
1. Who we are
HTML Viewer (package com.nexlab.htmlviewer) is an Android app made by NexLab Studios ("NexLab", "we"), based in Doha, Qatar. We are the controller of the personal data described here. You can reach us at hello@nexlabstudios.com.
2. What stays on your phone
Most of what you do in the app never reaches us. These items are stored on your device only, and we cannot see them:
| Data | Why it exists |
|---|---|
| HTML files, projects, snippets, version history | Your work. We never upload or read it. |
| Browsing history and bookmarks | Recent pages and favourites in the built-in browser. |
| Editor settings and preferences | Theme, font, word wrap and similar choices. |
| FTP/SFTP logins and GitHub tokens | Stored in Android's encrypted storage and sent only to the server or repository you choose. They never come to NexLab. |
| Camera image (QR scanner) | Processed live on the device. Nothing is recorded, saved or sent. |
Uninstalling the app removes all of this.
3. What we receive and why
Some features need a server. Here is everything the app sends to us, and only when you use the feature that needs it.
3.1 Device identifier
The app creates an identifier for your phone. On new installs it is a one-way hash of the Android ID combined with a secret value, so we never receive or store the raw Android ID. Older installs use a random identifier instead. It is sent with AI, account, plan and problem-report requests. We use it to apply usage limits, keep the free AI allowance from being reset by reinstalling, block abuse, and match a purchase to the right install. It is not used for advertising.
3.2 Account (optional)
You can use the app without an account. An account is needed to buy, renew or restore a subscription. If you create one, we store:
- Username you choose. It is permanent and is not shown to other users.
- Account ID, a random number we generate. It is given to Google Play with your purchase so an order can be tied back to your account.
- Recovery code. It is shown to you once and stored by us only as a salted one-way hash. We cannot read it or show it to you again.
- Contact email, only if you add one. It is not verified and we do not send you marketing. It exists so support can find your account if you lose your code.
- The date the account was made and which phone currently holds it.
3.3 Subscription
Payments are handled entirely by Google Play. We never see your card or billing details. To switch on and protect your plan we store the Google Play purchase token, the plan, its expiry and renewal status, the Google Play order number(s), and which phone holds the plan (a plan works on one phone at a time). We check the token with Google to confirm the subscription is genuine and active.
3.4 AI features
When you press an AI button, the prompt and any code you choose to send go over HTTPS to our server, which passes them to our AI provider, Anthropic, to produce the reply. Nothing is sent unless you press the button. We do not store your prompt or the reply. We keep only counts (requests and token totals) to enforce limits and spot abuse. Anthropic processes the content under its own terms and privacy policy. Do not send passwords, API keys or other secrets.
3.5 Problem reports
If you tap Settings, Report a Problem, the app sends the recent error messages it recorded (technical messages and stack traces), the app version, your Android version, and your device identifier. If you have an account, your username can be linked to it so we can help you. Nothing is sent unless you tap.
3.6 Security and abuse prevention
We keep a short rolling log of account and plan events (such as logins, plan moves between phones, and blocks), and brief counters to limit repeated requests. Your IP address is used for about an hour for rate limiting. It can also appear in the rolling event log when a request is rejected as unauthorised or too frequent. It is not stored with your account. If we have to block an install or a subscription for abuse, we keep that block so it is not simply repeated.
3.7 Advertising
The free version shows ads from Google AdMob. AdMob may collect your advertising ID, approximate location from your IP address, device details, and ad interactions. In the EEA, UK and similar regions, Google's consent form asks for your choice first, and you can change it later in Settings, Privacy options. Paid subscribers see no ads. To limit ad personalisation, use Android settings, Google, Ads.
4. How long we keep it
| Data | Kept for |
|---|---|
| Account (username, recovery hash, account ID, email) | Until you delete the account. After deletion the username alone is reserved for 90 days so nobody can impersonate you. |
| Subscription records | While the plan is active and for a limited period afterwards (up to about 13 months from last activity), then removed automatically. |
| Problem reports | 90 days. |
| AI usage counters | About 40 days. |
| Security and event log | A rolling window of recent events only. |
| Device identifier and last-seen time | While the install is in use. You can ask us to delete it. |
| Blocks for abuse | Kept so they continue to apply. |
5. Deleting your account and data
In the app: open Settings, tap the menu on your account card, and choose Delete account. This removes your username, recovery code, account ID and email from our servers.
By request: if you no longer have the app, follow the steps on our account deletion page.
Deleting your account does not cancel a subscription. Cancel it in Google Play. Your files and settings are on your phone, so deleting them or uninstalling removes them.
7. App permissions
| Permission | Used for |
|---|---|
| Internet and network state | Browser, ads, AI, account, FTP and GitHub. |
| Camera | QR scanner only, while it is open. |
| Storage or files | Open and save HTML files you pick. |
You can withdraw any permission in Android settings.
8. Security
Connections to our server use HTTPS. Recovery codes are stored only as salted hashes, and FTP passwords and GitHub tokens sit in Android's encrypted storage. No system is perfectly secure, so keep your recovery code safe and use SFTP rather than plain FTP, which is not encrypted.
9. Your rights
You can ask us to tell you what we hold about you, correct it, delete it, give you a copy, or stop using it for a purpose you object to. Email hello@nexlabstudios.com. If you have an account we will ask you to prove it is yours (for example from the email you added, plus a Google Play order number if you subscribed). We aim to reply within 30 days. We handle personal data in line with Qatar's Personal Data Privacy Protection Law (Law No. 13 of 2016) and, for people in the EEA and UK, the GDPR, relying on the contract for your account and plan, our interest in keeping the service secure, and your consent where Google's ad consent form applies. You can also complain to your local data protection authority.
10. Children
HTML Viewer is not aimed at children under 13 and we do not knowingly collect their data. If you believe a child has given us information, contact us and we will delete it.
11. Changes
If this policy changes in a way that matters, we will update the date above and, for significant changes, tell you in the app or in the update notes.
12. Contact
NexLab Studios, Doha, Qatar
hello@nexlabstudios.com (privacy) · support@nexlabstudios.com (help)