TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기PDF and image tools that never upload your files — Windows desktop app + browser web app, both processing everything locally.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
PDF and image tools that don't upload your files anywhere — merge, split,
compress, organize and convert, running entirely on your own machine.
Try the web app → — no
install, runs in your browser tab.README 전문 보기 ↗PDF and image tools that don't upload your files anywhere — merge, split, compress, organize and convert, running entirely on your own machine.
Try the web app → — no install, runs in your browser tab.
The tools that do this well (iLovePDF, SmallPDF, and friends) are websites, so every file you feed them gets uploaded to someone else's server. That's fine for a holiday photo. It's not fine for an Aadhaar card, a PAN card, a signed contract, or anything else you'd rather not hand to a stranger's backend. iLoathePDF does the same jobs with the same quality of interface, without the upload — as a Windows desktop app with zero networking code, and as a website that processes files client-side and never sends them anywhere.
| Desktop app | Web app | |
|---|---|---|
| Install | Windows installer | None — open the link |
| Engine | Native Rust + Python + Ghostscript | pdf-lib / pdf.js, in your browser |
| File size limits | Disk-bound | ~200 MB (browser memory) |
| Batch / whole folders | Yes | No |
| Networking code | None at all — cannot phone home | None — verify in DevTools → Network |
| Compress quality | Full (Ghostscript) | Preview (rasterizes pages, no selectable text yet) |
| HEIC → JPG | Yes | Preview badge (decoder not wired up yet) |
| PDF to Excel | Yes | No — no client-side library extracts tables well enough |
Both share the same rule: your files never leave the machine they're opened on. Pick whichever fits — there's no reason to pick only one.
| Tool | What it does |
|---|---|
| Merge PDF | Combine PDFs in the order you choose, with page ranges per file |
| Split PDF | Cut into ranges, chop every N pages, extract or delete a selection |
| Organize pages | Reorder, rotate and drop pages on a page canvas |
| Sign & Fill | Draw or upload a signature, then add text, dates and initials on the page |
| Protect & Unlock PDF | Add or remove a password that's required to open the file |
| Watermark, Page Numbers & Stamp | Add a repeating watermark, sequential page numbers, or a fixed stamp to every page |
| Redact PDF | Black out sensitive text, photos or signatures — visually or for good |
| OCR → Searchable PDF | Add an invisible, searchable text layer to a scanned PDF |
| PDF to Excel | Extract tables into a real, editable spreadsheet — desktop only |
| Compress PDF | Lossless, Balanced or Strong, with the size trade-off shown |
| PDF to images | Render pages to PNG or JPG at a chosen DPI |
| Images to PDF | Scans and photos into one PDF, one image per page |
| Convert images | PNG, JPG and WebP any direction — and HEIC off an iPhone |
On the web app, Compress and the HEIC direction of Convert Images carry a visible Preview badge: real files go in and real processing happens, but the output isn't yet full quality — see the table above. PDF to Excel is desktop only — no client-side library extracts tables well enough to ship on the web, so it shows there as a disabled card pointing to the download. Every other tool is fully live in both the desktop app and the browser.
Four fixed, curated multi-step chains over the tools above — drop a file, pick a recipe, get the final result, with no per-step configuration: Merge → Compress, Scan to Searchable PDF (Images to PDF → OCR → Compress), Flatten PDF (PDF to Images → Images to PDF), and Merge → Extract Tables (desktop only, since it ends in PDF to Excel). Recipes aren't a general pipeline builder and aren't counted among the thirteen tools above — they're compositions of existing tools, reusing each one's own default settings.
Desktop:
React UI ──tauri invoke──▶ Rust core ──JSON lines over stdio──▶ Python engine
▲ │ │
└───── job://progress ───────┘◀────── progress / result events ───────┘
Web:
React UI ──File API──▶ in-memory bytes ──pdf-lib / pdf.js──▶ Blob ──▶ download
Design decisions and the reasoning behind them live in each app's own
SPECS.md; the write-up of how the web app itself was designed and built is
in docs/superpowers/specs and
docs/superpowers/plans.
iLoathePDF/
├── apps/
│ ├── desktop/ the Windows app — see apps/desktop/README.md
│ └── web/ the website — see apps/web
└── docs/ design specs and implementation plans
npm install # installs both apps/desktop and apps/web (npm workspaces)
Then see each app's own README for how to run and build it:
apps/desktop/README.md — requires Node 22,
Python 3.11, Rust with the MSVC toolchain, and Ghostscript.
apps/web — npm run dev --workspace=apps/web and open the
printed local URL. The OCR tool needs its tesseract.js worker, core (WASM)
and English language files vendored locally under apps/web/public/tesseract/
(gitignored, not committed — the app never fetches them from a CDN at
runtime, matching its no-network guarantee). After npm install, copy them
in:
mkdir -p apps/web/public/tesseract/core apps/web/public/tesseract/lang
cp node_modules/tesseract.js/dist/worker.min.js apps/web/public/tesseract/
cp node_modules/tesseract.js-core/tesseract-core-simd-lstm.{js,wasm,wasm.js} node_modules/tesseract.js-core/tesseract-core-relaxedsimd-lstm.{js,wasm,wasm.js} node_modules/tesseract.js-core/tesseract-core-lstm.{js,wasm,wasm.js} apps/web/public/tesseract/core/
gzip -k -c vendor/tesseract/tessdata/eng.traineddata > apps/web/public/tesseract/lang/eng.traineddata.gz
All three LSTM builds are needed: corePath is a directory, and
tesseract.js feature-detects which one to load at runtime (only the
-lstm variants, since this tool always uses OEM LSTM_ONLY) — relaxed-SIMD
for a browser that supports it (current Chrome), plain SIMD for one that
doesn't, and the plain tesseract-core-lstm.* build (no SIMD at all) for a
browser with no WASM SIMD support whatsoever (older Safari/Firefox, or SIMD
disabled by policy). Missing any one of the three 404s for exactly the
browsers that would have picked it. Keep tesseract.js-core's explicit
version in apps/web/package.json in sync with whatever tesseract.js
itself depends on (check
node_modules/tesseract.js/package.json's own tesseract.js-core range)
so this isn't vendoring a different, possibly incomplete build than the
one npm actually resolves.
(The last line reuses the same eng.traineddata the desktop app vendors —
see apps/desktop/HANDOVER.md. If that file isn't present yet, source
eng.traineddata from the Tesseract project's own tessdata release
instead and gzip it the same way.)
main is built through pull requests, and CI has to pass:
git switch -c my-change
git push -u origin my-change
gh pr create --fill
Direct pushes to main are blocked by a local hook rather than GitHub's
branch protection (which needs a paid plan or a public repo to configure —
this repo is public, but the hook is kept as a belt-and-suspenders):
git config core.hooksPath .githooks
Code in this repository is MIT licensed.
That covers the code iLoathePDF's own authors wrote — it does not relicense the third-party pieces the desktop app bundles into its installer, which keep their own terms regardless of this repo's license:
apps/desktop/SPECS.md
before redistributing a compiled installer.The web app's dependencies (pdf-lib, pdf.js, React, etc.) are all
permissively licensed (MIT/Apache-2.0) and impose no extra obligations.