epubveri — epubcheck'e JVM gerektirmeyen bir alternatif olarak, tarayıcıda (WASM) çalışan, tamamen Rust ile yazılmış bir EPUB doğrulama aracı

epubveri — epubcheck'e JVM gerektirmeyen bir alternatif olarak, tarayıcıda (WASM) çalışan, tamamen Rust ile yazılmış bir EPUB doğrulama aracı

Merhaba, Geçen haftalarda epub sürümünü en güncel 3.3'e yükselten istenirse resimleri webp formatına dönüştürerek epub dosyasının boyutunu oldukça küçülten epublift'i ücretsiz olarak yayınlamıştım. epublift ile uğraşırken işin derinliklerine indikçe aslında elimizde olan ekitapların bir çoğunun W3C'nin yayınlamış olduğu standartlara uygun olmadığını fark ettim.

W3C kitapların kontrolünü yapmak için java tabanlı bir yazılım yayınlamış ama bu hantal ve yavaş. 2026'da daha modern, hızlı ve az kaynak kullanan bir araç lazım diyerek epubveri'yi rust ile yazma işine başladım. 2 haftalık çalışmanın sonucunda ilk demo ürünü çıktı. Diğer işlerden zaman kalırsa bunu eklenti haline getirmeye çalışacağım. :)

Sonuç: 30MB + JVM (Java motorunun) yapmış olduğu işi sadece 1MB'da yapıyor.

epubveri nedir?

