Build in Public2026-11-02ยท4 min read

Launching PixTally: Whole Batches of Photos, One Saved Recipe, Zero Uploads

#launch#Android#photo processing#privacy#indie dev

Today PixTally went live on Google Play (Android 8.0+, free with ads + a one-time Pro). It's a batch image processor with one idea at its core: you should describe an image-editing task once and reuse it forever, instead of doing the same four-tap dance sixty times.

The itch

Every time I publish a blog post I end up with the same pile of photos to prep: resize to 1600px, squeeze under 500 KB, export WebP, strip GPS. On a desktop that's a drool-worthy shell one-liner or Squoosh tab number nine. On my phone โ€” where the photos actually live โ€” the options were: a one-trick "compress photo" app that processes one image at a time, or a web tool that says "please upload your images to our server."

I kept refusing the upload. These are photos with EXIF coordinates of my neighborhood. The processing itself โ€” decode, scale, re-encode โ€” is what, 80 milliseconds of a phone CPU per image? Since roughly 2015. The upload wasn't a feature; it was an accident of where the tools got written.

So I wrote the one that doesn't upload.

The shape it took

A workflow (internally: a recipe) is an ordered chain of five step types: Crop ยท Resize ยท Compress ยท Format (JPG/PNG/WebP) ยท Strip EXIF. Resize takes a width cap or exact pixels; Compress takes a quality target or a hard size budget ("โ‰ค500 KB"); steps can repeat. Save the chain, name it, run it over any batch: system photo picker โ†’ per-image preview of output size before anything is written โ†’ Convert. Output goes to its own Pictures/ subfolder; originals are never touched. Every run is logged and replayable.

Six recipes ship built-in (WebP for blog images, Square 1080 for Instagram, LinkedIn 1200ร—627, Email โ‰ค2 MBโ€ฆ), because most people want to tap a verb, not configure a pipeline.

The design constraints I held the line on:

  • On-device or nothing. No upload endpoint exists in the app. It works in airplane mode. (Ads and anonymous crash stats are the only network traffic โ€” the ad SDK never sees your image bytes.)
  • No storage permission. The system photo picker is enough; the app literally cannot browse your gallery.
  • Originals are sacred. Output always goes to a new file. There's an opt-in overwrite mode in Settings for the people who really want it โ€” off by default, with a warning label.

Why "PixTally", and what about ImageRecipe?

The app's first public builds were named ImageRecipe โ€” literal, descriptive, and dead on arrival as a brand. It reads like a cooking blog, three syllables too long, and after a few months of saying it out loud I was still restating it. The product's actual promise is "run a whole batch and get a clean count of what changed," so it became PixTally. Everything technical stayed put: same package, same signature, existing installs update in place, saved workflows and history carry over untouched. 1.4.0 is the first release out of the gate with the new name โ€” store title is PixTally: Image Batch Workflow.

What beta caught

Closed testing earned its keep. The ugliest bug class was threading: the ad SDK's next-generation version dispatches load callbacks on background threads, and one of those callbacks flipped a View โ€” a crash that never reproduced in the emulator and showed up in exactly one crashlytics fingerprint on real devices. Fixed, plus a full regression matrix of rotate-mid-load / kill-mid-load / airplane-mode launches. Android 8โ€“9 storage quirks (no scoped storage, no RELATIVE_PATH) also shook out โ€” pre-Q devices write through a different code path that only a real 8.x device would have bullied into correctness.

The deal

Free: 3 saved recipes, 20-image batches, ads on. Pro is a one-time $4.99: unlimited recipes, unlimited batches, no ads. If PixTally saves you the one-by-one tap dance even once a week, it's worth five dollars โ€” and it will never, ever upload your photos to find out.

Install: play.google.com/store/apps/details?id=com.xiaoniubuniu.imagerecipe ยท Product site: pixtally.xiaoniubuniu.com

Next up: a workflow import/export format, and per-step undo in the editor. If you try it, tell me which built-in recipe you actually use โ€” the numbers decide what gets a seventh slot.

Related Posts

Want to chat about indie dev or collaborate? Let's talk โ†’

Get in Touch