Why “can Claude read PDFs?” is the wrong first question
People type “claude code read pdf” because the official docs and a pile of Reddit threads disagree in public. Anthropic’s product can attach PDFs in some surfaces. Claude Code, in the loop you actually run on a repo, is a file agent. It is excellent at spec.md. It is average at a 68-page vendor PDF with a pinout on page 3 as an image.
Cursor users hit the same wall: “cursor read pdf” is a forum genre. Extensions that open a PDF pane do not put the table into the model’s working set as a table. A Skill named after PDFs is a competitor product; this page is not that Skill, and the heading will not use that name.
The sequence is boring on purpose. Parse. Commit. Mention the file. If the agent invents a 5 V rating that the table does not contain, you have a Markdown diff to argue with, not a screenshot.
Put the datasheet in the repo as Markdown
A chip datasheet is a test of the pipeline: absolute-maximum table, pin function table, package drawing, units in microamps. The demo uses a short excerpt of the TI LM358 family (pages 1–3 only, vendor copyright, not the full manual). After parse, feature bullets and application lists should still be lists, and units should remain math.
Name the file after the part (lm358.md) and keep the excerpt small. Do not check in a manufacturer’s entire PDF if your license does not allow it. The marketing site will not host the 68-page original.
From Claude Code: @lm358.md then “list supply range and packages as a table.” From Cursor: same file, same ask. Codex and other repo agents follow the same rule — they need bytes they can tokenize as text.
Demo: pin tables and units
Left: the excerpt PDF. Right: the parsed Markdown, including feature bullets and application lists. Image hotlinks in the parse output point at KolmoPDF’s figure store when the parser emitted them.
This is not a replacement for SPICE or for TI’s own HTML. It is the missing step before an agent writes a comment that cites a current limit.
What this page will not sell
We will not title the page after another company’s PDF Skill. We will not claim Claude cannot read any PDF anywhere — Chat surfaces change. We will not turn a lab meeting into this URL; developers feeding specs and students presenting papers are different searches.
If you already have text-layer PDFs with simple paragraphs, you may not need us. The gap is tables, scans, and equations that must survive into the repo.
A week in a repo that actually cites the datasheet
Monday: someone drops a vendor PDF in Slack with “can we support this part?” Tuesday: an intern pastes a screenshot into ChatGPT and gets a confident current limit that belongs to a different suffix of the family. Wednesday: Claude Code writes a driver comment that cannot be grepped against the table because the table never entered git.
The fix is not another chat window. The fix is a file. Parse the excerpt. Name it after the orderable device. Open a pull request whose only job is “add lm358.md.” Then the agent conversation becomes boring in the useful way: “according to lm358.md, BA version offset is 2 mV at 25 C — generate a constant and a test name.” If the Markdown is wrong, you fix Markdown. If the agent is wrong, you point at a line.
Cursor users should do the same even if they never type Claude. Indexing a PDF pane is not the same as indexing a table. Codex, copilot-style repo agents, and internal wrappers all tokenize files. They do not magically OCR a pinout. “Claude code read pdf” is the query; the product of the query is still a file in the tree.
Scanned application notes are worse than born-digital datasheets. If page 3 is a photograph of a table, a text-layer assumption fails. That is the same class of problem as a French tender scan, just with microamps instead of lots. KolmoPDF is the parse step. This Solutions host does not run the job; the button goes to kolmopdf.com/pdf-to-markdown with campaign tracking.
Licensing still matters. Do not publish a manufacturer’s full book on a marketing site. Do not commit a forbidden PDF into a public GitHub. An excerpt for a demo, a customer-licensed PDF in a private repo — those are different. The three-page LM358 slice on this page is labeled as an excerpt on purpose.
API users who convert dozens of specs a night should skip the UI and hit the parsing API. The landing page exists so a developer who googled the pain finds a sequence, not a Skill brand, not a lecture on “what is Markdown.”
Limits: what still fails after a clean parse
Schematics as drawings stay drawings. A parse will not produce a netlist. SPICE models that live only as encrypted blobs stay vendor tools. Mechanical drawings with a forest of dimensions may need the PDF open beside the Markdown, because a table of inches is not the same as a geometric constraint.
Multi-column application notes sometimes still shuffle a caption. You look at the before/after on this page and you keep the original PDF in the same directory as spec.md. The agent can be told “if Markdown and PDF disagree, stop.” That instruction is only possible when both files exist.
This URL is not a lab meeting guide and not a medical journal club. It is not “explain this paper.” Students presenting Attention Is All You Need belong on a different scene later. Mixing those intents would steal this title from the people who pay for API volume.
Can Claude read PDFs? Sometimes, in some products, on some days. Claude Code, in the loop that edits your tree, reads files. Give it one.
A last practical note. Keep the excerpt and the Markdown side by side in the same folder so a reviewer can open both. If a pin name in spec.md does not appear in the PDF, stop and re-parse that page. Do not let the agent invent a package variant because a screenshot was blurry. Cursor, Claude Code, and Codex all fail the same way when the table never entered git. The query is “claude code read pdf.” The artifact is a small Markdown file you can diff. That is the whole product insertion on this page. Everything after — driver stubs, test names, comments that cite a current limit — is your repo, not this marketing host.
If you convert a stack of datasheets every week, skip the browser and use the parsing API. If you convert one part tonight, use the button on this page. Either way, the file that lands in git is Markdown with tables, not a screenshot in Slack. That is how Claude Code reads a PDF in practice: it does not. It reads the file you parsed.
Checklist before you @file the agent
Confirm the Markdown table matches the datasheet excerpt. Confirm units still look like math, not smashed words. Commit spec.md next to a short PDF slice, not the full vendor book. Then mention the file in Claude Code or Cursor. If the agent cites a current limit that is not in spec.md, stop and fix the file first.

