Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

PDF, Excel, CSV & Word

A DocGraph vault isn’t only HTML and Markdown. Drop a PDF, an Excel workbook, a CSV or a Word document into the folder and it becomes a first-class part of the vault: it opens in the app, its text is searchable, and the chat assistant can retrieve from it. These formats are read-only — DocGraph shows them, indexes them, and links to them, but doesn’t edit them.

A one-page PDF memo rendered in DocGraph's viewer, with the vault's file tree alongside it and the native PDF zoom and download controls at the bottom.

There is no import step. Copy the file into your vault folder — in Finder, from another app’s export dialog, or by dragging it onto the file tree — and it appears in the tree straight away, with a format badge (MD, PDF, XLS, CSV, DOC, TXT, RTF, JSON, WB, IMG) where an HTML note shows none at all. A scanned PDF’s badge reads Scan. Click it like any other file.

The file watcher picks up new files while the app is running, so you don’t need to reopen the vault or rebuild anything.

PDFs render in the system’s own PDF viewer, embedded in the document pane — real pages, real fonts, with the built-in zoom, page-fit and download controls. This is a genuine PDF render, not a text extraction, so layout, tables and images all appear as they do in any other PDF reader.

Excel workbooks (.xlsx, .xlsm, .xls) and OpenDocument spreadsheets (.ods) render as a read-only grid — one heading and one table per sheet, in sheet order:

A three-sheet Excel workbook rendered as read-only tables: a "Counts" sheet, a "Sites" sheet, and a "Notes" sheet, each under its own heading.

What you see is cell values as last saved by Excel — DocGraph reads the stored results, not the formulas. Formulas, charts, conditional formatting, colours and merged-cell layout are not reproduced. A banner at the top of the document says so and offers the next step: Import as Table makes an editable copy and opens it, and Open in its app hands the file to your Mac’s default app for it. Its × dismisses that kind of banner for this vault.

A CSV renders through the same grid, as a single unnamed sheet with its first row treated as the header:

A CSV of field survey records rendered as a table with Date, Site, Region, Species, Count, Observer and Verified columns.

.docx files open in a reader view — a centred prose column showing the document’s text and heading structure:

A Word document rendered as a centred reader view, with its headings styled as document headings and its paragraphs as prose.

This is text content only. Images, tables-as-laid-out, page geometry, fonts and styling from the original Word file are not reproduced, and the banner says as much. Its Open in its app button opens the file in your Mac’s default app for Word documents. It is designed for reading and searching the content of a Word document that someone sent you — not for reviewing its formatting.

Plain text (.txt, .text) and Rich Text (.rtf) files open in the same reader view. A text file keeps its line breaks, and each blank-line-separated block reads as a paragraph. Accented and non-Latin text reads correctly whether the file is UTF-8, UTF-16 (with a byte-order mark) or an older Windows encoding. No headings are guessed, so the Outline stays empty.

An RTF file shows its text with the formatting stripped, under a notice saying so, with Open in its app to open it in the app your Mac uses for RTF. Plain text gets no notice: the reader view is the file.

Spreadsheets, CSVs, Word, plain-text and RTF files take the same reading controls as a note: the Display & reading popover in the toolbar (text size, line spacing, font and full width). A PDF and an image don’t; use the PDF viewer’s own zoom. See Reading preferences.

A .json file opens in the <>Source editor only; the Edit pill is locked. You get JSON highlighting, folding by bracket, and Format document.

  • Comments and trailing commas (the tsconfig.json style) are accepted, and // and /* */ comments are coloured.
  • Errors are marked where they are. The first syntax error gets a red dot in the gutter and an underline; point at it for the reason, with line and column. ⌘⇧M opens the problems list and F8 jumps to the next error.
  • Format leaves a broken file untouched and moves the cursor to the error instead. On a valid file it keeps numbers as you wrote them (1.50 stays 1.50), and Windows line endings and a byte-order mark survive saving.

