DEV Community

Forge of Galion
Forge of Galion

Posted on

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 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.

Top comments (2)

Collapse
 
norabrandtf0cc08 profile image
Nora Brandt •

This matches how we handle customer special-order lists at the shop: paper notebook, no cloud copy, nothing to leak. Local-only processing is the same instinct scaled up โ€” the cheapest secure server is the one nobody can reach. Bookmarked GalionToon to try on our ancient front-desk laptop.

Collapse
 
forge_of_galion profile image
Forge of Galion •

@norabrandt Thank you โ€” I really like your analogy. "The cheapest secure server is the one nobody can reach" is going straight into my mental notes.

The paper notebook at the shop is the perfect example. Most people don't need to "go digital" โ€” they need to keep the same trust they already had, just with better tools. That's exactly what I'm trying to do with GalionToon.

About the ancient front-desk laptop โ€” that's actually why I obsess over performance. Chromium silently disables GPU acceleration on some old hardware, which makes canvas rendering crawl. I spent weeks learning to detect that and adapt. If GalionToon feels slow on your machine, tell me โ€” every report helps me find the cases I haven't covered yet.

Curious about one thing: what kind of work do you usually do on that laptop? Pixel art, photo editing, something else? Knowing how people actually use it helps me prioritize what to build next.