Effective date: October 8, 2026
This policy explains how the TableHarvest browser extension (“TableHarvest”, “the extension”), published by Quillfold (“we”, “us”), handles information. The short version: the tables you export never leave your browser. There is no TableHarvest server, no account, no analytics and no advertising. The only network request is a license check with Polar, made only if you enter a TableHarvest Pro license key (section 3).
1. Data you export
When you open the TableHarvest side panel, the extension reads the page in the current tab to detect tables, lists and grids, shows you a preview, and converts the table you choose to Excel (XLSX), CSV, TSV, JSON or Markdown.
- All detection, extraction, de-duplication and conversion happens locally, inside your browser.
- Table contents are kept in memory only while the side panel is open. They are not written to extension storage and are not sent to us or to any third party.
- Exported files are saved through your browser’s normal download function. “Copy” writes the data to your clipboard only when you click it.
2. Data stored on your device
TableHarvest uses the browser’s extension storage (chrome.storage.local) for your settings, for what it remembers about each site you use it on, and, if you use Pro, for your license key. It does not use chrome.storage.sync. None of it contains the contents of a table:
| Key | Where | Contents | Purpose |
|---|---|---|---|
options | chrome.storage.local | Your last-used settings (export format, BOM, formula guard, cleanup options, maximum pages) | Starting with the settings you used last |
site:<origin> (one per site) | chrome.storage.local | For each address pattern on that site where you used TableHarvest (numbers and IDs in the path replaced by *, query string dropped): how to find the table you chose again (a CSS selector and its kind), the Next button you picked (a CSS selector and its label), your column choices (order, names you typed, hidden columns, and the table’s column headings to match them against), the options you used there, and when this was last updated. At most 30 address patterns per site | Selecting the same table, Next button and columns automatically the next time. “Forget” in the side panel deletes it for that site |
license | chrome.storage.local | Only if you entered a Pro license key: the key, the activation id Polar returned for this browser, the license status, when it was last checked and when it expires (for subscriptions), the activation limit, and the last error, if any | Turning Pro on, keeping it on offline for up to 14 days after the last successful check, and showing the license state in the side panel. “Remove license” in the side panel deletes it |
forcePlan | chrome.storage.local | The value free or pro, only if a developer sets it by hand | A testing aid for development builds. TableHarvest never writes this key itself, and it changes nothing for users |
Apart from the license check in section 3, none of this is sent anywhere. Uninstalling the extension removes all of it from your device.
3. Network communication
TableHarvest has no server of its own and sends no analytics, crash reports or table data anywhere. It makes one kind of network request, and only if you use Pro:
- License check with Polar. TableHarvest Pro is sold by Polar (polar.sh), which acts as the Merchant of Record. If you paste a license key into the side panel, the extension sends requests to Polar’s license-key service (
https://api.polar.sh/v1/customer-portal/license-keys/…) to activate the key in this browser, to check it again (at most once every 24 hours, and when you press “Check again”), and to remove it when you press “Remove license”. Each request contains only the license key and Polar’s identifier for the Quillfold organization; checks and removal also send the activation id Polar gave this browser, and the first activation also sends the fixed name “TableHarvest” (Polar requires a name for each activation; it says nothing about you or your device). No table data, page content or browsing information is sent. Like any web request, it reveals your IP address and browser information to Polar. If you never enter a key, TableHarvest makes no network requests at all. - Purchases. Pro is bought on pages operated by Polar and its payment processor. Your email address and payment details are entered there and processed under Polar’s own privacy policy: https://polar.sh/legal/privacy. We receive order details from Polar (such as your email address and what you bought) so that we can answer support requests; we do not receive your card details.
- When a multi-page capture follows Next, page numbers, “Load more” or infinite scroll, it does what you would do by hand in that tab: it clicks the page’s own controls or opens the page’s own next address. Any loading that follows is done by that website in your tab, as usual. TableHarvest only reads the result; it sends nothing to that website or anywhere else.
- Updates to the extension are delivered by your browser from the Chrome Web Store, under the browser vendor’s own policies. TableHarvest does not take part in that.
We do not sell, rent or share your data, and we do not use it for advertising, credit-worthiness or any purpose unrelated to the extension’s single function of exporting tables.
4. Permissions and why they are needed
| Permission | Why |
|---|---|
activeTab | Gives temporary access to the tab you are viewing, only after you click the TableHarvest toolbar button. TableHarvest has no standing access to the websites you visit. |
scripting | Injects the table-detection script into that tab, on demand, when you open the side panel. |
sidePanel | Shows the TableHarvest interface in the browser’s side panel. |
storage | Stores your settings, per-site memory and, if you use Pro, your license key on your device, as described in section 2. |
Optional site access (http://*/*, https://*/*) | Requested only when you start a multi-page capture that has to load a new page, and only for that one site (for example https://example.com/*). The browser asks you first; you can decline, and you can revoke it at any time in the extension’s settings. |
TableHarvest does not request access to all websites at install time, does not read your browsing history, and does not load or run remotely hosted code.
5. Analytics, cookies and tracking
TableHarvest contains no analytics, telemetry, crash reporting, advertising or tracking code, and sets no cookies.
6. Chrome Web Store User Data Policy
The use of information received from Google APIs and the browser will adhere to the Chrome Web Store User Data Policy, including the Limited Use requirements.
7. Children
TableHarvest is a general-purpose productivity tool and is not directed at children. We do not knowingly collect personal information from anyone.
8. Changes to this policy
If the way TableHarvest handles data changes, we will update this page and its effective date before the change takes effect. Material changes will also be noted in the extension’s release notes.
9. Contact
Questions about this policy: support@quillfold.dev