Privacy and determinism

What Bitgrain does on your own device, exactly what gets sent to its servers and when (cloud sync, thumbnails, recipes, presets, templates), how repeatable the effects are, and where seeds come in. Bitgrain has no generative models and does not train on your work.

The short version

What runs on your device

TaskWhere it happens
Decoding HEIC, TIFF and camera RAW filesIn your browser
Every effect in the editor, studio and video editorIn your browser, mostly in background workers so the page stays responsive
Encoding PNG, JPEG, WebP, HDR PNG, SVG and PDF exportsIn your browser
Riso separations and animate-a-stillIn your browser
Video preview, effects and MP4 or WebM exportIn your browser
Saving projects on the free planYour browser's local storage (IndexedDB)
Imported video, audio and fonts in the video editorYour browser's local storage, on every plan

Because processing is local, the speed you get depends on your computer, not on a queue on someone else's server. It also means Bitgrain keeps working if its servers are having a bad day, as long as the page is already loaded.

What is sent to Bitgrain, and when

Nothing below happens unless you take the action described.

ActionWhat is sentWho can see it
Creating an account or signing inYour name, email, and a password hash (email accounts) or your Google name, email and pictureOnly you and Bitgrain
Studio projects on Pro (cloud sync)The whole project, including images placed in it, plus a small thumbnail for the project listOnly you
Video projects on Pro (cloud sync)The edit (tracks, clips, text, effects, settings) and a thumbnail. Imported media files are not sent.Only you
Saving a custom preset to your accountThe preset's name and settings, no imageOnly you
Syncing a design kitColors, type styles and number tokensOnly you
publish to community in the editorThe name you give the look, your display name, its settings, and a small preview (480 pixels on the long edge) of your resultEveryone, in the recipes gallery
copy recipe linkNothing is sent. The settings are written into the link itself, and no image is included.Whoever you give the link to
Raising a support ticketWhat you write, your email, and the address of the page you were onYou and Bitgrain
Using the help chatThe messages you typeBitgrain
Buying ProOrder details go to Razorpay or PayPal. Bitgrain never sees your card.Bitgrain and the payment provider
Rendering through the assistant connectorThe images and settings your assistant sends, and the finished filesOnly you, through signed links

Things that come from Bitgrain to you

Templates, template images, sample photos, mockup scenes and fonts are downloaded from Bitgrain (or from Google Fonts for fonts) when you use them. Downloading a template does not send your work anywhere.

Usage analytics

Bitgrain records product usage events so it can see which features are used and where things break, for example that an export happened, its format and size, or that a RAW conversion failed. These events describe what you did, not your images. The privacy policy lists the providers involved and how long data is kept.

No training, no generation

Bitgrain does not contain a generative model. Every effect is a written algorithm with controls you can see: a dither is an error-diffusion or threshold pattern, a halftone is a grid of dots sized by brightness, a film grade is a lookup table. Nothing is invented, filled in or upscaled by a model.

Your work is not used to train anything. The only copies Bitgrain keeps are the ones you chose to store, such as synced projects, and they exist to give them back to you.

Determinism

Bitgrain is built to be repeatable. Given the same source image and the same settings, an effect produces the same pixels every time, on any computer. That is why a recipe or a .btg file reproduces a look exactly, and why a video re-export matches the last one.

Why the working resolution matters

Many effects run on a working grid rather than on every pixel of your photo. A halftone dot or an ASCII character is one cell of that grid. The Resolution slider in adjustments sets how many cells there are.

This has two consequences:

Seeds

Where an effect needs variation, such as scattering dust or the spatter in pop grunge, it uses a seed: a number that decides the pattern. The same seed always gives the same pattern.

WhereControlRange
Studio layer effects, dust and scratchesSeed0 to 9999, default 7
Video effect clips, dust and scratchesSeed0 to 999, default 7
Video effects over timeEach frame gets its own seed from its time in the clipAutomatic

Change the seed to get a different arrangement. Set it back and you get the original again. In video, the per-frame seed is why textures move from frame to frame but come out identical every time you export. Effects and overlays covers this in more detail.

Where results can vary

Every effect is seeded, including the grainy ones: Film Grain, the noise in Grunge ASCII, the random dither method and the print finish pass all draw from a seeded pattern, so the same image and settings give the same pixels on every render and export.

What can still differ slightly is outside the effects engine:

The random button in the editor also uses chance to pick a combination of effects. Once it has picked, the settings are fixed like any others and render the same way every time.

Where your data lives

Deleting your account removes what is stored in it. See deleting your account.

More documentation