Open the app — Classical Edition Comparison

Anyone who has collated editions knows the routine.
Three different editions of the same book, spread open, hunting for the same leaf in each and matching character by character.

Open three PDF viewer windows and every time you turn one you have to find and turn the others.
Spot a variant character and there’s nowhere to mark it, so you end up noting it in a separate memo.

This tool spreads up to eight editions across one screen as vertical panels.
You can draw colored marks straight onto the page, and the original PDF is never touched.
Shortcuts are packed in tightly so your hands can stay on the keyboard.

How to Use

  1. Click the + button at the top-right or drop PDF files anywhere on the page.
  2. The screen automatically splits into 1 – 8 vertical panels based on the number of files.
  3. Click a panel to make it the active panel (pink outline) — the target of keyboard shortcuts.
  4. Drag the entire top toolbar of a panel to reorder; the other panels slide aside automatically.
  5. The last slot order, the last-viewed page, and the marks you drew are auto-restored. On reopening, files load → fit-to-height → jump to last page.

Panel toolbars

With eight panels open you’d have dozens of buttons, and then the text you came to read disappears behind them.
So buttons show up only on the panel you’re working with and stay hidden elsewhere.

  • Top toolbar: panel number · filename · ✕ close (drag to reorder)
  • Bottom toolbar: page input · total pages · fit-height · mark-mode toggle · download marked PDF
  • Close (✕): confirms before removing.

Pages / Zoom / Pan

  • Page navigation: PageUp / PageDown, Home / End, or type a page number directly
  • Pan: ↑ ↓ ← → (Shift for faster movement), or mouse drag
  • Zoom: + / -, Ctrl + wheel, or 0 to reset to 100 %
  • F: fit page to panel height

Marks (annotations)

When you spot a variant character you can mark it right there.
Marks are stored separately and the original PDF is not altered in the slightest.

  1. Press M or click the ✎ button on the active panel to enter mark mode.
  2. Drag on the page to draw a rectangle.
  3. Choose from 5 pastel colors; press C to cycle.
  4. Click an existing mark to delete it. Use Ctrl+Z to undo accidental deletions.
  5. Shift+X: clear all marks on the current page.

Color labels

Once you’re using five colors, “was red for a misprint or a dropped character?” starts to blur.
Give each color a name and it appears as a small badge under the mark.

  • In the settings modal, set up to 12 characters per color.
  • If left empty, no badge is rendered (only the rectangle).
  • Badge size is identical across panels and printouts (absolute pixel size).

Settings and Saving

Options (settings modal)

The ⚙ button opens a single modal containing all options.

  • Page sync: when changing pages on the active panel, all other panels jump to the same page number.
  • Expand selected panel: makes the active panel ~1.5× wider; others narrower.
  • Page alignment: which side of the page appears first when changing pages (default: right — recommended for vertical script).

Options are saved together with the cloud data, so pulling on another device restores your settings as well.
Color labels are synced with the cloud automatically when you sign in.

Auto-save

It’s deflating to lose an hour of marks because a tab got closed by mistake.
That’s why marks and color labels are saved in your browser the moment you change them.
No sign-in needed.

  • Reload the page, or close a panel and add the same PDF again, and your marks come right back.
  • The browser save finishes on the spot without waiting, so the marks survive even if you close the tab right after.
  • If you’re signed in, the app also uploads to the cloud 30 seconds after your last change.
    It waits for you to pause instead of uploading every stroke, to keep cloud writes down.
  • When you switch tabs, close the window, or your connection comes back, it uploads right away without waiting the 30 seconds.
  • Only files that haven’t been uploaded yet are sent.
    So just opening and reading PDFs never writes anything to the cloud.

Cloud sync (Google sign-in)

Sometimes you want to pick up at home the comparison you started on the lab computer.
Sign in and you can use the same marks, labels and options across devices.

  • Sign in: click the person icon at the top-right to open a Google sign-in popup.
  • Profile menu: click your profile photo after signing in to view your name/email and a sign-out action.
  • Newer side wins automatically: when you sign in and when you add a PDF, each open file’s browser copy is compared with the latest cloud version.
    If the cloud is newer, it is applied right away and you get a notice. Color labels are synced the same way.
  • Save to cloud (☁︎↑): enabled when there are changes not yet uploaded. Click it when you don’t want to wait the 30 seconds.
  • Pull from cloud (☁︎↓): opens a modal listing every file with a version dropdown. Files where you have local marks are highlighted with an overwrite warning.
    If you pull an older version, it is uploaded as a new version on the next save. The latest version is never overwritten, so you can always go back.

Versioning

