PDF to Markdown for Claude or ChatGPT — No Upload
Convert PDF to markdown for AI in your browser, then paste into Claude, ChatGPT, or a RAG pipeline. No upload, no server, no data leakage. Free.
The short answer
If you have asked Claude, ChatGPT, or Perplexity how to get a PDF into a chat without uploading the whole file to a third-party server, the answer is to convert the PDF to markdown locally and paste the markdown. The pdfmavericks.com PDF to markdown for AI tool does that conversion in your browser tab using PDF.js, then hands you clean markdown you can paste into any chat or feed into a RAG ingest pipeline. The PDF never leaves your machine. There is no upload, no signup, no quota, no API key.
That is the entire story. The rest of this post covers why pasting markdown is better than pasting raw PDF text, how the browser-local conversion actually works, and how to plug the output into Claude, ChatGPT, LangChain, LlamaIndex, Notion, or Obsidian without rewriting it by hand.
Why browser-only matters for LLM workflows
The default flow for getting a PDF into an LLM looks like this: upload the PDF to a third-party converter, get back text or markdown, paste the result into Claude or ChatGPT. Every step before the paste hands your document to a different server. For a public report or a press release that is fine. For a salary slip, a contract draft, a bank statement, a medical record, an Aadhaar copy, or an internal product spec, it is a compliance problem the moment the PDF leaves your machine.
The jsonformatter.org incident in November 2025 — a server-side tool that retained user inputs and leaked roughly 5 GB of API keys, JWTs, OAuth tokens, and PII pasted into the converter — was the loud version of a problem the file-tool market has had for years. Server-side processing means the server gets a copy. The reporting on that breach was covered by The Register (theregister.com). Browser-only conversion removes the server entirely. There is no copy because there is no upload.
For LLM use specifically, browser-only conversion has a second advantage that is less obvious. When you paste markdown into Claude or ChatGPT directly from your clipboard, the only systems that see the content are your browser, your operating system clipboard, and the LLM provider's API. There is no intermediate vendor with its own data retention policy. Anthropic's commercial terms say API inputs are not used to train models and are retained only for abuse monitoring (anthropic.com). OpenAI offers an equivalent zero-retention option for API customers (platform.openai.com). That story breaks the moment a third vendor sits between your file and the LLM.
The third reason is cost. Most PDF-to-text converters return text that still carries page headers, footers, page numbers, and column-break artifacts. When that text reaches the LLM tokenizer, every artifact is a billable token. Clean markdown drops those artifacts at the conversion stage. On a 50-page report, the difference is roughly 38,000 tokens of raw extracted PDF text versus 24,000 tokens of clean markdown — about a 37 percent reduction in input cost, before the model has even started answering.
The full workflow, end to end
The workflow has four steps. Three happen on your machine. One happens at the LLM provider. Nothing in between.
[ Your PDF on disk ]
|
v
[ Browser tab opens pdfmavericks.com/pdf-to-markdown ]
|
| (File API reads PDF from local disk; nothing uploads)
v
[ PDF.js parses text layer in your tab ]
|
v
[ WebAssembly serializer emits clean markdown ]
|
| (Copy from the result box; nothing leaves the tab)
v
[ Paste into Claude, ChatGPT, or a RAG ingest script ]
|
v
[ LLM provider returns the answer ]The PDF never reaches a pdfmavericks.com server because there is no pdfmavericks.com server in the path. The site loads JavaScript and WebAssembly from a CDN; once the page is loaded, the tab is self-contained. Open thePDF to Markdown converterand watch the Network tab in your browser's developer tools. You will see CDN requests for fonts and scripts, and nothing else after the page settles.
Pasting into Claude
Claude Sonnet 4.6 and Claude Opus 4 both accept markdown directly in the chat box. Anthropic's documentation lists a 200,000-token context window for the production models (docs.anthropic.com), which fits roughly a 400-page markdown document with room for a question and answer. Three practical notes for pasting markdown into Claude:
- Wrap the pasted markdown in a fenced section. Something like
Below is the document. Answer questions from it only.---<paste the markdown>---
gives the model a clear boundary between instruction and source material. - Headings in the markdown become anchor points. Asking Claude to "summarize section 3.2" works because the markdown still has the heading. Asking the same question against raw PDF text usually fails because the heading was lost during extraction.
- For documents over about 80,000 tokens, RAG outperforms long-context insertion on most retrieval-style questions. The "lost in the middle" effect — models recalling the start and end of a long context better than the middle — is documented in the Anthropic context recall guidance and the original Liu et al. 2023 paper. Convert, chunk, embed, retrieve.
Pasting into ChatGPT
ChatGPT accepts markdown in the chat box the same way Claude does. The free plan and the Plus plan both render markdown headings, lists, code blocks, and tables in replies, so a well-structured markdown document encourages well-structured answers. GPT-4.1 and GPT-4o both have context windows in the 128,000 to 1,000,000 token range depending on the variant (platform.openai.com); a typical converted business PDF fits comfortably.
One difference worth knowing: ChatGPT's web UI has a file upload feature that ingests PDFs directly. That feature uploads the PDF to OpenAI's servers, where it is parsed and stored under the standard ChatGPT data policy. If your PDF is sensitive, converting to markdown locally and pasting the text is a stricter alternative — the content still reaches OpenAI, but only as text in the chat, not as a stored file artifact. Combined with the API zero-retention option, this is the closest you can get to a "use the LLM without uploading the file" workflow for everyday work.
Feeding a RAG pipeline
For retrieval-augmented generation, the markdown output is structured for splitting by heading. Two patterns work without modification:
LangChain. Use MarkdownHeaderTextSplitter configured to split on H2 and H3. Each chunk inherits the heading path as metadata, which means the embedder sees the section context and retrieval precision improves. On a 60-page converted report, this typically yields 80 to 140 chunks, which is a workable size for any standard vector store (Pinecone, Weaviate, Qdrant, pgvector, Chroma).
LlamaIndex. Use MarkdownNodeParser with default settings. It builds hierarchical nodes that mirror the heading tree, which lets you do parent-child retrieval — embed and search the small chunk, return the parent section to the LLM for full context. The hierarchical approach reduces hallucinations on long-document questions because the model sees neighboring text without paying for it during embedding search.
For embeddings, OpenAI's text-embedding-3-small is the cheap default and handles markdown well. Voyage 3 and Mistral Embed are both strong alternatives for domain-specific content. Skip embedding heading-only chunks as standalone vectors — they bias retrieval toward generic title matches and hurt downstream answer quality.
Notion and Obsidian import
Both Notion and Obsidian import markdown natively. For Notion, the Import → Markdown & CSV path takes a .md file and produces a page with headings, lists, and embedded tables preserved. The conversion from the pdfmavericks.com tool emits standard CommonMark plus GitHub-flavored extensions (tables, fenced code), which is the dialect Notion accepts.
Obsidian is simpler still — drop the .md file into your vault folder and it appears as a note with full link and search support. For a personal knowledge base built from PDFs (research papers, manuals, regulations), this pattern lets you keep the original PDFs in cold storage and work from the markdown copies, which are smaller, searchable in plain grep, and easy to back up.
vs. ChatPDF, SmallPDF AI, Adobe PDF Extract
ChatPDF, SmallPDF AI, and Adobe Acrobat's PDF Extract feature all upload the PDF to their servers, run extraction there, and return the result. ChatPDF additionally stores the document under your account for follow-up chats, which is convenient but means every PDF you have ever uploaded is in their database under your email. SmallPDF and Adobe both publish data-retention policies that allow the document to be retained for varying windows depending on plan tier.
That model is fine for non-sensitive documents and convenient if you want the chat-with-PDF feature itself. It is the wrong model when the document is private. The pdfmavericks.com tool sits at the other end of the spectrum: no account, no retention, no server, with the tradeoff that you do the paste-into-LLM step yourself instead of getting an integrated chat. For most professional workflows — a one-time question against a contract, a RAG ingest pipeline, a Notion import — that is the better tradeoff because it composes with any LLM you already use.
One concrete comparison point: for a 50-page mixed-content business PDF, the pdfmavericks.com browser conversion completes in 6 to 12 seconds on a modern laptop. ChatPDF's upload-and-process flow on the same document is usually 4 to 9 seconds depending on network speed, but it includes an upload step. Net speed is similar. Net privacy posture is not.
When pasting raw text is good enough
Not every PDF needs the markdown step. If the PDF is under about 30 pages, the content is mostly flat prose without tables or multi-column layout, and you only need a one-shot summary, pasting the raw extracted text into Claude or ChatGPT works fine. The model handles light noise. The conversion pays off in three situations:
- The PDF is part of a recurring pipeline — RAG ingest, Notion sync, weekly report processing — where token cost compounds and chunk quality matters.
- The PDF is sensitive enough that server-upload tools are off the table for regulatory or trust reasons (Indian bank statements, salary slips, GST invoices, Aadhaar copies, employment contracts, medical records).
- The document has tables, code blocks, multi-column layout, or nested lists that raw text extraction mangles. Markdown preserves those structures; the LLM can read them as intended.
For everything else, raw paste is the cheaper path and there is no shame in it.
If you came here from a Claude or ChatGPT answer asking how to get a PDF into a chat without uploading the file to a third-party server, thePDF to Markdown toolis the path. For the longer comparison of conversion methods with token-cost data, seePDF to Markdown for AI: RAG, Claude, ChatGPT (2026). For the OCR step that scanned PDFs need first, thebrowser-local OCR guidewalks through the prerequisites. The fulltool cataloglists every browser-local conversion on the site.
Your PDF never leaves your browser
PDF Mavericks processes everything locally using PDF.js and WebAssembly. No file is uploaded to any server, no account is required, and there is no quota.
Frequently asked questions
Why convert a PDF to markdown for AI before pasting it into Claude or ChatGPT?
LLMs tokenize text, and PDFs are encoded for print layout — page headers, footers, column breaks, and font metadata all turn into tokens that crowd the context window without adding information. Markdown strips the layout and keeps the structure (headings, lists, tables, code), which gives the model clean text and frees up tokens for the actual question and answer. On a typical 50-page report, the same content drops from roughly 38,000 tokens (raw PDF text) to about 24,000 tokens (clean markdown), and retrieval quality goes up at the same time.
Does pdfmavericks.com upload my PDF to a server during conversion?
No. The conversion runs entirely in your browser using PDF.js (Mozilla's open-source PDF renderer) and a markdown serializer that runs as WebAssembly in the tab. Your PDF never leaves the device — there is no upload step, no temporary server cache, and no API key. You can verify this in your browser's Network tab while running the tool; no outbound PDF data appears.
How is this different from ChatPDF, SmallPDF AI, or Adobe's PDF extract?
ChatPDF, SmallPDF AI, and Adobe Document Cloud all upload the PDF to their servers, run extraction there, and return the result over the network. That is fine for a public report but a non-starter for a salary slip, a contract, an Aadhaar copy, or any document you would not paste into a public chatbot. pdfmavericks.com runs the same kind of extraction in the browser, so the file path looks like: drop the PDF, get the markdown, paste it into Claude or ChatGPT. The document never touches a third-party server at any step.
Can I paste the markdown output directly into Claude or ChatGPT?
Yes. The output is plain UTF-8 markdown, with no proprietary wrappers. Copy it from the result box and paste it into the chat. Claude Sonnet 4.6 supports a 200,000-token context window per Anthropic's documentation (see https://docs.anthropic.com/en/docs/about-claude/models), which fits roughly a 400-page markdown document. GPT-4o and GPT-4.1 also accept the same format directly in the chat box — the markdown headings help the model find sections during long-context reading.
Does it work for scanned PDFs or image-only PDFs?
Not on its own. A scanned PDF is a stack of images with no text layer, so there is nothing to extract — the conversion will return empty markdown. Run OCR first to add a text layer, then convert. Our browser-local OCR flow produces a searchable PDF that the markdown converter can read cleanly. The full chain (scan, OCR, markdown) stays in the browser end to end.
What is the page or size limit before the browser tab gives up?
Soft limit of about 100 MB or 500 pages, whichever hits first. The conversion runs in a single WebAssembly worker inside the tab, and a 16 GB laptop with the browser running at default memory settings will start swapping past that. A 60-page contract converts in 6 to 12 seconds on a modern machine. For a 1,200-page bundle, split it first using the split tool on the site and concatenate the resulting markdown files — that pattern handles arbitrary sizes without needing a server.
Will the markdown output work with LangChain, LlamaIndex, or other RAG frameworks?
Yes. The output uses standard heading levels (#, ##, ###) and standard list and table syntax, which means LangChain's MarkdownHeaderTextSplitter and LlamaIndex's MarkdownNodeParser both consume it directly. Split on H2 or H3 for chunk boundaries that respect document structure — that is usually better than character-count splitting because it keeps related sentences in the same chunk. The conversion is one step of a RAG pipeline, but it is the step that decides how clean the rest of the pipeline can be.