Dev.to WebDev 🛠 Dev 👁 1 📖 5 min read

Why I made GalionToon process everything in the browser (and never upload your files)

Why I made GalionToon process everything in the browser (and never upload your files) I still remember the moment I decided this project had to exist. A friend sent me a PSD file to review. Nothing sensitive, just a de

Why I made GalionToon process everything in the browser (and never upload your files)

I still remember the moment I decided this project had to exist.

A friend sent me a PSD file to review. Nothing sensitive, just a design draft. I opened my usual tools, made a couple of adjustments, and then stopped mid-click.

Where did that file just go?

I knew the answer. It went to a server. Somewhere. Owned by someone. Stored for an amount of time I couldn't verify. Processed by systems I couldn't audit.

That bothered me more than it should have. Not because anything bad happened — it didn't. But because I realized I had been trusting silently for years.

Every time I edited a photo, opened a PSD, generated a sprite sheet, or cleaned up a video subtitle, I was sending my work somewhere else.

So I built GalionToon.

🎨 What GalionToon is

GalionToon is a free creative suite that runs entirely in your browser. It has five independent studios:

Studio What it does
🖼️ Galion Photo Photo and PSD editing
🦌 Galion Rig 2D animation with bones
🎮 Pixel Galion Pixel art editor
🎬 Video Editor Video cutting and subtitles
📻 Radio Galion Music while you work

No installs. No accounts. No uploads. Everything you do stays on your machine.

👉 You can try it at galiontoon.com.

☁️ The problem with "the cloud"

I'm not against servers. I use cloud services every day.

But I started noticing a pattern in creative software:

  • ❌ Files get uploaded "for processing"
  • ❌ Projects live on remote storage
  • ❌ Features get locked behind subscriptions
  • ❌ Privacy policies are pages long and written in a language no one reads

For a professional workflow, this is fine. You trust your employer's IT team to vet the tools.

But for everyone else — hobbyists, students, indie artists, game developers working from home — it's a quiet trade-off they never agreed to.

I wanted to offer an alternative. Not a superior one. Just a different one.

One where the default is: your files never leave your device.

⚙️ How it actually works

Processing everything in the browser is harder than it sounds. Here's what I learned building GalionToon.

1️⃣ Modern browsers are incredibly powerful

Ten years ago, this project would have been impossible. Today, the browser gives you:

  • 🎨 Canvas API and WebGL for rendering
  • ⚡ WebAssembly for near-native performance
  • 📁 File System Access API for opening and saving files locally
  • 🎬 WebCodecs API for video decoding without uploading
  • 🔌 Service Workers for offline functionality

Everything GalionToon does is possible because the web platform matured. I just had to use it.

2️⃣ PSD parsing in pure JavaScript

One of the biggest technical challenges was PSD support. Adobe's format is complex:

  • Layers
  • Groups
  • Masks
  • Blend modes
  • Editable text
  • Effects

I wrote a parser that reads the PSD structure directly in the browser. It handles the common cases and gracefully degrades on advanced features.

The file never leaves the user's computer. Not even for a millisecond.

3️⃣ Performance without a server

The hardest problem was performance on large canvases.

When you edit a 4K PSD with 50 layers, you can't just redraw everything on every brush stroke.

The solution is spatial caching: only redraw the area that actually changed.

Combined with offscreen canvases and WebGL acceleration, this gets us to 60 FPS on mid-range hardware.

I spent weeks on this. It's the kind of optimization you don't notice when it works — you only notice it when it doesn't.

4️⃣ Animation with bones

Galion Rig uses inverse kinematics to animate 2D characters.

The math is straightforward (for small chains), but the interaction design is where things get interesting:

  • You drag the tip of a bone → the whole chain adjusts
  • You paint influence weights
  • You set keyframes

None of this requires a server. It's just math and canvas rendering.

5️⃣ Video subtitles without uploading

The video editor generates subtitles locally.

This was the most surprising win: modern models can run in the browser via WebAssembly or ONNX Runtime. They download once, cache locally, and work offline.

Your footage never leaves your device.

💚 What this means for users

When I talk to artists and developers who've tried GalionToon, the reaction is always the same: relief.

Not because it's revolutionary. But because it removes a layer of anxiety they didn't know they had.

  • ✅ You can open a client's PSD without uploading it to a random server
  • ✅ You can edit sensitive photos without them being processed by a third party
  • ✅ You can work on a plane, offline, without losing functionality
  • ✅ You can use it on a Chromebook, a locked-down work laptop, or a friend's computer

Privacy isn't a feature. It's a default.

🧠 What I got wrong along the way

I want to be honest about the project's limitations.

⚠️ Performance is harder than expected.
Chromium's GPU handling can degrade silently. I've spent more hours than I want to admit chasing performance bugs on older hardware.

⚠️ Compatibility is incomplete.
PSD is a moving target. Some features work perfectly, others partially, others not at all. I document everything in COMPATIBILITY.txt.

⚠️ Importing assets is tricky.
Brush formats like .abr or .kpp are proprietary. I support the basics but not everything.

⚠️ Translations take time.
Right now GalionToon is available in Spanish, English, and French. More languages are planned, but each one is a serious investment.

None of these are dealbreakers. They're just the reality of building something ambitious alone.

💡 Why I'm sharing this

DEV Community has taught me a lot over the years. So I want to give back something useful: a real example of what's possible when you take browser capabilities seriously.

If you're building something and wondering whether to keep it client-side or move it to a server, here's my honest take:

Keep it client-side as long as you can.

The moment you add a server, you inherit:

  • 💸 Infrastructure costs
  • 🔒 Privacy obligations
  • 🔧 Maintenance burden
  • ⚖️ Legal complexity
  • 🚨 A permanent risk surface

For many projects, this is fine. For a creative tool where users upload personal work, it's an unnecessary trade-off.

🚀 Try it and tell me what you think

GalionToon is free and available now:

If you build something with it, I'd love to see it.
If you find a bug, tell me.
If you have an idea for a feature that would make it more useful, I'm listening.

And if you're working on something similar — a browser-based tool that respects privacy — reach out. I'd love to compare notes.

📝 Thanks for reading. This is the first of a series I'm writing about building GalionToon. Next: how I got PSD parsing to work in pure JavaScript, and what I learned about the format in the process.

📰 Read the original article on Dev.to WebDev

Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.