Privacy Policy
for ClipRefine
ClipRefine is a Chrome extension that refines clipboard text locally in your browser. This policy describes exactly what data the extension reads, stores, and transmits, based on the published source code.
Summary: the FREE version makes zero network requests. The PRO version contacts Lemon Squeezy only at the moments described below.
01Data stored locally
All data is stored via chrome.storage.sync — accessible only to the extension
on your Chrome profile, never sent to any server we operate.
| key | contents | purpose |
|---|---|---|
settings | isGlobalActive, showToast, showConsoleLog | Your preferences |
rules | Array of rule objects: name, description, findPattern, replacePattern, isRegex, isActive, targetDomains | Text transformation rules you create |
deviceId | UUID generated locally via crypto.randomUUID() on first use | Stable per-Chrome-profile identifier used to derive your license instance name |
license (PRO only) | licenseKey, instanceId, instanceName, activatedAt, expiresAt, lastValidatedAt, customerId returned by Lemon Squeezy | License state |
If you are signed into Chrome with Sync enabled, this data syncs across your Chrome browsers via Google's infrastructure. We never receive a copy.
02What we never collect or store
- Clipboard contents — all text processing happens inside the copy event handler in
content.js. Rules are applied locally via
String.prototype.replaceAllorRegExp, and the result is written directly back to the clipboard. No clipboard text is sent over the network. - Browsing history — the extension reads
window.location.hostnameonly to match against your rules'targetDomains. The hostname is never stored or transmitted. - Personal information — the extension itself does not collect names, emails, or profile data. PRO checkout is handled separately by Lemon Squeezy (see 04).
- Analytics or telemetry — no analytics SDK, no event reporting, no error reporting service is loaded.
03Network activity
FREE version
Zero outbound requests. The extension does not call fetch,
XMLHttpRequest, or load any external resource. You can verify this in the source.
PRO version
The extension contacts https://api.lemonsqueezy.com/v1 in exactly three situations:
| endpoint | when | request payload |
|---|---|---|
POST /v1/licenses/activate | When you click "Activate License" | license_key, instance_name |
POST /v1/licenses/validate | Scheduled re-validation | license_key, instance_id |
POST /v1/licenses/deactivate | When you click "Deactivate License" | license_key, instance_id |
Where:
instance_name=ClipRefine-{first 8 characters of your locally-generated UUID}instance_id= UUID issued by Lemon Squeezy after activation
Re-validation schedule: first check 5 minutes after Chrome starts, then approximately
every 24 hours, via chrome.alarms. Re-validation runs only while you hold an
active PRO license.
Network resilience: if Lemon Squeezy is unreachable (network error, timeout, 5xx), the extension keeps your existing PRO state. A license is downgraded only when Lemon Squeezy explicitly responds that it is no longer valid (e.g., refunded or disabled).
04Third-party service: Lemon Squeezy (PRO only)
We use Lemon Squeezy as our Merchant of Record for payment processing and license issuance.
- What we send to Lemon Squeezy from the extension: license key, instance name, instance ID — as listed in 03. No clipboard data, no rules, no browsing data.
- What Lemon Squeezy returns and we store locally:
instance.id,license_key.status,license_key.expires_at,meta.customer_id. - What Lemon Squeezy collects directly from you at checkout (independent of the extension):
your email address, billing details, payment method. This is handled on
*.lemonsqueezy.com, not in the extension. - Tax and refunds are handled by Lemon Squeezy.
- ClipRefine is not distributed in the EU/EEA and PRO licenses are not offered for sale to consumers located there — see the Terms of Service.
- Their privacy policy: lemonsqueezy.com/privacy
05Permissions
Permissions declared in manifest.json and why each is needed:
| permission | reason |
|---|---|
storage | Read/write rules, settings, and license state in chrome.storage.sync |
activeTab | Detect the current page's hostname for domain-scoped rules |
clipboardWrite | Replace your copied text with the refined result |
alarms | Schedule the 24-hour PRO license re-validation |
host_permissions: <all_urls> | Run the content script on any page where you press Copy |
06Data retention
- Locally stored data persists until you uninstall the extension, click "Clear extension data"
in
chrome://extensions, or explicitly deactivate your license (which clearslicenseandinstanceId). - License records on Lemon Squeezy's side persist according to their own retention policy.
07Your rights
- View / edit / delete all your rules and settings on the extension's options page.
- Deactivate your PRO license via "Deactivate License", which calls
POST /v1/licenses/deactivateand clears the locallicenseobject. This frees up one of your 5 device slots. - Uninstall the extension to remove all local data.
Statutory data protection rights: wherever you are located, the personal data we hold is limited to what is listed in 01. Because that data lives on your device, you can exercise rights such as access, deletion, and portability directly via Chrome, without needing to contact us. For data held by Lemon Squeezy, contact them through their privacy page.
08Children's privacy
ClipRefine does not knowingly collect data from children under 13.
09Changes to this policy
Material changes will be noted in extension update release notes. The version and "Last updated" date at the top of this document reflect the current revision.
10Contact
Questions about this policy: hello@fromeast.dev
See also: Terms of Service