100% local · ready for AI

Pack project files for AI context

Drag-drop code, notes, and configs from your project and AI Context Packer combines them into one clean Markdown file — ready to paste into ChatGPT, Claude, or DeepSeek. Everything runs in your browser. Private — runs in your browser.

Multi-file Token counter Markdown output No uploads
XML-tagged wraps each file in <file path="..."> tags.
Larger files are truncated with a note.
No files added yet.

AI-ready context

Copy this into ChatGPT, Claude, or DeepSeek.

0 files 0 chars 0 tokens
Output preview

How to use AI Context Packer

Four simple steps — your files are read locally and combined into one Markdown file. Nothing is uploaded.

1

Add your files

Drag-drop files or a whole folder onto the dropzone, or click "browse files" / "browse folder". Binary files (images, PDFs, zips) are auto-skipped.

2

Reorder & configure

Drag the handle (or use arrow keys on mobile) to reorder. Open "Output configuration" to pick a template, set max file size, and toggle the file tree.

3

Watch the preview

The Markdown output updates live in the preview pane. The token counter (≈ chars ÷ 4) shows how much context you are about to send to the model.

4

Copy or download

Click "Copy to clipboard" to paste straight into ChatGPT, Claude, or DeepSeek — or download as .md / .txt for later.

Folder-aware drop

Drop an entire project folder and AI Context Packer reads the file tree, preserves relative paths, and skips binaries automatically.

Three output templates

Standard Markdown, Compact (just headings + code), or XML-tagged for Claude. Switch instantly and the preview updates.

Live token counter

A simple chars ÷ 4 heuristic gives an instant estimate of how many tokens your context will cost — no external library, no API calls.

Truly private

Files are read into memory on your device only. They are never uploaded, never stored, never logged. Verify it in your browser's Network tab.

Works Browser-based

No dependencies, no CDN, no service worker required. Save the page with Ctrl+S and run it from your disk on a plane.

Reorderable & filterable

Drag to reorder, filter by code/docs/configs, and remove files individually. The file tree at the top of the output reflects your chosen order.

Frequently asked questions

No. AI Context Packer runs entirely in your browser using vanilla JavaScript. Your files are read into memory on your own device, combined into a Markdown string, and offered as a preview / download / clipboard copy. Nothing is sent over the network. You can verify this in your browser's DevTools → Network tab while you work.

Yes. The app has zero external dependencies — no CDN, no fonts, no analytics. Once the page has loaded once you can disconnect from the internet and keep packing files. You can also save the page locally (Ctrl+S → "Webpage, Complete") and double-click the saved HTML to run it from disk.

We use a simple heuristic: tokens ≈ total characters ÷ 4. This is a well-known approximation that works reasonably well for English text and most code. It is not exact — real tokenizers (like OpenAI's tiktoken or Anthropic's tokenizer) will differ by ±10–20% depending on language, Unicode, and whitespace. Use it as a budgeting guide, not a guarantee.

Any text-based file is supported: code (.js, .ts, .py, .java, .go, .rs, .rb, .php, .c, .cpp, etc.), docs (.md, .txt, .rst, .tex), and configs (.json, .yaml, .toml, .ini, .env, .xml, .csv). Binary files (images, PDFs, Office documents, archives, executables, media) are automatically detected and skipped — they cannot be pasted into a chat as text anyway.

Standard markdown includes a "# Project Context" header, an optional file tree, and each file wrapped in a code fence with its language. Compact drops the headers and tree, keeping only a "### path" heading and a code block per file — useful when you are tight on tokens. XML-tagged wraps each file in <file path="..."> tags, which Claude in particular parses well as structured context.

By default each file is truncated at 100 KB (configurable in "Output configuration" → Max file size). When a file is truncated, a note is inserted into the output telling the model the file was cut off, so it does not hallucinate the rest. Files larger than 100 MB are skipped entirely to avoid crashing the browser.

Yes. You can either click "browse folder" (uses the webkitdirectory attribute on the file input) or drag a folder onto the dropzone (uses DataTransferItem.webkitGetAsEntry()). Both preserve the relative folder structure in the output paths and the file tree. Folder drag-drop works in Chrome, Edge, and Firefox; Safari has partial support.

Any modern browser from the last few years: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+, and equivalent mobile browsers. Internet Explorer is not supported. The Clipboard API requires a secure context (HTTPS or localhost) — if you open the file directly from disk via file://, copying to clipboard may fall back to a legacy method or fail silently; downloading still works.