Privacy

What leaves your device, and what doesn’t.

Most tools that read a document upload it to a server first. FileConcat does that work in your browser instead, so your files are never uploaded to be processed. To keep the tool honest, here is the full account of what stays with you, what we collect, and how to check it for yourself.

What is and isn’t sent

Never uploaded

  • Your files, and their contents. The documents you drop are read, filtered, and combined in this browser tab. The file bytes are never uploaded to us, or to anyone, to be processed.

  • No third-party reads them. PDF, Word, Excel, and the rest are extracted in your browser. There is no server API and no upload step, so nothing outside this tab ever sees a document you dropped.

  • No account, no storage. There is no sign-up, no login, and no email. We do not keep a copy of anything you drop, because it never reaches us in the first place.

What we collect, and why

  • Anonymous product analytics. We use Microsoft Clarity to see how the tool is used and fix what is confusing. Because it records on-screen activity, a session recording can include your file names, folder structure, and the on-screen preview of the combined output. We also attach a few short labels to the recording so we can find it again later: which page you opened the tool on, whether the files came from your device or a repository link, a rough size band, whether anything failed to read, and whether the result was copied, downloaded, or left behind. Those labels carry no file names and no identifier. It is not tied to an account or an identity.

  • Anonymous counts, kept by us. So we know which formats to support next and where the tool struggles, we count the file types in a drop (how many of each, how many bytes, and the size of the largest file), the number of files, how long reading them took, how large the combined result was, and whether you copied or downloaded. Filenames are checked against a short published list of project files such as package.json and go.mod, and only a match is recorded. Nothing else about a filename leaves your browser, and no folder path or file content ever does. Each count carries a random id that lasts for one page load, is never stored on your device, and is never reused, so nothing ties a count to you, to another visit, or to your files. We delete these counts after 180 days.

  • Standard analytics signals. Country-level location, browser, and device type, plus first-party analytics cookies (_clck, _clsk).

  • Repository imports you ask for. If you paste a GitHub, GitLab, or Bitbucket link, your browser fetches it directly from that host. That request goes to them, not to us.

  • Reading a scanned page, when you drop one. A scanned PDF or Word file holds a picture of a page, not text, so there is nothing in the file to read. When you drop one, your browser downloads a text-recognition engine and one language file from jsDelivr, a public code CDN, and starts reading. What jsDelivr learns is what any file request tells a server: your IP address, and which file was asked for. Your document is not part of it. Recognition runs in this tab, on bytes already on your device, and the result goes nowhere but your screen. It happens only for documents that opened with no text in them, so a drop with no scan in it downloads nothing. You can stop a reading while it runs.

  • Your settings. Filters and preferences are saved in your browser's local storage. They stay on your device and are never sent anywhere.

Check it yourself.

Open your browser’s network panel and drop a folder. Your documents are never uploaded. The requests you will see are the analytics beacon, the repository fetch if you imported one, and the recognition download if a scanned page was in the drop. Never your files. Any content blocker stops the analytics, and the whole app is open source, so you can read exactly what it does.

Read the source on GitHub

Questions? Message @CeamKrier on X.

Last updated August 10, 2026 · back to FileConcat