Privacy Policy
Effective October 10, 2026.
Kowal AI LLC (“we”) operates tools.ltd. We are the controller of personal information described here. We are a limited liability company in Georgia, United States. Contact support@tools.ltd.
What we collect
We collect only what the tools need.
- No tool receives your files. Every tool reads or makes files on your device. MyBankToExcel sends us only the words and numbers it read from a statement, so we can put them in rows. We use them for that request only and do not keep them. We do not use them to train a model, and we do not sell them. Details are below.
- A random browser id in the
ts_browsercookie, so the free monthly allowance can be counted. It is not an account. - A scrambled code for your network, made from your IP address and the month. We never store the IP address itself, and the code changes every month. It counts free uses per network, so clearing cookies does not reset them. A network gets five times one browser's free allowance, so homes and offices that share one address still work.
- Daily totals of how many people open each tool, use it, open checkout, pay, and download. These are plain counts. They hold no cookie, IP address, or anything else that could identify you.
- If you pay, Stripe collects the email address and payment details on Stripe’s checkout page. Our webhook stores the email, the tool, and the payment or subscription status. We never receive or store your card number.
- If you buy a Pro plan (Sheetsnap, TrueRedact, PageKit, Plain Invoice, Mileage Log, Rent Check, JPG to PDF, or PDF to Word) or a MyBankToExcel Bookkeeper or Firm plan, we store your email, your Stripe customer and subscription ids, which tools the plan unlocks, and whether it is active. We set a signed
ts_procookie on each device where you turn Pro on. It holds those Stripe ids and the tool list, not your email or any file. We check the subscription with Stripe every few minutes, so Pro turns off soon after a cancel or a failed payment. - If you ask for an access link, we use your email only to look up your Pro plan and, if you have one, to send the link through our email provider. The link works for 30 minutes.
- If you buy MyBankToExcel, we set a
stmt_entitlementcookie that holds a signed Checkout session id. The statement itself stays in your browser, sealed, for 24 hours. - If you use MyBankToExcel Firm, the client names you type are kept in this browser's
localStorage(mbx_clients), with a scrambled code for each account (not the account number) and your file name pattern. This is not a cookie and is never sent to us. - If you check an EPUB, this browser keeps a copy in IndexedDB so a paid download can be built later. The server does not keep the book.
- If you use TrueRedact, the PDF never leaves your device. The page sends only the number of pages you redacted, so the free allowance can be counted.
- If you use PageKit, your PDFs never leave your device. The page sends only a count of one task, so the free allowance can be counted.
- If you use Mileage Log, the log is made on your device. The page sends only a count of one log, so the free allowance can be counted. Your name and car are kept in this browser's
localStorage(mileage-log), which is not a cookie and is never sent to us. Your trips are not saved. - If you use PDF to Word, the Word file is made on your device, even from a scan. Your PDF is never uploaded. The page sends only a count of one conversion, so the free allowance can be counted.
- If you use JPG to PDF, your photos and PDFs are turned into files on your device. The page sends only a count of one file, so the free allowance can be counted. Your files are never uploaded or saved.
- If you use Rent Check, the letter is made on your device. The page loads a public list of HUD rents for the first two digits of the ZIP code you type, and sends only a count of one check (or the id of a paid $9 letter), so the free allowance can be counted. What you type is kept in this browser's
localStorage(rent-check), which is not a cookie and is never sent to us. - If you use Plain Invoice, the invoice is made on your device. The page sends only a count of one invoice, so the free allowance can be counted. Your From details and next invoice number are kept in this browser's
localStorage(plain-invoice), which is not a cookie and is never sent to us. - A theme preference in
localStorage(tableshift-theme), if you set one. That is not a cookie.
Free use does not need an account. Production has developer login turned off, so we do not set a session cookie for visitors.
Analytics
We use Cloudflare Web Analytics to count visits and see how fast pages load. It sets no cookies, it does not track you across other sites, and it never sees your files.
Uploaded files
Sheetsnap
Sheetsnap runs entirely in your browser. Your PDF is read and the Excel file is made on your device, with Python running in your browser (Pyodide, pdfplumber, and openpyxl, served from tools.ltd). The PDF and the Excel file are never uploaded to us or to anyone else. The only request the tool makes about a file is a count of one file, sent with the ts_browser cookie after the Excel file is made, so the free allowance (1 free table a month) can be enforced. It carries no file and no file name. A file that fails is not counted.
MyBankToExcel
The PDF never leaves your device. The page reads it in your browser: pdf.js (served from tools.ltd) reads the text, and if the PDF is a scan with no text inside, tesseract.js (Tesseract OCR in WebAssembly, also served from tools.ltd) reads the pages on your device. Only the words and where they sit on the page are sent over HTTPS to our Worker, which sorts them into rows in memory and keeps nothing after the response is sent. Parsed rows are sealed (AES-256-GCM) and returned to your browser. The page stores that seal in sessionStorage (stmt_blob, stmt_preview, and stmt_session). The seal expires 24 hours after it is created. A paid download sends the seal back, builds the file, and does not keep it. Stripe stores the checkout and, for a 10-statement pack, how many credits remain. We do not send the PDF to Stripe.
Ebook Medic
Your file never leaves your device. The check (EPUBCheck-TS, which uses the same rules as EPUBCheck), the repair and the second check all run in your browser; the EPUB is never uploaded to us. After a check finishes, the page tells our server only that one check was used, so the free allowance can be counted. A copy of the original stays in this browser’s IndexedDB (database epubfix, object store books). The page deletes that copy after a paid download, or once it is 24 hours old. Stripe receives the SHA-256 of the file, not the book. For a paid download the page sends our server the checkout id, that SHA-256 and the file name; the server asks Stripe whether the payment covers that file, and your browser builds the fixed EPUB. A 5-pack stores downloaded hashes on the Stripe payment.
TrueRedact
TrueRedact runs entirely in your browser. The PDF is opened, searched, redacted, and checked with JavaScript on your device (pdf.js and pdf-lib, served from tools.ltd). The file, the words you search for, and the redacted result are never uploaded to us or to anyone else. The only request the tool makes is a count of redacted pages, sent with the ts_browser cookie, so the free allowance (1 free page a month) can be enforced. We do not log file names or contents because we never receive them.
PageKit
PageKit (merge, split, and shrink) runs entirely in your browser with pdf-lib, served from tools.ltd. Your PDFs and the new files it makes are never uploaded to us or to anyone else. The only request the tool makes is a count of one task, sent with the ts_browser cookie, so the free allowance (1 free task a month) can be enforced. We do not log file names or contents because we never receive them.
Mileage Log
Mileage Log builds the log PDF and Excel file entirely in your browser with pdf-lib, served from tools.ltd. Your trips, places, and miles are never uploaded to us or to anyone else. The IRS rates are part of the page. The only request the tool makes is a count of one log, sent with the ts_browser cookie, so the free allowance (1 free log a month) can be enforced.
PDF to Word
PDF to Word runs entirely in your browser. It reads the text with pdfplumber and writes the .docx with python-docx, running in Pyodide (Python in WebAssembly). Pages are drawn with pdf.js, and scanned pages are read with tesseract.js OCR. All of this code is served from tools.ltd and runs on your device. Your PDF and the Word file it makes are never uploaded to us or to anyone else. The only request the tool makes is a count of one conversion, sent with the ts_browser cookie, so the free allowance (1 free conversion a month) can be enforced, and a failed conversion does not count. We do not log file names or contents because we never receive them.
JPG to PDF
JPG to PDF builds PDFs with pdf-lib and turns PDF pages into JPGs with pdf.js, entirely in your browser, served from tools.ltd. iPhone HEIC photos are read by your browser, or by heic2any (also served from our site) when the browser cannot. Your photos and PDFs are never uploaded to us or to anyone else. The only request the tool makes is a count of one file, sent with the ts_browser cookie, so the free allowance (1 free file a month) can be enforced.
Rent Check
Rent Check builds the letter PDF entirely in your browser with pdf-lib, served from tools.ltd. Tenant names, addresses, and rents are never uploaded to us or to anyone else. HUD fair market rents and BLS price data are static files on our site, with no live lookups. The only request the tool makes is a count of one check, sent with the ts_browser cookie, so the free allowance (1 free rent check a month) can be enforced.
Plain Invoice
Plain Invoice builds the invoice PDF entirely in your browser with pdf-lib, served from tools.ltd. Your name, your client's name, line items, prices, and the PDF are never uploaded to us or to anyone else. The only request the tool makes is a count of one invoice, sent with the ts_browser cookie, so the free allowance (1 free invoice a month) can be enforced.
Cookies
We use only strictly necessary cookies. There is no advertising or analytics cookie, and no cookie banner. The names, purposes, and lifetimes are on the cookie page.
What we do not do
- We do not sell personal information.
- We do not share it for cross-context behavioral advertising.
- We do not keep uploaded files on the server after the download or report is produced.
- We do not use your files to train a model.
- We do not use analytics that set cookies or follow you to other sites.
Processors
- Cloudflare, Inc. hosts the site and runs the worker.
- Stripe, Inc. processes payments, customer email, subscription status, and purchase metadata such as MyBankToExcel credits and Ebook Medic file hashes.
- Resend, Inc. sends Pro access-link emails, when that feature is on. It receives your email address and the link.
Cloudflare also runs Cloudflare Web Analytics for us. It counts visits and page speed. It sets no cookies and does not track you across sites.
How long we keep information
- Sheetsnap PDFs: never received. They stay on your device.
- MyBankToExcel PDFs: never received. The words read from them: for the request only. The sealed browser copy expires after 24 hours.
sessionStoragealso clears when the tab closes. - Ebook Medic: we never receive the book. The IndexedDB copy in your browser is deleted after a paid download or once it is 24 hours old, or when you clear site data.
ts_browser: 1 year. The free-allowance counter for that id is kept until the cookie is gone. The count resets each calendar month (UTC). We have no separate deletion job for it, and we cannot match that id to an email.stmt_entitlement: 30 days.ts_pro: about 13 months, or until you clear it. It stops working as soon as the subscription is not active.- Email and purchase records we store: until you ask us to delete them. The code has no automatic expiry. Stripe keeps payment records on Stripe’s own schedule. We do not store card numbers.
- Theme preference: until you clear site data.
We do not keep our own archive of request logs. Cloudflare may keep operational logs under its own retention.
Why we use it
Under the GDPR and the UK GDPR, we rely on:
- Contract: processing a file you asked us to convert, check, or export, and providing a purchase you made.
- Legitimate interests: the free-allowance cookie, so the free tier cannot be reused without limit, and basic security of the site. Those interests are not overridden by your rights, because the cookie is a random id and is not used to profile you across other sites.
- Legal obligation: Stripe holds payment records that tax and accounting rules require. We do not keep a separate tax archive.
We do not rely on consent for cookies, because the cookies we set are strictly necessary to provide the service you asked for.
GDPR and UK GDPR rights
If the GDPR or the UK GDPR applies to you, you can ask us to:
- access the personal information we hold about you;
- correct it;
- delete it;
- restrict how we use it;
- receive a copy of the email and purchase records we store (portability);
- object to processing based on legitimate interests;
- complain to a supervisory authority. In the UK, that is the Information Commissioner’s Office.
Email support@tools.ltd. We will delete the email and purchase records we store. We will also ask Stripe to delete the related customer where Stripe allows it. We have not appointed a separate EU or UK representative. Kowal AI LLC in Georgia, United States, is the controller, and support@tools.ltd is the contact.
We cannot look up a ts_browser counter from an email, because the counter is stored only under that random id. You can delete it by clearing cookies for tools.ltd.
California: Do Not Sell or Share
We do not sell personal information. We do not share it for cross-context behavioral advertising. We have not sold or shared personal information in the preceding 12 months. There is no sale or share to opt out of.
Do Not Sell or Share My Personal Information. We do not sell or share personal information as those terms are used in the CCPA and CPRA.
Categories we collect, when they apply: identifiers (an email address if you pay, and the random browser id); commercial information (which plan you bought); and the words read from a bank statement in MyBankToExcel, which can include financial information, for that request only. We use those categories only to provide the tool, count the free allowance, and complete the purchase. We do not use them for advertising. You may ask us to delete the email and purchase records we store by emailing support@tools.ltd. We will not discriminate against you for exercising these rights.
Children
The service is not directed to children under 16. We do not knowingly collect personal information from children under 13. We do not knowingly serve children under 16. If you believe a child has used the service, email support@tools.ltd and we will delete the email and purchase records we hold.
International transfers
Kowal AI LLC is in Georgia, United States. If you use the site from the EEA, the UK, or anywhere else, your information is processed in the United States. Cloudflare and Stripe may also process it in other countries where they operate. Their own terms describe the safeguards they offer for those transfers, including standard contractual clauses where they apply. Cloudflare Web Analytics is run by Cloudflare, which is already listed above.
Security
The site is served over HTTPS. The cookies we set are HttpOnly. The MyBankToExcel entitlement cookie is signed. The sealed statement in your browser is encrypted with AES-256-GCM. Ebook Medic never uploads the EPUB. No method of transmission or storage is perfectly secure.
Changes
If we make a material change, we will update the effective date on this page.
Contact
Kowal AI LLC
Georgia, United States
support@tools.ltd