DEV Community

Gavin Liu
Gavin Liu

Posted on

I built a free tool to open Apple Pages/Numbers/Keynote files on Windows — 100% in-browser

How I built a free tool to open Apple iWork files on Windows (no backend)

TL;DR: I built iWorkViewer — open and convert Apple .pages, .numbers, and .keynote files right in your browser. No Mac, no iCloud, no upload, no signup. Everything runs client-side.


The problem

Someone sends you a .pages document, a .numbers spreadsheet, or a .keynote deck. You're on Windows, Android, or a Chromebook. You double-click it and… nothing. Microsoft Word throws an error, Google Docs rejects it, and every online converter wants you to upload your private file to their servers first.

The honest trick that makes it work

Here's what almost nobody tells you: a .pages / .numbers / .keynote file is secretly a ZIP archive. When Apple saves the document, it bundles a ready-made QuickLook Preview.pdf inside so Finder and Mail can show a thumbnail.

iWorkViewer just opens that ZIP in your browser with JSZip, finds the embedded Preview.pdf, and hands it to you. No rendering engine, no conversion server, no quality loss — it's the exact PDF Apple already generated.

What it does

  • Open .pages / .numbers / .keynote instantly in any browser
  • Export to PDF for reading, printing, sharing
  • 100% private — file is unzipped locally, never uploaded
  • No Mac, no Apple ID, no signup, no watermark

The tech

  • Next.js static export on Cloudflare Pages
  • JSZip to unpack the iWork ZIP package in-browser
  • Embedded PDF rendered directly in the page
  • Zero backend — all processing client-side

The honest part

The embedded preview is a faithful visual copy (great for reading + PDF). If you need a fully editable .xlsx/.docx with live formulas, the most accurate route is Apple's own iCloud.com export — and I say so right on the site. No overpromising.

Try it

👉 iworkviewer.com — free, no signup.

What other file-format headaches should I solve next?

Top comments (1)

Collapse
 
frank_signorini profile image
Frank

How did you handle the proprietary file formats, did you reverse engineer them or use existing libraries, and what were some of the challenges you faced?