Folio
A fast, clean PDF reader for Windows, macOS, and Linux. Read, highlight, annotate, sign, and ask AI about your documents. Free and open source, with no Folio account required.
!Folio with the Ask AI panel open, answering a question about the document with page citations
| Highlights and notes | Search | | --- | --- | | !Color highlights in a document, with their notes in the sidebar | !Searching a document in the dark theme, with every match highlighted and a list of matching pages |
Download
| Platform | Download | Updates | | --- | --- | --- | | Windows 10/11 (64-bit) | Folio-Setup.exe | Automatic | | macOS 12 or later (Apple Silicon and Intel) | Folio-mac.dmg | Folio tells you when a new version is out | | Linux: Ubuntu, Debian, and derivatives (64-bit) | Folio-linux-amd64.deb | Automatic, with your system updates (apt) | | Linux: other distributions (64-bit) | Folio-linux-x86_64.AppImage | Automatic |
All releases · Changelog · Prefer not to install on Windows? Folio-Portable.exe on the release page runs as-is (it doesn't auto-update).
Folio's builds aren't signed with paid developer certificates yet, so the first launch needs one extra step:
- Windows: if SmartScreen warns, choose More info → Run anyway.
- macOS: open the DMG and drag Folio to Applications. The first time you open it, macOS says it can't verify the
- Linux (.deb):
sudo apt install ./Folio-linux-amd64.deb, then open Folio from your applications menu. The
sudo apt update && sudo apt upgrade). Copies installed from a .deb before 1.9 need the new .deb installed once.
- Linux (AppImage): make it executable (
chmod +x Folio-linux-x86_64.AppImage) and run it. AppImages need FUSE 2:
sudo apt install libfuse2t64 on Ubuntu 24.04 or later, libfuse2 on older releases.
Or build Folio yourself from source (below).
Features
Open PDFs and web links
- Document tabs. Pick or drop several PDFs together, or choose More → New tab. The tab strip appears beneath
- PDF URLs: choose Open from URL (
Ctrl+Shift+O), or drop a link or paste it withCtrl+Voutside a text
- Webpage to PDF: use the same URL workflow for a webpage. Folio converts it into a PDF with selectable text,
- Word documents to PDF: open a
.docxor.docfile the same ways as a PDF (Open with → Folio, the file
.docx (text, headings, lists, tables, and images, in a simpler layout). .doc files need Word or LibreOffice,
except on macOS. Installing Folio adds it to Open with for Word documents without making it their default app.
- Password-protected PDFs: enter the password to read and annotate a protected document. These documents are not
- Sample document: try the built-in tour from the home screen without finding a PDF first.
Read and navigate
- Continuous scrolling with selectable text, previous/next controls, and a page-number field for jumping directly
- Pages and Outline tabs: browse page thumbnails or the PDF's existing outline/bookmarks; hide the sidebar when
- Personal bookmarks: click the ribbon beside a page number in Pages to save or remove a bookmark without
- Reorder pages from either sidebar tab. Drag thumbnails or enter a new position, then save and open the reordered PDF copy.
- Search as you type: match case or whole words, see the current match and total count, browse per-page snippets
Enter / Shift+Enter.
- Flexible views: fit to width, fit to page, automatic sizing, preset zoom levels, zoom buttons,
Ctrl+wheel/
- Focus mode: press
Ffor distraction-free, fullscreen reading; pressEscto return. - Light and dark themes, plus an independent ⋯ → PDF dark mode setting that dims bright pages while keeping
Edit existing text and images
Choose Edit mode, then click the text you want to change and type on the page. Press Enter or click outside the line to apply it. Esc cancels typing. Clear a line to delete it.
Click an embedded picture and choose Replace image… to select a PNG or JPEG. You can leave Edit mode to read your changes or use Save copy to export and open the edited PDF.
Open More → Version history to review your changes. Saving a changed copy keeps the original PDF and a numbered version on this device. Text edits show the old and new wording, and image replacements show the filename and page. Open or download an earlier version from the panel. History is available for unencrypted PDFs up to 50 MB and can be cleared per document.
Text keeps its original font and position. Longer replacements can overlap neighboring content, so check the page after applying a change. Only characters available in that font can be used. Scanned words, outlined lettering, and objects inside grouped artwork cannot be edited as text. Image replacement supports embedded image objects on pages without inline image data. The editor works with unsigned, unencrypted PDFs.
Highlight, draw, and take notes
- Select text in scans. Folio starts recognizing English text in the background when you open a PDF.
- One-click highlights: select text, then choose yellow, green, blue, pink, or red from the selection toolbar;
H applies the current highlight color.
- Choose Highlight in the toolbar to mark each passage in the current color as soon as you select it.
Esc to return to reading.
- Notes on passages: type into the selection toolbar and press
Enterto highlight with a note, or pressN
- Edit existing highlights: click one to recolor it, edit its note, ask AI about the passage, or remove it.
- Draw on a page: choose Draw (
D) for a freehand pen, rectangle, oval, or arrow. Pick a color, then drag
- Text boxes: choose Text (
T) to add text to a page, using the same ink palette. - Undo and redo annotation edits with the usual keyboard shortcuts; choose Done,
V, orEscto leave a
- Notes tab: review highlights, their notes, and text boxes; click an entry to jump to it, edit a highlight's note,
- Export reading notes: in Notes → Export, copy Markdown or save a JSON file. JSON includes your notes,
- Automatic local saving: highlights, notes, drawings, and text boxes return when you reopen an
Add handwritten signatures
Choose Sign in the toolbar to add a signature.
- Capture on paper: sign with dark ink on white paper, then use your camera or upload a PNG, JPEG, or WebP photo.
- Clean up the image: crop to the signature and adjust ink sensitivity to remove the paper background. Capture
- Suggested placement: Folio checks the current page for empty PDF signature fields and likely signature labels,
- Preview and position: review the actual page, pick a suggestion or place the signature manually, and adjust its
- Explicit approval: nothing is added until you click Approve and add signature. Signatures are visual stamps,
- Optional reuse: choose to remember a signature on this computer; remove the saved image in
Ask AI about a document
- Bring your own subscription: use Sign in with ChatGPT or your Claude subscription through
- Whole-document or passage questions: open the Ask AI panel from the toolbar, select text and choose Ask AI,
- Streaming answers with clickable page citations that jump back to the source page.
- Copy response copies a finished AI answer with its Markdown formatting and page citations.
- Rendered mathematics: inline and display LaTeX equations, with wide equations scrolling within the chat panel.
\( ... \), \[ ... \], $x$, and $$ ... $$; existing saved answers render too.
- Provider and model selection, a stop button for an in-progress answer, and a + button to start a fresh
- Per-document history: conversations are saved on this computer and restored when you reopen that document,
- Account settings: choose your default provider, sign in to or out of ChatGPT, and check Claude Code's connection
Ask AI is optional and desktop-only. See Using Ask AI for setup and Privacy for what is sent.
Inspect images
- Click a PDF image and choose View larger for a high-resolution, full-window view.
- Switch between Fit to window and Actual size, or copy the image to your clipboard.
- Choose Open in browser when an image has a web address. Images in converted webpages retain their original
Pick up where you left off
- Recent library: keep up to eight recently opened PDFs with thumbnail previews and the last page read; reopen
- Startup restore: reopen the last active document automatically when it is still in the recent library.
- Reading state: remember each document's page, scroll position, zoom, rotation, sidebar visibility, and two-page
- Window state: restore the desktop window's size, monitor position, and maximized state.
Save, print, and inspect
- Save a copy (
Ctrl+S) exports a PDF with page annotations, including highlights and attached notes, drawings,
- Print (
Ctrl+P) prints the current document with its page annotations. - Document info shows available metadata: filename, title, author, subject, page count and size, file size,
Settings and updates
Open ⋯ → Settings or press Ctrl+, for appearance, night reading, AI accounts and defaults, remembered signatures,
and updates. About Folio shows the version, installed/portable edition, and installation location, with a shortcut
to open that folder.
- Automatic updates on or off: the preference survives restarts. Turning it off stops background checks/downloads
- Installed Windows: updates download in the background and install silently on exit, or when you choose
- Linux AppImage: downloads updates and replaces the AppImage. Linux .deb: updates through the signed apt
- macOS: current unsigned builds notify you and offer the download; self-installing updates require a signed
- Visible update status: checking, download progress, update-ready prompts, and errors are shown in the app.
Keyboard shortcuts
On macOS, use ⌘ wherever this table says Ctrl. Press ? with a document open for in-app help.
| Action | Shortcut |
| --- | --- |
| Open a PDF / open a URL | Ctrl+O / Ctrl+Shift+O |
| New tab / close tab | Ctrl+T / Ctrl+W |
| Next tab / previous tab (Control on all platforms) | Control+Tab / Control+Shift+Tab |
| Find / next match / previous match | Ctrl+F / Enter / Shift+Enter |
| Highlight selection or enter Highlight mode / write a note | H / N |
| Remove a clicked highlight | Delete |
| Select / draw / add text | V / D / T |
| Undo / redo annotation edits | Ctrl+Z / Ctrl+Shift+Z or Ctrl+Y |
| Save a copy / print | Ctrl+S / Ctrl+P |
| Zoom in / zoom out / reset zoom | Ctrl++ / Ctrl+- / Ctrl+0 |
| Toggle sidebar | Ctrl+\ |
| Rotate / toggle two-page view | R / 2 |
| First page / last page | Home / End |
| Focus mode / leave focus or current tool | F / Esc |
| Settings / keyboard help | Ctrl+, / ? |
Current limits
- Automatic OCR adds a selection layer in the reader. The source PDF stays intact. Document-wide search,
- Ask AI uses extracted text, not page images, and includes up to about 400,000 characters of document text. Long
- Folio opens PDFs up to 300 MiB and 10,000 pages. Webpage conversion uses a separate session, so pages behind a
- On upgrading from 1.10.8 or earlier, Recent keeps the stored PDFs and rebuilds their previews when opened.
- Automatic local saving is not cloud sync or a replacement for exporting a PDF copy. Password-protected documents
Using Ask AI
Open Ask AI with the sparkle button in the toolbar, or select text and choose Ask AI in the pop-up toolbar. Then pick a provider at the top of the panel:
- ChatGPT: click Continue with ChatGPT and sign in in your browser. Questions use your ChatGPT plan (Go, Plus,
- Claude: install Claude Code, run
claudeonce in a terminal, and sign in with
Ask AI is available in the desktop app only, not the browser version.
Privacy
Folio requires no Folio account, has no analytics or telemetry, and never uploads your documents on its own. It makes network requests only to:
- check GitHub for updates (installed copies; can be turned off in Settings),
- open a link you give it (a webpage is loaded in a hidden, sandboxed window with its own temporary session, so no
- answer a question you ask in Ask AI. Only then, the document's text (up to about 400,000 characters), any passage
For ChatGPT, Folio stores its sign-in tokens in its data folder (below, under ai), encrypted with the system's
credential protection (Windows data protection, the macOS Keychain, or the Linux secret store; if a Linux desktop has
no secret store, you sign in again each time Folio starts), and never exposes them to the page. For Claude, Folio runs your own Claude Code with every tool disabled;
it never sees or stores your Claude credentials. The question's context is written to a temporary file for Claude Code
and deleted as soon as the answer finishes. Each document's Ask AI conversation is saved with it on this computer (except for password-protected documents) and
is there when you reopen the document; the + button in the panel starts over and deletes it.
Stored locally in your user profile (%APPDATA%\Folio on Windows, ~/Library/Application Support/Folio on macOS,
~/.config/Folio on Linux): recently opened PDFs and their thumbnails (up to 8,
removable from the home screen with Clear all; password-protected PDFs are never kept), highlights, notes, and
Ask AI conversations for each document (except password-protected ones), reading positions, preferences, and, only if you choose to remember
it, your signature image. Apart from the ChatGPT sign-in, this data isn't encrypted, so anyone with access to your
user account can read it.
Building from source
Requires Node.js 22 or newer.
npm install
npm run app # build and run the desktop app
npm run smoke # end-to-end check: launches the built app and exercises the basics
npm run dev # browser version with hot reload at http://localhost:5173
npm run dist:win # on Windows: release/Folio-Setup.exe and release/Folio-Portable.exe
npm run dist:mac # on macOS: release/Folio-mac.dmg (universal: Apple Silicon and Intel)
npm run dist:linux # on Linux: release/Folio-linux-x86_64.AppImage and release/Folio-linux-amd64.deb
Each platform's installers are built on that platform; GitHub Actions builds all three for every release. If your
terminal has ELECTRON_RUN_AS_NODE=1 set, unset it first.
How it's put together
src/: the reader UI (React + TypeScript, built with Vite) on top of pdf.js.
markup.ts saves and restores highlights and notes, NotesPanel.tsx and Selection.tsx are their UI, and
AiPanel.tsx is the Ask AI panel.
electron/: the desktop shell for Windows, macOS, and Linux.main.cjsserves the built app fromdist/over a
app:// protocol with a strict Content Security Policy, runs the page sandboxed with context isolation, opens
PDFs from the file manager, keeps a single window, downloads links, and handles updates. webpage.cjs converts
webpages to PDF. ai.cjs runs Ask AI (ChatGPT
sign-in and requests, and Claude Code) so credentials never reach the page.
scripts/release.mjsand.github/workflows/release-build.yml: the release pipeline (see
scripts/smoke-test.mjs is the cross-platform smoke test CI runs.
scripts/screenshots.mjs retakes the screenshots in this README (npm run build, then node scripts/screenshots.mjs).
Contributing
Bug reports and pull requests are welcome; see CONTRIBUTING.md. To report a security issue privately, see SECURITY.md.
License
MIT. Folio includes third-party software under its own licenses; see THIRD_PARTY_NOTICES.md.