Read-only is the rule, with one deliberate exception: right-click an .xlsx, .xlsm, .xls, .ods or .csv in the file tree and choose Import as Table… to copy its rows into a managed DocGraph table, which is editable and can be queried and charted.

The file-tree context menu on a spreadsheet, showing "Import as Table…" among the file actions.

This creates a copy. The original file is untouched, and the two do not stay in sync afterwards. A workbook with several sheets becomes one table per sheet, plus a new page next to the file that embeds them; see Tables, Charts & Queries for what you can do with the result.

Text extracted from all of these formats goes into the same full-text index as your notes, so keyword search reaches inside a PDF’s text layer, a spreadsheet’s cells, and a Word document’s paragraphs:

Search results for "Ochre sea star" showing in-file matches inside a CSV and inside an Excel workbook, with the matching cells highlighted in context.

Spreadsheet matches show their row as pipe-separated cells, so you can see which record matched. PDF matches carry a Page N breadcrumb.

A scanned PDF has no text layer, so there is nothing to search until you make it searchable — see Scanned PDFs & Images.

The same extracted text feeds the chat assistant’s retrieval, so a vault-wide question can find and cite a passage from a PDF or a Word document exactly as it would from a note.

An ordinary link from a note reaches these files:

<a href="research/Coastal Survey — data sharing memo.pdf">the signed memo</a>

The link resolves, the target appears in the graph, and the note shows up in the memo’s Links panel, under In. Note that links only go one way: a PDF or spreadsheet has no outbound links of its own, so it always sits at the edge of the graph as a leaf.

FormatExtensionsHow it’s shownText indexed
PDF.pdfNative PDF renderYes — text layer only
Excel.xlsx, .xlsm, .xlsRead-only grid, one table per sheetYes
OpenDocument.odsRead-only gridYes
CSV.csvRead-only grid, single sheetYes
Word.docxReader view, text + headingsYes
Plain text.txt, .textReader view, blank lines as paragraphsYes
Rich Text.rtfReader view, formatting strippedYes
JSON.jsonThe <>Source editor, with folding and Format document (details)Yes
Images.png, .jpg, .jpeg, .gif, .webp, .svg, .avif, .bmp, .icoOpened for viewingOnly once you make it searchable
LimitValue
PDF text extractionFiles above 64 MB are shown but not indexed
Spreadsheet file sizeFiles above 64 MB are not read
Spreadsheet cells indexed50,000 cells total across all sheets
Word document64 MB file, 48 MB of uncompressed document text
Dragging files onto the tree256 MB per file

Exceeding a limit affects indexing, not viewing — a very large PDF still opens, it just won’t be searchable.

A scanned PDF has no text to find — until you ask. DocGraph reads a PDF’s text layer, and a PDF that is really a photograph of a page has none, so it displays perfectly and returns nothing in search. Its badge reads Scan, and opening it shows a strip offering Make Searchable, which reads the text on your Mac. See Scanned PDFs & Images.

There is no editing, and no round-trip. The <>Source button is disabled on these formats (its tooltip reads “View-only document — no editable source”), and Edit (⌘E) just shows the reader view. To change the file, edit it in the app that owns it and save it back into the vault — DocGraph picks up the change automatically. Import as Table copies data out; nothing writes back.

The per-file AI actions read the same text search does. Right-clicking a PDF, Excel, Word or CSV file offers Summarize, Suggest tags and Ask AI about this. These run on the file’s extracted text — the same projection that feeds search, chat and the link graph — so a summary of a spreadsheet is about its cells and a summary of a PDF is about its pages.

Other formats are invisible, not broken. .doc (the pre-2007 Word format), .pptx, archives, and audio and video files are not listed in the file tree. They can sit in the vault folder and can be linked to from a note without the link being reported as broken — they just can’t be opened from the tree. Audio and video are the exception worth knowing: they don’t appear in the tree, but a note that embeds one with <audio controls> or <video controls> plays it, streamed in chunks.