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.
| Task | Where it happens |
|---|---|
| Decoding HEIC, TIFF and camera RAW files | In your browser |
| Every effect in the editor, studio and video editor | In your browser, mostly in background workers so the page stays responsive |
| Encoding PNG, JPEG, WebP, HDR PNG, SVG and PDF exports | In your browser |
| Riso separations and animate-a-still | In your browser |
| Video preview, effects and MP4 or WebM export | In your browser |
| Saving projects on the free plan | Your browser's local storage (IndexedDB) |
| Imported video, audio and fonts in the video editor | Your 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.
Nothing below happens unless you take the action described.
| Action | What is sent | Who can see it |
|---|---|---|
| Creating an account or signing in | Your name, email, and a password hash (email accounts) or your Google name, email and picture | Only you and Bitgrain |
| Studio projects on Pro (cloud sync) | The whole project, including images placed in it, plus a small thumbnail for the project list | Only 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 account | The preset's name and settings, no image | Only you |
| Syncing a design kit | Colors, type styles and number tokens | Only you |
| publish to community in the editor | The name you give the look, your display name, its settings, and a small preview (480 pixels on the long edge) of your result | Everyone, in the recipes gallery |
| copy recipe link | Nothing is sent. The settings are written into the link itself, and no image is included. | Whoever you give the link to |
| Raising a support ticket | What you write, your email, and the address of the page you were on | You and Bitgrain |
| Using the help chat | The messages you type | Bitgrain |
| Buying Pro | Order details go to Razorpay or PayPal. Bitgrain never sees your card. | Bitgrain and the payment provider |
| Rendering through the assistant connector | The images and settings your assistant sends, and the finished files | Only you, through signed links |
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.
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.
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.
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.
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:
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.
| Where | Control | Range |
|---|---|---|
| Studio layer effects, dust and scratches | Seed | 0 to 9999, default 7 |
| Video effect clips, dust and scratches | Seed | 0 to 999, default 7 |
| Video effects over time | Each frame gets its own seed from its time in the clip | Automatic |
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.
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.
Deleting your account removes what is stored in it. See deleting your account.