v2.3.2100% localFree and unlimitedDark + LightMobile-readyManifest V3MIT

The fastest, most private,
most beautiful PDF studio.

Read, annotate, merge, split, watermark and search — right in your browser. Silent instant boot, ultra-rounded design, 11 annotation tools, full-text search, stopwatch, counters and todos. No account, no upload, no limits. Free forever, open source, zero emojis in the docs by policy.

Get Heros PDF on GitHub Install in 30 seconds Report a bug

Everything inside

One extension. Four studios. Zero paywalls. The full printable catalogue lives in docs/FEATURES.md. The manual lives in docs/USER_GUIDE.md.

Viewer

Viewer that flies

Continuous + single-page, fit-width/fit-page/800% zoom, 2-up spread, auto-scroll, remember-last-page, encrypted-PDF unlock, drag-and-drop open.

Search

Search everything

Full-document index, 800-result cap, context snippets, case + whole-word toggles, prev/next match jumping with highlight ring.

Annotate

Annotate Studio

11 tools — highlight, pen, arrows, shapes, text, stamps, eraser — with undo/redo, auto-save per document, burn-into-PDF export, touch drawing.

Edit

Edit Studio

Merge, split with 1-3,5,8-10 ranges, delete, reorder, rotate, watermark, page numbers, fix page size. Unlimited, offline, MIT-ported engine.

Comfort

Eye comfort

Dark + Light UI plus Night / Sepia / Dim page modes, focus mode, copy-and-share page text, reduced-motion support.

Browser

Browser-native

Auto-opens file:// and https:// PDFs with separate toggles, right-click Open with Heros PDF, compact popup control center.

Mobile

Mobile-full

Drawer sidebar under 900px, zero hidden features under 640px — zoom, fit, rotate, edit, night mode and a scrollable quick-action row, touch drawing down to 360px.

Privacy

Private by design

No server, no analytics, no account. IndexedDB stores only your recents + annotations, on your device. Minimal permissions.

Speed

Engineered fast

Lazy render + 700px preload, epoch-guarded paints, DPR capped at 2, chunked sizing, silent boot — opens 1000-page PDFs instantly.

Tools

Productivity studio

Stopwatch with laps, unlimited counters, automatic reading tracker with streaks and goals, file + global todos. All auto-saved, all free. Press T.

How it works

Same Mermaid diagrams as the README. Copy any block into a Markdown viewer to re-render it.

1. System overview

Browser
  popup (toggles) --message--> background worker --redirect--> viewer tab
  viewer --uses--> vendor (pdf.js, pdf-lib, qpdf, cmaps)
  viewer --uses--> nevaipdf-ops (merge/split/rotate/watermark)
  viewer <--> IndexedDB (recents + annots)
  viewer + popup <--> chrome.storage.local (prefs)

2. Render pipeline (epoch-guarded)

Open (file/drop/URL/recent)
  -> docIdFor(name+size+hash) -> getDocument -> metadata
  -> baseSizes (page 1 fast, rest chunked) -> buildPages + observer
  -> visible? --yes--> renderPage: canvas + textLayer + linkLayer
  -> highlight + annot overlay -> rendered

3. Privacy: nothing leaves the device

Your PDF --> stays on device (blob: URL) --> renders in page
  --> recents + annots in IndexedDB (local only)
Your PDF - - NEVER - -> Internet

More diagrams (folder map, lifecycle, annotation engine, search engine, edit engine, responsive breakpoints) are in the README and docs/architecture.md.

Under the hood

Engineering notes for contributors: the resilience rules, the storage contract and the performance budget that keep it instant on 1000-page files.

Resilience — every error has a path

error -> type
  stale epoch        -> abort + retryRender once
  render cancelled   -> treat as normal, re-queue
  wrong password     -> unlock modal re-prompts
  CORS on URL fetch  -> hint: download then drag and drop
  file:// blocked    -> hint: enable file URLs permission
  missing vendor     -> fatal banner naming the file
  runtime error      -> global handler -> toast with the real message

Storage and backup flow

open document      -> recents + last page (IndexedDB)
draw or erase mark -> stroke JSON (IndexedDB, pruned to 60 docs)
settings/profile   -> prefs (localStorage)
tools tab actions  -> stopwatch / counters / tracker / todos (localStorage)
Hub -> Backup      => one JSON (format v4)
Hub -> Restore     => re-import (additive, version-tolerant)
BudgetTargetMechanism
Open 50-page PDFunder 1sSkeleton + progress bar, first size fast, chunked rest
Scroll jankZeroOnly visible pages render, 700px preload, content-visibility
Search on 2000 pagesResponsiveIndex once, cap 800 hits, list first 300
Memory per page1 canvasDPR capped at 2, thumbs about 150px wide
BootInstantBoot class disables all load animations

Deep dive: docs/architecture.md · docs/API.md · docs/TESTING.md

Documentation library

Nine pages plus the README. Everything is plain Markdown, printable, and emoji-free by policy (CI enforces it).

Roadmap

Shipped, in progress and planned. Vote with a thumbs-up on the feature request to move a version up.

