We run Živá Fotka in five language markets: Czech, Slovak, Polish, English and German, each on its own domain. The product turns a static photo into a short living video. It can also colorize black-and-white photos and apply edits so the output looks natural, not filtered.
Over 10,000 photos processed so far. 4.8 out of 5 from 1,200+ user ratings. Median processing time sits around 18 seconds.
We expected usage patterns to be roughly the same across all five markets. They aren't. The split reshaped how we build the product and how we think about localization on everything else we ship.
Czech and Slovak users lean toward old family photos. Scanned prints from the 1960s through the 1980s, black-and-white portraits, snapshots that have been sitting in a drawer for decades. What they want from the output: color restoration (when the original is B&W) and motion that feels natural and respectful, not cartoonish or gimmicky.
English-speaking users are different. Most uploads are recent photos: selfies, pet pictures, travel shots. The interest is in the animation effect itself. The emotional weight is lighter, the intent more playful.
Polish usage splits between family-archive material and occasion-driven uploads, especially weddings and events. German-market data is still early-stage, but the pattern tracks closer to CZ/SK than to EN.
Here's a simplified version of what we see:
| Market | Typical input | Primary intent | Colorization use |
|--------|--------------|----------------|-----------------|
| CZ/SK | Old B&W family photo, scanned print | Preserve a memory, share with family | High (60%+ of uploads are B&W) |
| EN | Recent photo, selfie, pet | Curiosity, social sharing | Low (under 15%) |
| PL | Mix of wedding/event photos and family archive | Occasion + memory | Medium (~30%) |
| DE | Skewing toward old photos (early signal) | Memory preservation | Medium-high |
When we first built colorization, it was a secondary feature. The core pitch was animation. But CZ/SK data made it clear fast: a user who uploads a black-and-white photo from 1975 expects color in the output. If the video comes back in grayscale, the reaction is disappointment. Nobody thinks "I should have found the colorize toggle." They think the product failed.
So we moved colorization from an explicit option to an automatic default. If the input image is detected as grayscale, the pipeline colorizes before animating. The user can override this, but the default flipped.
The detection itself was non-trivial. We check a histogram on the LAB color space rather than RGB, because scanned B&W prints often carry a yellow or sepia cast from aging paper. A naive RGB check classifies those as "color" and skips colorization, which is exactly wrong. LAB separates luminance from chrominance, so we can threshold on the A and B channels to catch desaturated images regardless of tonal cast.
Colorization adds 8 to 12 seconds of processing time. The EN market rarely needs it. We considered branching the pipeline per market but decided against it: maintaining two processing flows creates divergence that compounds with every update, and testing both properly doubles the QA surface. Instead, we made the grayscale detection fast (sub-second) so the colorization step only fires when the input actually needs it. CZ/SK users get what they expect by default. EN users don't pay a time penalty they didn't ask for.
The 68-point facial landmark model we use for animation worked well on clear, well-lit, front-facing photos. It broke down on scanned group photos from the 1970s: low resolution, faces at angles, sometimes partially obscured by other people or objects. The animation would distort features or miss faces entirely. For a product built around bringing old photos to life, this was a critical gap.
The root cause turned out to be preprocessing, not the model. We were feeding raw scans straight into landmark detection without any cleanup. Scanned prints carry noise, uneven exposure, physical damage (creases, stains), and resolution that varies wildly depending on the scanner and the original print size. The landmark model expected none of that.
Adding a lightweight super-resolution step before detection fixed most of the problem. We tested Real-ESRGAN and a smaller custom model trained on archival photo samples. The custom model won on speed (keeping total processing under 20 seconds was a hard constraint) while handling the specific noise patterns of scanned prints better than the general-purpose alternative.
The distorted-face complaint rate from CZ/SK users dropped significantly after this change. Cost: about 3 extra seconds per photo. For a product where the typical session processes a single photo, that tradeoff was straightforward.
What should have happened: we should have tested with actual archival inputs from the start. We built a test corpus of scanned prints from public-domain archives after the fact. If we had assembled it before launch, the landmark detection gap would have surfaced in development, not in user complaints.
The broader point here: translating the UI got us maybe 20% of the way to a real multi-market product. The Czech and English versions of Živá Fotka look identical. Same UI, same feature set, same onboarding. But the users bring different material and different expectations. If we had only looked at aggregate numbers, we would have optimized for an average user who doesn't exist.
We now separate per-market usage tracking from day one on every product we launch in multiple languages. The first question after a multi-market launch became "what is each market actually using this for," ahead of "how is the overall funnel." That habit started here.
The colorization discovery also influenced how we handle feature defaults on other products. The instinct is to keep new features optional and let power users find them. The Živá Fotka data showed that when a feature matches the dominant use case of a specific segment, hiding it behind a toggle means most of that segment never sees it. Defaults matter more than feature lists.
Živá Fotka is built by Inithouse. Upload a photo, get the result in under a minute. No account needed.