Drop a folder, files, or an archive. The noise gets stripped and out comes one clean document for ChatGPT, Claude, or Gemini. Runs in your browser, no setup, no account, nothing uploaded.
Hey Product Hunt 👋
FileConcat is back. The first version was basically "cat for codebases": drop a repo, get one clean file to paste into ChatGPT or Claude. That part still works, it just does a lot more now.
The big addition is documents. It reads PDF, Word, Excel, PowerPoint and OpenDocument files and pulls the text out right in the browser, on by default. If a file is scanned or empty it gets flagged instead of quietly dropped, so you know to OCR it first.
You can also feed it from more places: a local folder, an archive, or a public GitHub / GitLab / Bitbucket / Gist / URL. If a repo is too big to fetch whole it says so, rather than handing you a silent partial.
And it isn't only for developers anymore. Lawyers, researchers, students, anyone throwing a pile of files at an assistant. The output labels itself so the model treats it as a case file or a reading pile instead of source code.
The one thing I didn't touch is privacy. Everything runs in your browser. Nothing gets uploaded, no account. Open your network panel, drop some files, and you'll see zero requests leave the page. That's the reason confidential material can go through it at all.
It still counts tokens live against 200+ models so you know a bundle fits before you paste, and splits it into parts when it doesn't. Same engine ships as a CLI (npm i -g @fileconcat/cli), pipe-safe for coding agents.
Free and MIT licensed. Curious what you'd want it to handle next.
Report
how does it handle stuff like code comments or markdown formatting when it strips the noise, does it keep the structure intact or just flatten everything to plain text?
@aysunzhanyeue Good question. Nothing inside a file gets touched: code comments, markdown formatting, whitespace all stay exactly as they are. The "noise stripping" happens at the file level, not the content level. It's deciding which files to leave out (node_modules, lock files, .git, build output, anything in .gitignore), not rewriting what's inside the ones it keeps.
So structure stays fully intact. Each file goes into its own block with its path and language, and there's a file tree at the top so the model sees the layout before any content. The only files that get transformed are documents (PDF, Word, etc.), where text extraction is the whole point, and even there it's pulling text out, not reformatting your code/content.
Report
Dumped a messy mix of markdown files and a couple of PDFs into it and got a single clean text blob that Claude actually understood on the first try. The fact that nothing asked me to sign up was a nice surprise.
Replies
Chronos
how does it handle stuff like code comments or markdown formatting when it strips the noise, does it keep the structure intact or just flatten everything to plain text?
Chronos
@aysunzhanyeue Good question. Nothing inside a file gets touched: code comments, markdown formatting, whitespace all stay exactly as they are. The "noise stripping" happens at the file level, not the content level. It's deciding which files to leave out (node_modules, lock files, .git, build output, anything in .gitignore), not rewriting what's inside the ones it keeps.
So structure stays fully intact. Each file goes into its own block with its path and language, and there's a file tree at the top so the model sees the layout before any content. The only files that get transformed are documents (PDF, Word, etc.), where text extraction is the whole point, and even there it's pulling text out, not reformatting your code/content.
Dumped a messy mix of markdown files and a couple of PDFs into it and got a single clean text blob that Claude actually understood on the first try. The fact that nothing asked me to sign up was a nice surprise.