A fast, modern and privacy-respecting desktop PDF workstation. View, annotate, edit text, sign, organize and protect PDFs — entirely on your own computer.
- Why GlossPDF
- Screenshots
- Features
- Keyboard shortcuts
- Installation
- Development
- Project structure
- How editing works
- Known limitations
- Contributing
- Code signing policy
- License
- Local-first & private. Documents are processed on your machine. No account, no cloud, no telemetry. Works fully offline.
- Familiar workflow. Tab-based reader with thumbnails, bookmarks, search and a tool panel, in the spirit of the classic desktop readers.
- Real editing, not just viewing. Annotate, edit existing text, place signatures anywhere, reorganize pages, merge, split, watermark, compress and encrypt.
- Multilingual. Seven interface languages with automatic detection of the system language.
- Multi-tab interface, drag & drop to open, recent documents list
- Open PDFs from your file manager (double-click or Open with); GlossPDF can be set as the default PDF app
- Clickable links: web addresses open in your browser, in-document links jump to the page
- Printing with annotations included
- Page thumbnails, bookmarks outline and full-text search with on-page match highlighting
- 15 zoom steps from 8.33 % to 800 %, Fit Page, Fit Width,
Ctrl+ wheel zoom - Password-protected PDFs, interactive form fields (text, checkbox, dropdown)
- Light / dark theme, full-screen mode
- Text markup: highlight, underline, strikeout (select text with the tool active)
- Sticky notes, freehand pen, rectangles and text boxes
- Annotations are written as standard
/Highlight,/Underline,/StrikeOut,/Text,/Inkand/Squareannotations with appearance streams, so they render the same in other PDF viewers - Undo / redo, a comments sidebar, select / move / delete
- Comments already in the file, including ones added in Acrobat, Preview or other apps (highlights, sticky notes, pen, rectangles), show up in the sidebar and can be edited or deleted; untouched comments are kept exactly as they were
- Redact: draw boxes over sensitive content; on save the content underneath is permanently removed from the file (see limitations)
- Choose Edit Text, click a line of text and type the replacement
- Background and text color are sampled from the page so the edit blends in
- Edits stay re-editable (double-click) until you save
- Create a signature by drawing, typing (handwriting-style fonts) or importing an image (white background can be removed automatically)
- Save signatures for reuse (stored locally in the app)
- Place anywhere: click on any page to drop it, drag to move, use the corner handle to resize,
Deleteto remove
- Organize pages: reorder, rotate, delete, insert blank pages, extract
- Merge several PDFs, split by page ranges
- Rotate the whole document (saved into the file)
- Watermark & stamps (Unicode text supported)
- Insert images, export pages as PNG / JPEG
- Compress: three presets (light, balanced, strong) or custom image resolution and JPEG quality; optional grayscale images and removal of metadata, embedded thumbnails, attachments and JavaScript. Shows how many images were optimized and objects removed; text and vector graphics are untouched
- Password protection with AES-256
English, Türkçe, Deutsch, Français, Español, العربية (RTL) and 中文. The language follows your operating system by default and can be switched from the toolbar.
| Action | Shortcut |
|---|---|
| Open / Save / Save As | Ctrl+O / Ctrl+S / Ctrl+Shift+S |
Ctrl+P |
|
| Close tab | Ctrl+W |
| Find / next / previous | Ctrl+F / F3 / Shift+F3 |
| Zoom in / out | Ctrl++ / Ctrl+- |
| Fit page / actual size / fit width | Ctrl+0 / Ctrl+1 / Ctrl+2 |
| Rotate clockwise / counter-clockwise | Ctrl+Shift+R / Ctrl+Shift+L |
| Undo / redo | Ctrl+Z / Ctrl+Y |
| Delete selected annotation or signature | Delete |
| Leave Edit Text / signature placement | Esc |
| Full screen | F11 |
| Shortcut cheat sheet | F1 |
Download the installer for your platform from the Releases page:
| Platform | Package |
|---|---|
| Windows | GlossPDF-Setup-x.y.z.exe (NSIS installer) |
| macOS | .dmg / .zip (x64 and arm64) |
| Linux | .AppImage / .deb |
The installers are not code-signed yet, so Windows and macOS show a warning the first time you open GlossPDF. The app is open source and the releases are built by GitHub Actions from this repository. See the Code signing policy.
- Windows (SmartScreen): click More info → Run anyway.
- macOS (Gatekeeper): right-click the app and choose Open, then confirm. If macOS says the app is damaged, run
xattr -cr /Applications/GlossPDF.appand open it again. - Linux: no warning. Make the AppImage executable first (
chmod +x GlossPDF-*.AppImage) or install the.debwithsudo apt install ./glosspdf_*_amd64.deb.
Requirements: Node.js 18+ and npm.
git clone https://github.com/mesubasi/glosspdf.git
cd glosspdf
npm install
# Start the desktop app with hot reload
npm run dev# Type-check, bundle and build installers (output in ./release)
npm run build# Publish a new version: bumps the patch version, commits, tags and pushes.
# The tag triggers the release workflow; installed apps pick up the update on next launch.
npm run releaseWindows note: if
vite buildfails withremove ...\esbuild-... Access denied, your antivirus is locking esbuild's temporary file for bundles larger than 1 MB. Add the project folder and your temp folder to the antivirus exclusions and rebuild.
electron/ Main process and preload bridge (open / save / print)
src/
components/
annotations/ Annotation layer, toolbar, sticky-note popover
layout/ Header toolbar, sidebars, tab bar, status bar
modals/ Signature, organize, merge, split, watermark, protect, ...
pdf/ Document viewer, page renderer, search bar
services/
pdfRenderService pdf.js rendering (canvas, text layer, form layer)
pdfEditService pdf-lib operations (save annotations, merge, split, encrypt, ...)
textEditUtils Color sampling for Edit Text
store/ Zustand store (tabs, tools, undo/redo, modals)
i18n/ 7 locale dictionaries + system-language detection
public/ pdf.js worker, Liberation Sans
docs/screenshots/ Images used in this README
Stack: Electron 44 · React 19 · TypeScript · Vite 8 · Tailwind CSS 4 · Zustand · pdfjs-dist (rendering) · pdf-lib (editing) · electron-builder (packaging).
Edits are kept as lightweight objects on top of the page and are written into the PDF only when you save:
- Markup (highlight, underline, strikeout, note, pen, rectangle) becomes a standard PDF annotation with an appearance stream.
- Text boxes, signatures and text edits are drawn into the page content with an embedded Unicode font (Liberation Sans), so characters such as
ş ğ İ ı ö ü çare preserved. - Edit Text covers the original text run with a background-colored rectangle and draws the new text on top (see limitations).
- Page rotation, reordering and similar structural changes first flush any pending edits into the file, so nothing is left attached to the wrong page.
- Edit Text replaces, it does not reflow. The original glyphs are covered, not removed from the file, so the old text can still be found by text extraction or copied from other tools. Do not use it to hide sensitive information; use Redact instead. The replacement uses Liberation Sans rather than the document's original font, and edits apply to one text run (usually a line) at a time.
- Redact converts every page that has a redaction into an image (the rest of the document is untouched): text on those pages can no longer be selected or searched, form fields on them are removed, and the document's accessibility tags are dropped because they can hold a copy of the hidden text.
- Existing comments: free text boxes, circles, lines, stamps and other comment types from other apps are shown but cannot be edited yet. Replies to a comment are not listed; deleting the comment deletes its replies. An edited comment is rewritten as a GlossPDF annotation, so its original custom appearance is replaced.
- Signatures are visual signatures (an image on the page), not cryptographic digital signatures.
- Password protection is applied when you export / apply it; an encrypted document can't be edited further in the same session.
- Text typed into text boxes and edits supports Latin, Cyrillic and Greek scripts; Arabic, Chinese and other scripts need a different embedded font.
Issues and pull requests are welcome.
- Fork the repository and create a feature branch.
- Run
npx tsc --noEmitbefore committing — the project must type-check. - When you add a UI string, add the same key to every file in
src/i18n/locales/. - Open a pull request describing the change and how you tested it.
Free code signing provided by SignPath.io, certificate by SignPath Foundation.
Only Windows release binaries built by the release workflow from a tagged commit of this repository are signed.
Team roles
Changes from outside contributors are reviewed by a reviewer before they are merged. Every signing request is approved manually by an approver.
Privacy policy
This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it. The only network connection it makes is:
- Update checks: on launch and when you click Check for updates, the app reads the latest release information from GitHub Releases and, if allowed, downloads the update from there. See GitHub's privacy statement.
Your documents are never uploaded anywhere.
Copyright (C) 2026 GlossPDF Contributors
GlossPDF is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed WITHOUT ANY WARRANTY; see the license for details.
Releases up to and including v1.0.8 were published under the MIT License, and that grant still applies to those versions.
Bundled third-party assets: pdf.js (Apache-2.0), pdf-lib (MIT), Liberation Sans fonts (SIL OFL 1.1, see public/fonts/LICENSE_LIBERATION).
The GlossPDF name and logo are not covered by the GPL or any other license in this repository. Forks and modified builds must be published under a different name and with a different logo. You may still state that your project is based on GlossPDF.