epubcheck (https://github.com/w3c/epubcheck) fiili EPUB doğrulayıcısıdır — ancak Java tabanlı olduğu için bir web uygulamasına veya hafif bir işlem hattına entegre etmek, bir JVM göndermeyi gerektirir. Ben de tamamen Rust ile yazılmış (C bağımlılığı yok), WebAssembly derlemesiyle EPUB'ları doğrudan tarayıcıda doğrulayan bir doğrulayıcı olan epubveri'yi geliştiriyorum — JVM yok, sunucu yok, hiçbir şey sayfadan ayrılmıyor.

epubveri ne yapar?

- Elle kodlanmış yapısal kontroller (OCF/mimetype, OPF meta verileri, manifest/spine bütünlüğü, bozuk referanslar, gezinme belgeleri) artı XHTML/SVG içerik modeli için RELAX NG / XPath / Schematron motorları.

- epubcheck'in mesaj kimliklerini (RSC-…, OPF-…, HTM-…) yeniden kullanır, böylece çıktı mevcut araç zincirlerine tanıdık gelir.

Dürüst durum (ölçülen, hislere değil)

epubcheck'in kendi test veri kümesine karşı, şu anda hata vermesi gereken durumlarda %98,8'lik tam mesaj kimliği geri çağırma oranına ve geçerli durumlarda ~%1 yanlış pozitif oranına ulaşıyor. 1.0 öncesi bir sürüm ve henüz tam bir değiştirme aracı değil — en derin içerik modeli uç durumları ve bazı niş kurallar hala bir tırmanış gerektiriyor. Ancak hızlı, gömülebilir ve gerçek kitaplardaki gerçek sorunları zaten yakalıyor.

Yeni yayınlandı

- npm'de WASM paketi: u/veripublica/epubveri-wasm (istemci tarafında doğrulama)

- crates.io adı rezerve edildi; Bağımlılık yüklendikten sonra işlevsel Rust kütüphanesi de çalışmaya başlar.

Kod: https://github.com/veripublica/epubveri

Çift lisanslı (AGPL-3.0 veya ticari). Geri bildirimler, hata raporları ve özellikle de sistemi bozan garip gerçek dünya EPUB'ları çok memnuniyetle karşılarım.

https://preview.redd.it/xmg52npkm7bh1.png?width=2620&format=png&auto=webp&s=7bdac9e9cfeacb2ee2289fa293e1022664057f65

reddit.com
u/kayadelenium — 1 day ago
▲ 14 r/secilmiskitap+3 crossposts

epubveri — a pure-Rust EPUB validator that runs in the browser (WASM), as a JVM-free alternative to epubcheck

epubcheck (https://github.com/w3c/epubcheck) is the de-facto EPUB validator — but it's Java, so embedding it in a web app or a lightweight pipeline means shipping a JVM. I've been building epubveri: a validator written entirely in Rust (no C dependencies), with a WebAssembly build that validates EPUBs directly in the browser — no JVM, no server, nothing leaves the page.

What it does

- Hand-coded structural checks (OCF/mimetype, OPF metadata, manifest/spine integrity, broken references, nav docs) plus RELAX NG / XPath / Schematron engines for the XHTML/SVG content model.

- Reuses epubcheck's message IDs (RSC-…, OPF-…, HTM-…) so the output is familiar to existing toolchains.

Honest status (measured, not vibes)

Against epubcheck's own test corpus, it currently hits 98.8% exact-message-ID recall on the should-error cases, with ~1% false positives on the valid cases. It's pre-1.0 and not a full drop-in replacement yet — the deepest content-model edge cases and some niche rules are still a climb. But it's fast, embeddable, and already catches real problems in real books.

Just shipped

- WASM package on npm: u/veripublica/epubveri-wasm (validate client-side)

- crates.io name reserved; the functional Rust crate follows once a dependency lands

Code: https://github.com/veripublica/epubveri

Dual-licensed (AGPL-3.0 or commercial). Feedback, bug reports, and especially weird real-world EPUBs that break it are very welcome.

u/kayadelenium — 1 day ago
▲ 116 r/ebooks

I made a free, open-source tool to modernize & shrink EPUBs (EPUB 2→3.3, WebP, Kobo .kepub, library archiving) — no tracking, self-hostable

u/kayadelenium — 10 days ago
▲ 5 r/ePub

Why Kobo shows WebP images as blank — I tracked it down and built a fix (plus a free, open-source EPUB optimizer)

I've been building epublift, a free and open-source (AGPL) tool to modernize and optimize EPUB files. It's 100% Rust, no C, no telemetry — and you can run it in your browser, as a CLI, or self-host it.

What it does:

- Upgrades legacy EPUB 2 → EPUB 3.3 (proper nav, metadata, HTML5).

- Shrinks books by re-encoding images to WebP — and it's size-safe: it keeps the smaller file and never grows a book or upscales quality.

- Kobo .kepub output (page-turn animations, reading stats, dictionary).

- Archive your library into compact, lossless .eparc files, restore anytime.

- Fix metadata by ISBN (Open Library / Google Books), language-aware.

- Import a PDF into a reflowable EPUB (experimental, incl. OCR for scans).

- Privacy: the web version processes uploads in memory and deletes them immediately.

The Kobo WebP rabbit hole: while testing, I hit the well-known "Kobo shows my images as blank" problem. Turns out Kobo's reader (Nickel) is built on Qt 5.2.1, and WebP support was only added to Qt's image plugins in 5.3.0 — so Kobo's image stack literally predates WebP. I reported it to Kobo, then backported the WebP plugin and built it against Kobo's own Qt — so WebP now renders on Kobo via .kepub (verified on a Forma). Prebuilt plugin + full from-source recipe are in the repo. (And if you don't want to mod your device, the tool just keeps your images as JPEG/PNG for Kobo by default.)

Try it / self-host / code:

- In your browser: https://epublift.itpax.net

- GitHub (self-host with one Docker command): https://github.com/ePubLift/epublift

Disclosure: I'm the developer. It's a personal open-source project, not a company — no ads, no accounts, no upsell. I'd genuinely love feedback, bug reports, and "it didn't open on my reader X" reports (that's how I found the Kobo issue).

https://preview.redd.it/733mnx7kjl9h1.png?width=2802&format=png&auto=webp&s=d1f1283e1e5a4f9da2becaa10c2bad4851b6c8a2

reddit.com
u/kayadelenium — 10 days ago

ePubLift'e en çok istenen özelliği ekledim: PDF → akışkan EPUB dönüştürme (Türkçe PDF'ler dahil, deneysel)

Merhaba 👋

Daha önce burada ePubLift'i paylaşmıştım — EPUB'ları modernleştiren, görselleri küçülten, kütüphanenizi arşivleyen ve kitap metadatasını düzenleyen ücretsiz/açık kaynak bir araç. O paylaşımlardan sonra gelen bir numaralı istek şuydu: "PDF'lerimi düzgün EPUB'a çevirebilir miyim?"

Şimdi ekledim. 🎉

Sorun şu: PDF sabit-sayfa bir formattır. Onu küçük ekranlı bir e-okuyucuda açınca minicik fontlarla, yatay kaydırarak okumaya çalışırsınız. ePubLift'in yeni PDF içe aktarma özelliği, PDF'in metnini çıkarıp akışkan (reflowable) bir EPUB üretir: font boyutunu/satır aralığını ayarlayabilir, arama yapabilir, kaldığınız yeri işaretleyebilirsiniz.

Ne işe yarıyor (bugün):

- Metin katmanı olan PDF'ler: dijital üretilmiş kitaplar ve zaten aranabilir taramalar

- Modern Türkçe PDF'ler dahil (Type0/CID fontlar) — kelime boşlukları gerçek glyph genişliklerinden hesaplanıyor, yani "boşluksuz" ya da "fazla boşluklu" metin yok

- Satır-sonu tirelerini birleştirme, tekrarlayan üst/altbilgi ve sayfa numaralarını temizleme, bölüm başlığı tespiti + İçindekiler

- Bir testte çıkan EPUB, yayıncının kendi EPUB'ıyla ~%99.8 kelime örtüşmesi verdi (tabii her PDF farklı, garanti değil)

Ne henüz yapamıyor (dürüst olayım):

- Sadece resim olan saf taramalar OCR ister — o yakında gelecek bir aşama. Şimdilik böyle bir dosyada bozuk çıktı üretmek yerine "bunun için OCR gerekiyor" diye net uyarı verir.

- Tablolar/formüller ve figürler şimdilik aktarılmıyor (metin odaklı). Bazı PDF'ler hiç dönüşmeyebilir; o durumda da bozuk dosya değil, açık hata mesajı alırsınız.

- Deneysel etiketiyle çıkıyor — bilinçli olarak erken yayınlıyorum ki gerçek dosyalarla test edip geri bildirim verebilesiniz.

Gizlilik: Web'de yüklediğiniz dosya bellekte işlenir ve hemen silinir (kaydedilmez, loglanmaz). İsterseniz Docker ile kendi bilgisayarınızda çalıştırırsınız — o zaman dosya makinenizden hiç çıkmaz. Tamamen ücretsiz, açık kaynak (AGPL), %100 saf Rust (C bağımlılığı yok).

Denemek için:

- Tarayıcıdan: epublift.itpax.net → "Import PDF" sekmesi (arayüz 13 dilde)

- Komut satırından: epublift import -i kitap.pdf

- Kaynak kod / kurulum: github.com/ePubLift/epublift

Asıl ricam: Kötü dönüşen bir PDF'iniz olursa (özellikle Türkçe), nasıl bir sonuç aldığınızı yazarsanız çok makbule geçer — geri bildirimlerle iyileştireceğim. Düzgün dönüşenleri duymak da motive eder. 🙏

Teşekkürler!

https://preview.redd.it/o0yomlygb99h1.png?width=2518&format=png&auto=webp&s=015fee1cc87f9f10f8d2b754c866330b85f957aa

reddit.com
u/kayadelenium — 11 days ago

EPUB'larınızı modernleştiren, küçülten ve kayıpsız arşivleyen ücretsiz/açık kaynak bir araç artık tarayıcıda da çalışıyor

Bir süredir ePubLift adında, EPUB dosyaları için ücretsiz ve açık kaynak (AGPL) bir araç geliştiriyorum. Dönüştürücüyü daha önce burada paylaşmıştım; o zamandan beri bir arşivleme modu ekledim ve her şeyi tarayıcıya taşıdım, kısa bir güncelleme olsun istedim.

Üç şey yapıyor:

- Optimize — eski EPUB 2'yi → 3.3'e yükseltir, görselleri WebP'ye dönüştürür. Boyut-güvenli: bir görsel ancak gerçekten küçülüyorsa yeniden kodlanır, yani kitap asla büyümez. İsteğe bağlı Kobo .kepub çıktısı.

- Archive — bir kitabı kompakt, kayıpsız bir .eparc'a paketleyip diskten tasarruf eder. Metin + fontlar üzerinde saf-Rust solid Zstandard; zaten sıkıştırılmış görseller olduğu gibi saklanır, dolayısıyla kitabı şişirmez.

- Restore — .eparc'ı tekrar çalışan bir .epub'a döndürür; içerik birebir (her dosya bayt bayt aynı) ya da çıkışta modernleştirerek.

Tamamen saf Rust (C bağımlılığı yok); komut satırı, kütüphane ya da ~15 MB'lık bir Docker web servisi olarak çalışır. Tarayıcı sürümü her şeyi bellekte işler ve anında siler — hiçbir şey saklanmaz veya loglanmaz. Raspberry Pi'den yukarı her yerde çalışır.

- Tarayıcıda dene: https://epublift.itpax.net

- Kaynak / kendi sunucunda çalıştır / sürümler: https://github.com/ePubLift/epublift

Açıkçası geri bildirim arıyorum: arşivleme tarafı (küçült + birebir geri getir) işinize yarar mı, yoksa asıl faydalı kısım optimizer mı? Ve eksik olan ne?

Önder'in isteklerini listeye eklemiştim. Başka istek ve öneriler olursa planlamaya dahil etmeye çalışırım.

reddit.com
u/kayadelenium — 17 days ago
▲ 19 r/ebooks

I made a free, open-source tool to modernize and shrink old EPUBs

I kept running into bloated EPUB 2 files that were larger than they needed to be, so I built ePubLift to fix that. Sharing in case it's useful to anyone here — it's free, open-source (AGPL-3.0), and not a commercial product.

What it does:

- Upgrades EPUB 2 → EPUB 3.3, while keeping the legacy toc.ncx so books still open on older readers.

- Re-encodes images to WebP to reduce file size — but only when the result is actually smaller, so a book never ends up bigger than the original.

- Keeps Unicode filenames (with an optional ASCII transliteration for older devices).

You can use it however you like:

- In the browser, no install: https://epublift.itpax.net (files are processed in memory and deleted immediately — nothing stored or logged)

- Self-host with Docker, or grab a CLI binary for Windows/macOS/Linux.

Source code: https://github.com/ePubLift/epublift

Happy to hear feedback or bug reports, especially on EPUBs that don't convert cleanly.

reddit.com
u/kayadelenium — 20 days ago

ePubLift — eski EPUB'larınızı modernleştiren & küçülten, ücretsiz ve açık kaynak bir araç (tarayıcıdan da kullanılabilir) 📚

Merhaba epubTurk! Bir süredir üzerinde çalıştığım ePubLift'i paylaşmak istedim. Elinizdeki eski/şişkin EPUB dosyalarını tek tıkla toparlayan bir araç.

Ne yapıyor?

- 📦 Eski EPUB 2 kitapları EPUB 3.3 standardına yükseltir (modern nav.xhtml üretir, yapıyı düzeltir).

- 🖼️ Görselleri WebP'ye çevirip dosya boyutunu ciddi şekilde küçültür.

- 🔄 Geriye dönük uyumlu: eski toc.ncx korunur, yani hem yeni hem eski okuyucularda sorunsuz açılır.

- 🛡️ Boyut-güvenli: bir görsel yalnızca WebP gerçekten daha küçükse dönüştürülür — kitabınız asla büyümez, düşük kaliteli görseller de zorla "şişirilmez".

Türkçe dostu 🇹🇷

Türkçe dosya adlarını olduğu gibi korur (Işık Doğudan Yükselir.epub). İsterseniz eski cihazlar/FAT32 SD kartlar için adı ASCII'ye çevirebilir: Işık → Isik.

Nasıl kullanılır?

- 🌐 Kurulum istemeyenler için ücretsiz, tarayıcı üzerinden: 👉 https://epublift.itpax.net — dosyayı sürükleyip bırakın, çevrilmiş hâlini indirin. Dosyalar bellekte işlenir ve anında silinir; hiçbir şey saklanmaz veya kaydedilmez.

- 🐳 Kendi sunucunuzda (Docker): docker run -p 127.0.0.1:8080:8080 ghcr.io/epublift/epublift-web:latest

- 💻 Komut satırı: Windows/macOS/Linux için hazır binary'ler var.

Tamamen saf Rust ile yazıldı (C bağımlılığı yok), açık kaynak ve AGPL-3.0 lisanslı.

Kaynak kod & indirme: https://github.com/ePubLift/epublift

Geri bildirimlerinizi çok isterim — özellikle elinizdeki "sorunlu" EPUB'larda nasıl davrandığını merak ediyorum. 🙏

reddit.com
u/kayadelenium — 20 days ago
▲ 55 r/epubTurk+1 crossposts

I made a free, open-source tool that modernizes old EPUBs and shrinks their file size

Hi r/ebooks 👋

Like a lot of you, I've got a library full of EPUBs collected over many years — and some of the older ones are a bit of a mess. They open awkwardly on newer readers, the navigation/table of contents is clunky, and a few are way bigger than they need to be because of heavy images.

So I built a little tool to fix that, and figured some of you might find it useful too. It's called ePubLift, and it's free and open source.

What it does to a book:

- Brings it up to date. It upgrades older EPUB 2.0 files to the modern EPUB 3.3 format — rebuilding the navigation/table of contents properly and cleaning up outdated markup.

- Keeps it working everywhere. The upgraded book stays backward-compatible, so it still opens fine on older e-readers, not just new ones. You don't trade compatibility for modernization.

- Makes it smaller. It re-encodes the images inside to a more efficient modern format (WebP), which often shrinks the file noticeably without you having to do anything.

- Won't ruin your originals. It always works on a copy — your source file is never modified unless everything succeeds. The book's title and author come from inside the file, so they stay exactly as they were.

A couple of honest caveats: right now it's a command-line tool, so it's most comfortable if you're okay running a command in a terminal. A simple drag-and-drop app is on my to-do list for folks who'd rather not. And it focuses on upgrading and optimizing existing EPUBs — it's not a converter between formats like Calibre.

It's completely free, open source (AGPL-3.0), and there's a public roadmap if you want to see where it's headed.

Here it is if you'd like to try it: https://github.com/ePubLift/epublift

I'd love to hear what you think, and if it makes a few of your books nicer to read, that'd make my day. 🙂

u/kayadelenium — 14 days ago