I wanted a simple image converter that didn't upload my files anywhere. Every tool I found either required a sign-up, plastered ads over the download button, or silently shipped my photos to a server I didn't control. So I built my own — and AI wrote most of the code.

The Idea

The core concept is straightforward: compile a proven C++ image library to WebAssembly so it runs directly in the browser. No server, no upload, no privacy compromise. The Magnum graphics library already supports dozens of image formats through a clean plugin architecture. The question was whether I could wrap it in a usable web interface in a single weekend.

Where AI Helped

I used an AI coding assistant for roughly 80% of the front-end work. The things it handled well:

  • HTML/CSS scaffolding — the drag-and-drop interface, responsive layout, and styling were generated in minutes
  • JavaScript glue code — the Web Worker setup, file handling, and download triggering were straightforward for the AI to produce
  • SEO metadata — Open Graph tags, meta descriptions, and sitemap generation were generated from a single prompt
  • Astro migration — moving from static HTML to an Astro static site with dynamic routes and shared layouts

Where AI Didn't Help

The C++ and Emscripten side was harder. Configuring the CMake build system, choosing the right Magnum plugins, handling memory allocation between JavaScript and WASM — these required domain knowledge the AI could approximate but not reliably get right on the first try. I spent most of my time debugging build issues and memory leaks, not writing HTML.

The lesson: AI is excellent at generating boilerplate and well-documented patterns. It struggles with niche toolchains and low-level debugging. Use it where it's strong; own the hard parts yourself.

The Stack

Here is what powers WebConverter.app:

  • C++ / Magnum — battle-tested image decoding and encoding (PNG, JPEG, BMP, TGA, HDR, EXR, KTX2, and more)
  • Emscripten — compiles C++ to WebAssembly, with SIMD and threading support for modern browsers
  • Web Workers — four parallel workers handle batch conversions without blocking the UI
  • Astro — static site generator producing clean HTML with zero client-side framework overhead
  • GitLab CI — automated builds for both the Astro front-end and the Emscripten runtime

What I'd Do Differently

Start with Astro from day one. The initial version was hand-written HTML duplicated across every converter page. Migrating to Astro with shared layouts and data-driven routes eliminated hundreds of lines of duplication and made adding new formats trivial.

I'd also set up end-to-end tests earlier. A broken WASM module is invisible until someone actually tries to convert a file. Automated tests that drop a file and verify the output would have caught issues days sooner.

Try It Yourself

WebConverter.app is free and open source. You can convert images to PNG, JPEG, BMP, and several other formats — all without uploading a single byte.

Try WebConverter.app — free, instant, and zero-upload image conversion.

Ready to convert your images?

Try WebConverter Free