Ebook Format Converter
★★★★½ 4.8 (330 ratings)
🔒 Client-side — Your data never leaves your browser ✅ 100% Free — No signup, no limits ⚡ Instant — No server processing

📋 How to Use

  1. Upload file — Click the upload area or drag and drop an EPUB, TXT, or Markdown file.
  2. Choose target format — Select the output format: TXT, Markdown, or HTML (from EPUB), or EPUB (from TXT/Markdown).
  3. Download result — Click Convert. The converted file is generated locally and downloaded automatically.

Loading... Thanks for rating!

EPUB ↔ TXT/Markdown/HTML conversion — 100% client-side, no file upload

📚

Click to upload or drag and drop an ebook file

Supports EPUB / TXT / Markdown (.md), max 50MB

Select Target Format

Frequently Asked Questions

What formats are supported?
EPUB→TXT/Markdown/HTML; TXT→EPUB; Markdown→EPUB. All processing happens locally in your browser.
Can EPUB be read on Kindle?
Generated EPUBs follow EPUB 3.0 spec. Kindle doesn't natively support EPUB — use Calibre to convert to MOBI.
Are files uploaded to a server?
No. All processing is client-side. Your files never leave your device.
File size limits?
Files should be under 50MB. Large EPUBs with many images may take longer to process.
'+escapeXml(title||'Untitled')+' '+bodyHtml+' '; zip.file('chapter1.xhtml',xhtml); return await zip.generateAsync({type:'blob'}); } function markdownToHtml(md){ return md.split('\n').map(function(line){ if(line.match(/^# /))return '

'+escapeXml(line.slice(2))+'

'; if(line.match(/^## /))return '

'+escapeXml(line.slice(3))+'

'; if(line.match(/^### /))return '

'+escapeXml(line.slice(4))+'

'; if(line.trim()==='')return '
'; return '

'+escapeXml(line)+'

'; }).join('\n'); } function escapeXml(s){return String(s).replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"');} function generateUUID(){return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(c){var r=Math.random()*16|0,v=c==='x'?r:(r&0x3|0x8);return v.toString(16);});} function downloadFile(content,filename,mime){downloadBlob(new Blob([content],{type:mime}),filename,mime);} function downloadBlob(blob,filename,mime){var url=URL.createObjectURL(blob);var a=document.createElement('a');a.href=url;a.download=filename;a.click();URL.revokeObjectURL(url);} var dz=document.getElementById('dropZone'); dz.addEventListener('dragover',function(e){e.preventDefault();dz.classList.add('dragover');}); dz.addEventListener('dragleave',function(){dz.classList.remove('dragover');}); dz.addEventListener('drop',function(e){e.preventDefault();dz.classList.remove('dragover');if(e.dataTransfer.files.length)handleFile(e.dataTransfer.files[0]);});