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. When the tool itself crashes we record the kind of error, such as a type error or a script that failed to load, and never its message. 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.
The browser extension.
FileConcat Clipper turns a page you are reading into a Markdown file and hands it to an open FileConcat tab. It is a separate thing to install, and everything below is true only if you installed it.
- It reads a page only when you ask it to. Nothing is read because you happened to visit it. The panel names what the page in front of you offers, and that page becomes a file when you press a button. There is no background crawling, and no record is kept of where you have been.
- Clippings stay in your browser until you send them. The tray holds the last 50 in the browser's own extension storage, on your device. Nothing in it reaches us. Removing a row or clearing the tray deletes it outright.
- Sending is a handoff between two things on your device. Send hands the files to an open FileConcat tab in the same browser. There is no upload step and no server of ours anywhere between the extension and that tab.
- Once they arrive, they are files like any other. A clipping that reaches the tool is treated exactly like a document you dropped, so everything above applies to it. That includes the session recording, which can show a clipping's file name and the on-screen preview of the combined output.
- Three requests, each to the site you are already on. Clipping a video asks YouTube for its transcript. Clipping a Reddit post from a listing asks Reddit for that post's page, the same way clicking through to it would. Clipping a Hacker News thread asks hn.algolia.com for its comments, because Hacker News blocks that request from its own page. None of the three go to us.
- It asks for access to all sites. Because any page can be an article, and the reader that finds an article's body works everywhere rather than on a list of sites we picked in advance. That permission is what makes the clip button possible on the page you are actually on. It is not what decides whether a page gets read, which is still only ever your button press.
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 GitHubQuestions? Message @CeamKrier on X.
Last updated August 20, 2026 · back to FileConcat