File transfer

LibreSend framework

Send EPUB and PDF files to phones, Kindle and Kobo through system share, official services, same-Wi-Fi delivery or an optional encrypted relay.

Choose the destination

Open /send, choose Phone or tablet, Kindle, Kobo or Same Wi-Fi, then choose one EPUB, PDF or MOBI file. LibreSend keeps that selection in the browser and reveals only the routes that apply to the chosen destination. Changing the destination does not require selecting the file again.

Local system share passes the real File to the operating-system share sheet. Local save uses a short-lived browser object URL. LibreLeaf does not receive either file. A lawful source link can also be shared without proxying the linked book.

Phones and tablets

On iPhone or iPad, tap Open share sheet and choose Books, Kindle or another installed reader. If it is not listed, choose More or save to Files first. Enable iCloud Drive and Books in iCloud settings only if you want Apple Books imports to sync to other Apple devices.

On Android, tap Open share sheet and choose Kindle, KOReader or an installed EPUB/PDF reader. If the browser cannot share files, save the file, open Downloads and use Open with. The operating system controls which apps appear; a website cannot silently choose one.

Kindle and Kobo

For Kindle on a phone, use the share sheet and choose the Kindle app. On a computer, open Amazon's Send to Kindle page, select the same local file and sync the Kindle. Amazon's current web route accepts EPUB and PDF files up to 200 MB; its current list does not include MOBI. Email accepts up to 25 attachments totalling 50 MB from an approved sender address.

For Kobo Forma, Sage, Elipsa, Elipsa 2E and Libra Colour, link Google Drive or Dropbox under More → Settings → Accounts, put the non-protected EPUB or PDF in the Kobo folder and sync. For every Kobo model, save the file, connect the reader by USB, copy it to KOBOeReader, eject and open My Books.

The static /send document contains a readable e-reader fallback when an older browser cannot run JavaScript modules. It preserves instructions and official links only; it does not turn the Kindle browser into an undocumented import route.

LibreSend Local

LibreSend Local is the first-party program for computer-to-device delivery. One command opens a private localhost web interface. Choose a book there and the program serves only that file to another device on the same network. It displays a random expiring download address plus a one-book OPDS acquisition feed. Its e-ink-friendly receiving page has no JavaScript, exposes no directory listing, supports byte-range downloads and closes after 15 minutes or when the program stops.

  • The localhost control interface is available only on the computer and uses a random control path.
  • Choose or drop one EPUB, PDF or MOBI in the local browser interface; no terminal file path is required.
  • The receiving page uses no JavaScript, no web fonts and conservative HTML/CSS; EPUB/PDF responses include attachment type, content length and byte-range support.
  • Keep both devices on the same trusted Wi-Fi.
  • Open the printed HTTP address in the e-reader browser, or add the printed /opds address to a compatible reading app.
  • Download the book, then use Remove book, Close LibreSend or Ctrl+C. The receiving link also expires automatically.
  • Local HTTP is not encrypted. The random path limits accidental discovery but does not make an untrusted network safe.
  • For a permanent library, use an authenticated calibre Content server instead of leaving this temporary bridge running.
npx --yes github:maxrobdev/libreleaf

Optional encrypted relay and SDK

The public LibreLeaf site does not operate a file relay. A reader may explicitly connect a compatible self-hosted HTTPS relay for the current page session. Relay mode encrypts the complete file in the sender's browser with AES-256-GCM, uploads only an opaque expiring envelope and keeps the decryption key in the receive-link fragment. Retrieval is atomic and destructive.

lib/libresend/index.ts exports validation, browser transports, encryption, relay client, portable Fetch handler, storage interfaces and the transport registry without depending on React. Privacy-bounded modules can see method, path, origin, byte count and timestamps but never plaintext, keys or encrypted bodies. Operators remain responsible for network metadata, retention, abuse and jurisdiction.

References