Configuration
FileConcat keeps its output and filtering choices in a few places: the
result screen (the output format), the Files pane opened by
Adjust what's included (what goes in), the model sheet (the cost
estimate), and
localStorage (the defaults that survive a page reload). This page
documents each one in the order you encounter it.
Output controls on the result screen
Once your file is ready, the result screen carries the output format choice.
Format is a segmented control offering XML, Markdown, or Plain. XML wraps each file in named tags (recommended for Claude). Markdown uses fenced code blocks (recommended for assistants that emit Markdown themselves). Plain concatenates the files with lightweight separators and no markup.
The three differ by less than a percent in tokens on a real bundle, so the choice is about what reads unambiguously rather than what it costs. XML vs Markdown for LLM context sets out the measurements, what the prompt-format research does and does not support, and why there is no fourth option.
The Files pane
The Adjust what's included button in the result screen's top bar opens the Files pane. On a wide screen it sits beside the result, which stays live while you work. On a phone it covers the screen, with the token count and the context fit pinned to its bottom bar and a Done button. Everything in it updates the bundle live. You never have to touch any of it.
- The filter box narrows the list by name or folder, or by a glob
when you type
*or?. Take out N and Keep only these N act on every match at once, and an Undo follows each. - By type chips put a whole extension in or out in one click. Reset to defaults clears every manual choice and restores the default patterns.
- The file tree gives every file a checkbox and its share of the readable text, sorted largest first or A to Z. Auto-skipped noise (binaries and pattern-excluded files) shows dimmed.
- Patterns, closed at the bottom, holds the Ignore and Only include glob textareas. Ignore carries the default list (the same one the CLI uses); Only include is empty by default and acts as an exclusive whitelist when filled. See File filtering for the pattern syntax.
The model behind the context fit and the cost estimate is picked in a separate sheet, opened from the model name in the result's fit line. See Token estimation for how the model list is built.
Line numbers are off, and no control exposes a toggle for them.
The engine can prefix every line with its 1-based number
(addLineNumbers in packages/core/src/file-processing/transform.ts),
and the preference persists in your config. It is not currently a UI
control. See Token costs for why it is an expensive
option.
There is no per-file size limit in the browser. A 32 MB cap used to apply at ingestion and silently leave out anything above it. So the one large data file or log a bundle was usually about never arrived. Nothing is excluded for its size now. What a heavy bundle costs is reported on the result screen instead: how much of the selected model's context window it fills, whether it has passed the 1 MB mark where the token count becomes a sampled estimate and Copy slows down, and which single file is carrying most of the weight.
The maxFileSizeMB field survives in the persisted config, unread in the
browser. The CLI still caps, but explicitly and visibly, through
--max-size.
Persistent configuration
The full UserConfig shape lives in
apps/web/src/hooks/use-config.ts and is persisted under the
fileconcat-config localStorage key. The fields that survive across
sessions:
includePatternsandignorePatterns(your textareas)maxFileSizeMB(kept for compatibility; the browser no longer reads it)showLineNumbersoutputStyle(xml, markdown, or plain)defaultSourceTypeandautoSwitchSource
The store carries a version field. When FileConcat loads, anything
older than the current version is run through migrateConfig and the
upgraded shape is written back. The migration is silent and needs
nothing from you.
CLI configuration
The CLI keeps its own configuration layer documented in
CLI usage, including the --config flag and the
FileConcatConfig shape that file accepts.