VersionThemeStatusHeadline
2.0.0Manifest V3 rewriteReleasedService worker, dark + light, auto-open, context menu, popup
2.3.0 – 2.3.2Search, Edit, Ultra-round studioReleased (current)Outline + full-text search, merge/split/rotate, design system, silent boot
Current buildProductivity studio + mobile-fullOn mainStopwatch, counters, reading tracker, todos; no hidden controls on phones
2.4Forms and signaturesPlannedAcroform filling, drawn signature placement
2.5OCRPlannedOn-device OCR for scanned pages, searchable output
3.0DistributionPlannedWeb Store listing, Edge Add-ons, Firefox port

Release process, versioning rules and the timeline diagram live in docs/ROADMAP.md. Release notes template: .github/RELEASE_TEMPLATE.md.

How it looks

Real captures from the app (mock previews — replace the files in docs/screenshots/ with your own 1:1 anytime). The README shows the same images.

Heros PDF light mode
Light mode
Heros PDF dark mode
Dark mode
Heros PDF sidebar with search
Sidebar studios
Heros PDF annotate studio
Annotate Studio
Heros PDF edit studio
Edit Studio
Heros PDF on mobile
Mobile 360px

Install in 30 seconds

Works in Chrome, Vivaldi, Yandex Browser, Edge, Brave, Opera and Arc — any Chromium. Illustrated guide: docs/INSTALLATION.md.

1Clone / Download

git clone https://github.com/Ahmedbakr78/Heros_PDF.git or Download ZIP + unzip.

2Extensions page

Chrome chrome://extensions · Vivaldi vivaldi://extensions · Yandex browser://extensions · Edge edge://extensions.

3Developer mode

Turn the toggle ON (top-right), then Load unpacked and select pdf-studio-extension/.

4Pin + allow files

Pin the icon, then Details → Allow access to file URLs so local PDFs open automatically.

BrowserExtensions pageNotes
Google Chromechrome://extensionsReference target, everything works
Vivaldivivaldi://extensionsSame flow; disable built-in viewer to prefer Heros PDF
Yandex Browserbrowser://extensionsIf Developer mode is greyed out, use a portable build or open viewer.html
Edge / Brave / Opera / Arcedge://, brave://, opera://, arc://extensionsSame steps

git clone https://github.com/Ahmedbakr78/Heros_PDF.git
cd Heros_PDF
# your-extensions-page → Developer mode ON → Load unpacked → pdf-studio-extension/
# Details → Allow access to file URLs  (for file:// auto-open)
# Optional local preview (no install):
cd pdf-studio-extension && python3 -m http.server 8000
# → http://localhost:8000/viewer.html

Shortcuts

Full list is also in-app: More → Keyboard shortcuts. Full manual: USER_GUIDE.md.

KeysActionKeysAction
Ctrl+OOpen fileCtrl+FSearch
Left RightPrev / next pageHome EndFirst / last
+ - 0Zoom in / out / resetCtrl+BSidebar
Ctrl+ZUndo annotationF / RFit width / Rotate
Ctrl+PPrintEscClose dialog
SpaceScroll downShift+SpaceScroll up

Why Heros wins

Built-in viewers show pages. Web tools charge you. Heros does everything, locally, free.

Heros PDFChrome viewerTypical web tool
100% local / offlineYesYesNo (uploads)
Annotate + save (11 tools)YesNoPartial / paywalled
Merge / Split / WatermarkYes, unlimitedNoPartial / daily quota
Dark + Night + SepiaYes, 4 modesNoNo
Full-text search + outlineYesPartialPartial
PriceFree foreverFreeFreemium
Open sourceYes, MITNoNo

Topics and About

Copy-paste source: .github/GITHUB_META.md. No emojis anywhere.

FieldValue
DescriptionHeros PDF — fast, private, beautiful PDF viewer and editor. Read, annotate, merge, split, search. Dark + Light, mobile-ready, 100% local, free and unlimited.
Websitehttps://ahmedbakr78.github.io/Heros_PDF/
Topics (20)pdf, pdf-viewer, pdf-editor, pdf-annotator, chrome-extension, edge-extension, brave, manifest-v3, pdfjs, pdf-lib, qpdf, merge-pdf, split-pdf, annotate-pdf, dark-mode, ebook-reader, offline-first, privacy, open-source, javascript
Releasev2.3.2 — Ultra-Round Studio + notes from .github/RELEASE_v2.3.2.md + attached zip

FAQ

Thirty answers live in docs/FAQ.md. The top 8:

Is it really free?Yes — MIT-licensed, unlimited pages, merges and annotations, no watermark, no account.
Do my PDFs upload anywhere?No. Files stay on your device via blob: URLs. No analytics, no server.
Why won't file:// auto-open work?Enable Allow access to file URLs in chrome://extensions → Heros PDF → Details.
URL open says CORS error?Some hosts block cross-origin fetch. Download the file, then drag and drop it into the viewer.
Are annotations saved?Yes — per-document in IndexedDB, survives reload. Export burns them into the PDF.
Which browsers?Any Chromium (Chrome, Edge, Brave, Opera, Arc). Firefox port is on the roadmap.
Is todo.txt uploaded to the repo?No. It is deleted and git-ignored. Never commit private notes.
Are there emojis in the docs?No. Docs, website and templates are emoji-free by policy, enforced by CI.

Star it. Share it. Shape it.

Two seconds to star. Forever free because of you.