What Claude Code Can Read: PDFs, Images, Spreadsheets and the Web

Claude Code reads PDFs, images, notebooks and any text file natively, reaches spreadsheets and Word files through scripts, and searches and fetches the web with your permission. Format by format: how to hand it over, and the limit that applies.

8 min read

Yes, Claude Code reads PDFs. Its Read tool takes a short PDF whole and a longer one in page ranges of up to 20 pages at a time. The same tool reads images and screenshots as pictures Claude can see, Jupyter notebooks with their outputs, and every plain-text format, including CSV. Excel and Word files are not on that list, so Claude reaches them by writing and running a small script. It searches and fetches web pages with two separate tools that ask your permission. Video and audio it cannot take in at all. The details, and the limit for each, follow.

The short answer, format by format

  • Text and code of any kind, including Markdown, JSON, HTML and CSV: yes, directly.
  • PDFs: yes, directly. Whole if short; in ranges of up to 20 pages when longer than 10.
  • Images and screenshots (PNG, JPG and other formats): yes, directly, as images. Large ones are downscaled.
  • Jupyter notebooks: yes, directly, every cell with its outputs. Files over 100 MB are refused.
  • Excel (.xlsx): through a script, such as Python with pandas or openpyxl.
  • Word (.docx): through a script or a converter that turns it into text.
  • Web pages and search results: yes, with the WebFetch and WebSearch tools, which ask permission by default.
  • Video and audio: no. Extract frames or a transcript first.
  • Very large files: in pages. Claude reads the first part and asks for more by line offset.

PDFs

The tools reference (opens in a new tab) says Claude reads short .pdf files whole, and for a PDF longer than 10 pages it reads in ranges with a pages parameter, such as "1-5", up to 20 pages at a time. You do not set that parameter yourself; give Claude the path and say what you need, and it chooses the ranges. On a 200-page manual that means at least ten reads, so point it at the chapter you care about (“read pages 40 to 60 of docs/manual.pdf and list every configuration flag”) rather than asking for a summary of the whole thing.

In the terminal you give it a path, or drag the file into the window. In the desktop app you can also attach a PDF with the + button. If you sign in with a claude.ai account, the skills documentation (opens in a new tab) says Anthropic’s built-in pdf skill syncs into your sessions, which adds procedures for jobs the Read tool does not do, such as extracting tables or filling forms.

Images and screenshots

