01
You pick a file
Drop a CSV or Excel file in. It opens straight in your browser — the same way a photo opens when you double-click it. Nothing is sent.
How it works
TransformSafe cleans, reshapes, and charts your data entirely inside your browser. There is no upload step to turn off and no server copy to trust us to delete — the file simply never goes anywhere. Below is the plain version, and the technical proof your security team will ask for.
01
Drop a CSV or Excel file in. It opens straight in your browser — the same way a photo opens when you double-click it. Nothing is sent.
02
Type “remove duplicates” or “total sales by month.” The work happens on your own machine, in the moment — there is no AI service reading your numbers.
03
The cleaned file saves to your computer. TransformSafe keeps the steps as a reusable recipe — never the data.
For your security team
connect-src allowlist caps where the page may make network connections: our own origin, and Stripe — our payment processor — for checkout. It is enforced by the browser, not by our code, and it does not include any AI, model, analytics, or third-party storage host. You can read the header yourself.Prove it
Pick a CSV or text file (.csv, .tsv, .txt). It is read right here in this tab, and every request this page’s JavaScript makes via fetch or XMLHttpRequest is listed below as it happens. Your browser’s Network tab will show more than this table — images, fonts, the analysis runtime — because it also counts loads this log cannot see.
Live request log (0)
No fetch or XHR requests observed yet.
To be exact about this page: it loads the app shell and fonts, and the header asks GET /auth/me whether you are signed in. That session check usually runs before this monitor starts watching, so expect it in your Network tab and not in the table above. The subscription check happens in the app itself, not here. What never appears in any of them is your file’s contents. That is the claim, and this is the evidence.
Prefer to check it against the real thing? Open your browser’s Network tab (F12 → Network) and run an actual transform in the app — the same result holds.