Privacy
What leaves your device, and what doesn't.
FileConcat does the reading in your browser, 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 your browser. The file bytes are never uploaded to us, or to anyone, to be processed.
No server reads them. PDF, Word, Excel, and the rest are extracted in your browser. There is no server API and no upload step, so no server receives a document you dropped in order to read it. The anonymous analytics below are the exception, and say what they can see.
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 and folder structure, and the short sample of text shown while a scan or a recording is being read. The preview of the combined output is masked, so recordings do not show it. 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), which text encoding a file was read in when it was not UTF-8, such as windows-1251, why files that could not be read were left out, such as encrypted or damaged, the number of files, how long reading them took, how large the combined result was, how many files you moved in or out by hand and how long the file list was open, and whether you copied or downloaded. When text read off your images with low confidence is put in by you, we count how many images, never the text. A click on the button that opens the Clipper in the Chrome Web Store is counted too. We also record what kind of site sent you here, such as a search engine or an AI assistant, as a single label, and never the address you came from. We record whether the screen is a phone, a tablet or a computer the same way, as one label read from the screen size and whether it is used by touch, and never the screen size itself. We record which version of FileConcat the page loaded, such as 2.7.1, so we can tell which release a count came from. 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. To tell a first visit from a return, your browser also keeps the date it first opened the tool, and each visit sends only a rough band of it: first time, same day, within a week, within a month, or longer. The date itself is never sent, a visit never renews it, and it is replaced after 13 months. Beside it, your browser keeps running totals of what you exported here: how many times, how many files and tokens, and how many files of each type, for a summary we plan to show you. Each export sends only a rough band of how many times this device has exported: once, 2 to 4, 5 to 19, or 20 and more. The totals are deleted together with the date. You can turn both off below, and it stays off while your browser sends Global Privacy Control. So nothing ties a count to you, to a specific other visit, or to your files, unless you add your email to a feedback note as described below. We delete these counts after 180 days.
Feedback, when you send it. After you copy or download, the tool may ask whether it did what you needed. A tap on Yes or Not quite is recorded like the counts above. If you write a note and press Send, we keep what you typed together with that visit's random id. That lets us read it beside the counts from the same drop, such as which file types failed to read. If you add your email to get a reply, we keep it with the note and use it only to answer you. That also means the counts from that visit are no longer anonymous to us. Nothing is sent unless you press a button, and your files and their names are never part of it. We delete notes, and any email with them, after 180 days.
Standard analytics signals. Country-level location, browser, and device type. Outside the EU, the UK and Switzerland, Clarity also sets first-party analytics cookies (_clck, _clsk). Inside them it sets none, so each page view is recorded on its own.
Repository imports you ask for. If you paste a GitHub, GitLab, Bitbucket or Gist link, or the address of a page, 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. Past three documents or 8 MB, it asks first. 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 your browser, on bytes already on your device, and the result goes nowhere but your screen. It happens only for pages that hold no text of their own, so a drop with no scan in it downloads nothing. You can stop a reading while it runs.
Transcribing a recording, when you ask. Audio, and a video with no subtitle track, can be written out as text, but only when you press Transcribe. The first time, your browser downloads a speech model from Hugging Face, a public model host: 66 MB for English, 244 MB for other languages. It is kept in your browser's cache for the next time. What Hugging Face learns is what any file request tells a server: your IP address, and which model was asked for. Your recording is not part of it. The speech is written out in your browser, and the text shown on screen in a video is read by the recognition engine described above.
Your settings. Filters and preferences are saved in your browser's local storage, along with the date the feedback question was last shown, which keeps it from being asked again for a month, the date you first opened the tool, and the export totals described above. They stay on your device. Only the rough bands described above are ever sent.
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 them in the browser's own extension storage, on your device, until you send or remove them. 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. The preview of the combined output is masked there too.
- Requests go to the site you are already on, never to us. Clipping a video asks YouTube for its transcript, and its comments when you turned them on. The extension asks for these itself, without your YouTube cookies, so the requests are not tied to your account. 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. Clipping a ChatGPT conversation asks chatgpt.com for it with the page's own session. That is one request on a share page and two on a signed-in page. The first of the two fetches the session token, which is used once and not kept. Clipping a Claude conversation asks claude.ai the same way, one request. Clipping a Gemini conversation asks gemini.google.com the same way, one request per 100 turns, with the token the page itself sends. None of these 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 whatever page you are 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 model price list for the cost estimate, the link fetch if you imported one, the recognition download if a scanned page was in the drop, the speech model if you transcribed a recording, and your feedback note if you send one. Never your files. Any content blocker stops the analytics, and FileConcat is open source, so you can read exactly what it does.
Read the source on GitHubQuestions? Message @CeamKrier on X.
Last updated October 28, 2026 / back to FileConcat