There are three ways to hand Claude Code an image, set out in the common workflows page (opens in a new tab): drag and drop it into the Claude Code window, copy it and paste it into the prompt, or give its path (“what is wrong in this screenshot: ./bug.png”). Pasting uses Ctrl+V, Cmd+V in iTerm2, or Alt+V on Windows and WSL, and inserts an [Image #1] chip you can refer to in the prompt. You can use several images in one conversation.

The limit is resolution. Claude Code resizes and recompresses large images to fit the model’s image limits, so a full-screen capture from a large monitor arrives downscaled, and an image still over 500 KB after that is re-encoded as a lower-quality JPEG. If Claude misreads small text or a thin line in a big screenshot, crop the region first, or ask Claude to crop it with ImageMagick through Bash. Screenshots of an error, a design mockup or an architecture diagram all work; a photo of a whiteboard works if the writing is legible to you at the same size.

Spreadsheets: CSV yes, Excel through a script

A CSV is text, so Claude reads it like any other file, subject to the size limit below. An .xlsx file is a compressed binary format, and the Read tool’s list of supported types (text, images, PDFs, notebooks) does not include it. The dependable route is to let Claude write a short script: Python with pandas or openpyxl to load the workbook, list the sheets and print the rows it needs, or to export each sheet to CSV. That needs the library installed and the Bash tool allowed, and it has an advantage over reading the cells directly: the script can be rerun on next month’s file and checked.

For a large sheet, ask for a profile first (row count, columns, blanks, odd values) rather than the data itself, so the context window holds a summary, not ten thousand rows. The built-in xlsx skill also syncs to claude.ai-signed-in sessions, and gives Claude a ready procedure for working with workbooks.

Word files

A .docx file is also a compressed format the Read tool does not list, so Claude cannot open it the way a word processor does. Convert it to text first, either yourself (save as Markdown or plain text) or by asking Claude to run a converter or a Python library that extracts the text. The same goes for editing: Claude’s Edit tool makes exact text replacements in text files, so for a Word document it either edits a text version or writes a script that changes the document. Check the result in Word before you send it anywhere.

Web pages and web search

Claude Code has two web tools, and they do different jobs. WebSearch runs a query and returns result titles and URLs; it does not open the pages. It can make up to eight backend searches per call, can be limited to or kept away from particular domains, and a session can make at most 200 WebSearch calls, counted across subagents too. It is not available on Amazon Bedrock. WebFetch opens one URL, converts the page to Markdown, and runs your question against it with a small, fast model, so Claude usually receives an answer about the page rather than the page itself.

  • WebFetch is lossy by design. If it says a page does not mention something, the extraction prompt may simply not have asked. Ask again more specifically, or have Claude use curl for the raw page.
  • It refuses localhost and any host name without a dot. Use curl through Bash for local servers.
  • Responses are cached for 15 minutes, and a page that takes over five minutes to download fails.
  • In Manual and acceptEdits modes, WebFetch asks before each fetch, except for domains your rules already allow and a built-in set of documentation sites.

Permissions are set per tool. Per the permissions documentation (opens in a new tab), a WebFetch rule takes a domain, such as WebFetch(domain:docs.python.org), while WebSearch rules take no specifier: you allow or deny the tool as a whole. Answering “Yes, and don’t ask again” to a fetch prompt saves a domain rule to .claude/settings.local.json. Treat everything fetched as material to read, never as instructions to follow; a page can contain text written to steer an agent.

.claude/settings.json
{
  "permissions": {
    "allow": ["WebSearch", "WebFetch(domain:docs.python.org)"],
    "deny": ["WebFetch(domain:pastebin.com)"]
  }
}

Video and audio

Not supported. The Read tool’s documented types are text, images, PDFs and notebooks, and Claude cannot watch a video or listen to a recording. If you need Claude to work with one, turn it into something it can read first: a transcript from a speech-to-text tool, or still frames extracted with a tool such as ffmpeg, which Claude can then read as images. The desktop app can open a video in its Browser pane, but that is for you to watch, not for Claude.

Jupyter notebooks

Notebooks are read natively: an .ipynb file comes back with all its cells and their outputs, including code, Markdown and visualisations. Claude Code refuses to read a notebook over 100 MB and tells Claude to read a slice of cells with a shell command instead. For changes, the NotebookEdit tool edits one cell at a time, replacing, inserting or deleting it, and permission rules for it use the same Edit(...) paths as ordinary files.

Very large files

Every read has a token limit. When a whole file is bigger than that, Read returns the first part with a PARTIAL view notice telling Claude how much it received and how to read the rest with an offset and limit. If a single line is too long to fit, as in minified JavaScript or a one-line JSON export, Claude is told to use Grep to find what it needs instead. You can raise the limit with the CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS environment variable, listed in the environment variables reference (opens in a new tab), but a bigger read fills more of the context window. For a 2 GB log, the better request is “grep for the errors between 02:00 and 03:00 and show me those lines”. Read also does not open folders; Claude lists them with a shell command.

Keep what it read attached to the work

Reading is the easy half. The harder half is keeping what Claude found where the next person, or the next session, can see it. A summary of a 60-page contract that lives only in a transcript is gone when the session ends. With a fenbs board connected over MCP, ask Claude to put the findings where they belong: a comment on the task the reading was for, with the page numbers and URLs it used, through fenbs_comment, or a new task for each problem it found with fenbs_create_item, as a bug, feature or enhancement. The comment is recorded under the assistant’s name, so later you can tell which notes a person wrote and which Claude did. For the jobs themselves, such as research notes, document edits and data cleaning, see using Claude Code for non-coding tasks.

Related

Connect a board: the Claude Code integration. Keeping big reads from eating the session: reduce Claude Code token usage and the AI context window. Why fetched pages are a risk: indirect prompt injection.

Questions people ask.

Can Claude Code read PDFs?

Yes. The Read tool reads a short PDF whole. For a PDF longer than 10 pages it reads page ranges of up to 20 pages at a time. Give Claude the file path, drag the file into the terminal, or attach it in the desktop app.

Can Claude Code read images and screenshots?

Yes. Drag an image into the window, paste it with Ctrl+V (Alt+V on Windows and WSL, Cmd+V in iTerm2), or give its path. Large images are downscaled before Claude sees them, so crop to the area that matters when detail is small.

Can Claude Code search the web?

Yes. WebSearch returns result titles and URLs, and WebFetch reads a specific page. Both need permission by default. WebFetch rules can allow single domains; WebSearch is allowed or denied as a whole. WebSearch is not available on Amazon Bedrock.

Can Claude Code open Excel or Word files?

Not directly. The Read tool handles text, images, PDFs and notebooks. For Excel and Word, Claude writes and runs a script that uses a library for the format, or you export the file to CSV or text first.

Start with one thing.

There is nothing to set up first. Write one line and you’ve started.