Read manga and comics on your reader.
Made with ❤️ by varo6 & sodaFMR
A free, privacy-first web app that converts your CBZ comics, PDFs, images, and videos into XTC format for your reader. XTC.js is growing beyond a single device: choose your reader to size the pages for its screen, then preview and download your files.
New: Sticky support. Convert for reTerminal Sticky running CrossPoint Reader, alongside XTEink X4, X4 Pro, and X3. Read the introduction.
No installation or account required.
| Reader | Page canvas | Notes |
|---|---|---|
| XTEink X4 / X4 Pro | 480×800 | Select X4 / Pro |
| XTEink X3 | 528×792 | Select X3 |
| Seeed Studio reTerminal Sticky | 480×800 | Requires CrossPoint Reader firmware |
Sticky's preset uses the page canvas expected by CrossPoint Reader. Generated XTC files are not compatible with the original Seeed firmware.
| Input | What it's for |
|---|---|
| CBZ / CBR | Manga and comic archives |
| Documents, scanned manga, and books | |
| Images | JPG, PNG, and WEBP wallpapers and covers |
| Video | Convert video frames to XTC pages |
- Choose Floyd-Steinberg, Atkinson, Sierra-Lite, Ordered, or no dithering.
- Adjust contrast and preview the result before downloading.
- Split spreads to fit your reader, or keep them whole.
- Select your device to use the matching page size.
- Combine CBZ, PDF, or XTC files.
- Split files by page ranges or into equal chunks, then convert the parts.
- Add title, author, and chapter information to XTC files.
- Create a table of contents for navigation on your reader.
The XTC.js blog covers new readers and app updates. Start with Introducing Sticky for setup instructions and the move toward supporting more devices.
The blog has its own reading layout, article cards, and responsive banners. A small Blog link beside the theme toggle keeps it accessible from the app.
| 🔒 100% Private | Everything runs in your browser. Your files never leave your device. |
| 📴 Works Offline | Once loaded, use it anywhere without internet. |
| 🎫 No Account | Just drop your files and convert. Zero friction. |
| 👁️ Live Preview | See exactly how pages will look before downloading. |
- Open xtcjs.app in your browser
- Drop your CBZ, PDF, or image files
- Select your reader and adjust settings
- Convert and watch the live preview
- Download your XTC file
- Transfer to your reader
For reTerminal Sticky, install CrossPoint Reader first. The generated XTC files are not compatible with the original Seeed firmware.
| Setting | Value |
|---|---|
| Dithering | Floyd-Steinberg |
| Contrast | Medium |
| Split | Overlapping thirds |
| Orientation | Landscape |
With Split wide pages (right to left) enabled, wide CBZ/CBR images are treated as double-page spreads. Each half uses the selected thirds/halves split, starting with the right page. The first image stays whole for the cover. Uncheck this option to keep panoramic artwork together, or choose No split to keep every source page whole. This is geometric splitting, not panel detection.
| Setting | Value |
|---|---|
| Dithering | Atkinson |
| Contrast | Strong / Maximum |
| Orientation | Landscape |
| Setting | Value |
|---|---|
| Image Scaling | Cover |
| Orientation | Portrait |
| Dithering | Floyd-Steinberg |
Which dithering algorithm should I use?
- Floyd-Steinberg: Best all-rounder for manga with detailed art
- Atkinson: Sharper results, great for text-heavy content
- Sierra-Lite: Lighter dithering, good for high-contrast art
- Ordered: Patterned dithering, retro look
- None: Pure black and white, no gradients
Why are my pages split in half?
When you convert landscape images, such as two-page manga spreads, XTC.js can split them to fit your reader. Use "No split" if you prefer full spreads. PDFs also support a "Split by columns (4-way)" option for two-column layouts.
Can I use this on my phone?
Yes! XTC.js works on any modern browser. Large files may convert slower on mobile due to limited processing power.
What's the XTC format?
XTC is a page image format for compatible e-ink readers. It contains optimized 1-bit black and white images at the device's resolution, designed for fast page turns and excellent readability.
Is there an XTCH format?
XTCH is the 2-bit variant with 4 grayscale levels instead of pure black and white. Some content may look better in XTCH.
XTC.js started as a TypeScript port of cbz2xtc. It is maintained by varo6 and sodafmr.
Thank you to the Seeed Studio team behind reTerminal Sticky. We're happy to bring Sticky to XTC.js, and we hope to keep working with them to make reading on it even better.
bun install # Install dependencies
bun run dev # Dev server → localhost:5173
bun run build # Production build
bun run serve # Production server → localhost:3000- Add a route in
src/routes/, followingblog.introducing-sticky.tsx. - Add its title, route, excerpt, category, author, and reading time to
src/lib/blog.ts. - Use
BlogArticlefromsrc/components/blog/for the shared article layout. Pass the post's banner through itsbannerprop. - Add any new cover artwork to the card rendering in
src/routes/blog.index.tsx. - Run
bun run buildto regenerate the route tree and check the production build.
Blog styles live in src/styles/blog.css. Keep banners proportional and contained within the article width.