English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Français · Deutsch · Español
Folio is a local-only macOS PDF toolbox published by TGthms. Pages live in one workspace. Tools are modes over that workspace. Files never leave this Mac. Export never overwrites an original unless you confirm.
Requires macOS 15+ and Xcode 16 / 26 to build.
Drop PDFs or images into a single workspace, arrange pages, pick a job, then export.
- Merge, split / extract, rotate, reorder, delete
- Compress
- Watermark and page numbers
- Images ↔ PDF
- Protect and unlock
- Extract text and OCR
- True redaction (redacted pages are rasterized)
- Edit: the same scrollable PDF view as Read. Highlight and underline follow a text selection; text is typed on the page; draw and crop use a drag; marks can be moved or deleted. They are PDF annotations and burn on Save / Export. Existing PDF text is not rewritten.
- Read mode scrolls every page in the workspace
- 30 interface languages, including RTL; language follows macOS
- Sandboxed. No network entitlement. Work stays on this computer.
The running app is named Folio. This repository is folio.
Open the project in Xcode:
open Folio.xcodeproj
Or build the app from the terminal:
./scripts/build-app.sh
open build/Folio.app
The script regenerates Folio.xcodeproj and the string catalog, then produces build/Folio.app.
Drop PDFs or images onto the window. Arrange pages, pick a job in the sidebar, then Export….
⌘Oadd files ·⌘Ssave ·⇧⌘Sexport ·⌘Pprint⌘1Pages ·⌘2Read (scrolls the whole workspace)⌘]/⌘[next / previous page ·⌥⌘↑/⌥⌘↓first / last- arrows,
j/k, Page Up/Down, Home/End ⌘R/⇧⌘Rrotate ·⌘⌫remove from workspace ·⌘Aselect all pages⌘Iinspector ·⌘Kcommand palette ·⌘Zundo
Language follows System Settings → Language & Region. Override it in Settings; the interface updates immediately.
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
xcodebuild -project Folio.xcodeproj -scheme Folio -destination 'platform=macOS' test
./scripts/verify-export-paths.sh
scripts/run-protect-write-driver.sh compiles shipped PDFIO.swift into build/protect-write-driver and writes a passworded PDF. FolioLogicTests execs that driver — PDFKit encrypt deadlocks inside the Folio.app XCTest host, so protect is not run in-process there.
MIT © 2026 TGthms