If every 30-second auto-save created a version, the list would fill up with useless versions in no time.
That’s why versions are kept per work session, not per save.

  • Up to 5 versions per file. When there are more, the oldest is removed.
  • Saving again within 30 minutes of the last save updates the last version instead of creating a new one.
    As long as you keep working without a long break, it stays one version.
  • Saving after a break of more than 30 minutes creates a new version.
  • If another device uploaded a version in the meantime, a new version is appended even within 30 minutes instead of overwriting it.
    Both devices’ work is kept, and you can choose either in “Pull from cloud”.
  • Up to 10 files per user. When an 11th arrives, the file left untouched the longest is removed.
    Files with no marks are not uploaded, so they don’t take up a slot.

When cloud saving fails

Even if a cloud save fails, your marks are already saved in the browser.
A notice tells you why it failed.

  • Offline: uploads automatically when the connection comes back.
  • Sign-in expired: sign in again and the remaining changes are uploaded.
  • No response for over 20 seconds: you’re told it’s slow, and the app keeps waiting for the response.
    Giving up halfway could let the old request arrive late and overwrite a newer save.
  • Cloud document nearing its limit (1MB): older versions are cleared first to make room.
    If even the latest version of every file doesn’t fit, nothing is uploaded and you’re notified.

Same-file auto-matching

  • When PDFs are transferred between computers (email, messengers, web downloads), lastModified is often updated.
  • If exact matching (name + size + lastModified) fails, the app falls back to name + size matching to recognize the same file.
  • The “Pull from cloud” modal uses this matching to flag conflicts (files where you have unsaved local marks).

Import / Export

The two arrow icons at the top of the settings modal handle JSON backup / restore.

  • Export: saves the active slots’ marks, options, and color labels as a single JSON.
  • Import: applies to active slots matching by fileKey. Color labels and options are restored as well.
  • Format: { name, size, lastModified, annotations } items + colorLabels + options (fileKey is reconstructed automatically).

Printing and Export

Print

The 🖨 button opens the print modal.

  • Current screen: prints the header and slot grid exactly as you see it on a landscape A4 page. The pastel background, top-left home/language buttons, bottom-right tip-jar widget, footer, and the active-slot red highlight are all excluded from the printout. (The browser print dialog’s “Headers and footers” option is separate — turn it off for a cleaner result.)
  • 1 / 2 / 3 / 4 panels per A4 (visual diagrams shown):
    • 1 / 4 panels print as A4 portrait; 2 / 3 panels as A4 landscape automatically.
    • Marks and color badges are printed at the same position on the PDF.
    • Each panel header shows the filename and current / total page numbers.
    • The output PDF embeds JPEG images to keep file size small (working printouts, not archival).

Download marked PDF ({original}_marked.pdf)

The ↓ button in the active panel’s footer downloads a new PDF with mark rectangles and color badges merged directly into the original PDF.

  • Rectangle fill / stroke / opacity and badge placement (below the rectangle, or above when there isn’t enough room) match what you see on screen.
  • Korean labels are rendered to a canvas with system fonts and embedded as PNGs — no separate font download is required.
  • Only pages with annotations are processed, and the same (color · label · font-size) badge is embedded once and reused to keep memory and file size down.
  • Memory limits: pdf-lib loads the entire PDF object graph into memory, so very large files (700 MB / 3 000 pages) may fail or freeze the tab due to browser memory limits. A confirmation dialog is shown on click; files at or above 0.5 GB get an extra ⚠ warning.

Reset mark data

  • Reset cloud data: affects every device and cannot be undone — a confirmation is required.

Good to Know

Shortcuts at a Glance

ActionShortcut
Select panel 1 – 81 ~ 8
Previous / next pagePageUp / PageDown
First / last pageHome / End
Pan↑ ↓ ← → (Shift = faster), or drag
Zoom in / out+ / -, Ctrl + wheel
Reset zoom / fit height0 / F
Toggle mark modeM
Cycle mark colorC
Clear marks on current pageShift + X
Undo mark add / deleteCtrl + Z
Open print modalCtrl + P

Notes

  • A maximum of 8 panels can be open simultaneously.
  • Canvas resolution is automatically capped at extreme zoom levels to protect memory.
  • Cloud usage is designed to fit within Firebase’s free tier (1 GB storage, 20K daily writes); uploading once 30 seconds after you pause, and only what hasn’t been uploaded yet, keeps it within those limits.
  • Marks saved in the browser are not tied to a Google account. If you switch between accounts in the same browser, changes not yet uploaded may go to whichever account is signed in at the time.
  • “Reset cloud data” affects every device, so use it carefully.
  • For very large PDFs (700 MB / 3 000 pages), “Download marked PDF” may fail due to browser memory limits — the click confirmation dialog warns you about this.

Open the app — Classical Edition Comparison