The short answer
Gemini's visible watermark is 48×48 pixels with a 32px right/bottom margin on 0.5K and 1K outputs, and 96×96 pixels with a 64px margin on 2K and 4K outputs. One confirmed size, 2816×1536, breaks that pattern with a 192px margin instead. Every number below comes from src/core/geminiSizeCatalog.js in the open-source engine, regenerated for this page rather than typed by hand.
Why a catalog beats a rule of thumb
Gemini image generation does not emit arbitrary dimensions. Each model family and resolution tier renders to one of a small, fixed set of official pixel sizes, so a lookup table is a better watermark prior than an if/else chain built on ratios and guesses. The source file backing this page carries 68 catalog entries covering 67 unique pixel dimensions across six model-family and resolution-tier combinations. The gap between those two numbers is not rounding error: 1024×1024 is the only pixel size two different tiers both render at, gemini-3.x-image's 1k tier and gemini-2.5-flash-image's 1k tier, and the catalog keeps a single authoritative entry for it rather than two conflicting ones. That single collision is the entire difference between 68 and 67, and it is why 67 verified size profiles is the honest number to quote, not 68.
A rounded rule such as "small images get a small mark, large images get a large one" is easier to remember, and it is also exactly the kind of approximation that breaks the moment a size does not follow it. A broken assumption in watermark detection rarely fails loudly. It either misses a mark that is really there, or it treats the wrong region as the mark and edits pixels that should have been left untouched. Measuring every entry once, in code, and re-checking it here on every rebuild is the alternative to trusting that a general pattern happens to hold for the specific file in front of you.
The geometry, in three numbers
| Tier | Watermark size | Margin and notes |
|---|---|---|
| 0.5K (gemini-3.x-image) | Supported | 48×48px logo, 32px right/bottom margin. 14 official sizes. |
| 1K (gemini-3.x-image, current) | Supported | 48×48px logo, 32px margin. 15 official sizes. A legacy 96×96px / 64px variant is kept as a documented secondary search candidate for older exports. |
| 2K (gemini-3.x-image) | Supported | 96×96px logo, 64px margin. 14 official sizes. |
| 2816×1536 exception | Conditional | 96×96px logo, but a 192px margin instead of 64px, with alpha variant 20260520. One confirmed size only. |
| 4K (gemini-3.x-image) | Supported | 96×96px logo, 64px margin. 14 official sizes. |
| 1K (gemini-2.5-flash-image) | Supported | 96×96px logo, 64px margin for 9 sizes. Its 1024×1024 entry is shadowed by the gemini-3.x-image entry above and resolves to 48×48 / 32px instead. |
The full catalog
Every table below is generated from the same source file and lists the aspect ratio, the exact pixel size, the resolved watermark size, its right/bottom margin, and the computed top-left watermark position (x, y) for that size. Positions are measured from the image's top-left corner, so x and y are always width − marginRight − logoSize and height − marginBottom − logoSize.
gemini-3.x-image · 0.5K (14 sizes)
| Aspect | Size | Watermark | Margin | Position (x, y) |
|---|---|---|---|---|
| 1:1 | 512×512 | 48×48 | 32/32 | 432, 432 |
| 1:4 | 256×1024 | 48×48 | 32/32 | 176, 944 |
| 1:8 | 192×1536 | 48×48 | 32/32 | 112, 1456 |
| 2:3 | 424×632 | 48×48 | 32/32 | 344, 552 |
| 3:2 | 632×424 | 48×48 | 32/32 | 552, 344 |
| 3:4 | 448×600 | 48×48 | 32/32 | 368, 520 |
| 4:1 | 1024×256 | 48×48 | 32/32 | 944, 176 |
| 4:3 | 600×448 | 48×48 | 32/32 | 520, 368 |
| 4:5 | 464×576 | 48×48 | 32/32 | 384, 496 |
| 5:4 | 576×464 | 48×48 | 32/32 | 496, 384 |
| 8:1 | 1536×192 | 48×48 | 32/32 | 1456, 112 |
| 9:16 | 384×688 | 48×48 | 32/32 | 304, 608 |
| 16:9 | 688×384 | 48×48 | 32/32 | 608, 304 |
| 21:9 | 792×168 | 48×48 | 32/32 | 712, 88 |
gemini-3.x-image · 1K, current (15 sizes)
| Aspect | Size | Watermark | Margin | Position (x, y) |
|---|---|---|---|---|
| 1:1 | 1024×1024 | 48×48 | 32/32 | 944, 944 |
| 1:4 | 512×2048 | 48×48 | 32/32 | 432, 1968 |
| 1:8 | 384×3072 | 48×48 | 32/32 | 304, 2992 |
| 2:3 | 848×1264 | 48×48 | 32/32 | 768, 1184 |
| 3:2 | 1264×848 | 48×48 | 32/32 | 1184, 768 |
| 3:4 | 896×1200 | 48×48 | 32/32 | 816, 1120 |
| 4:1 | 2048×512 | 48×48 | 32/32 | 1968, 432 |
| 4:3 | 1200×896 | 48×48 | 32/32 | 1120, 816 |
| 4:5 | 928×1152 | 48×48 | 32/32 | 848, 1072 |
| 5:4 | 1152×928 | 48×48 | 32/32 | 1072, 848 |
| 8:1 | 3072×384 | 48×48 | 32/32 | 2992, 304 |
| 9:16 | 768×1376 | 48×48 | 32/32 | 688, 1296 |
| 16:9 | 1376×768 | 48×48 | 32/32 | 1296, 688 |
| 16:9 | 1408×768 | 48×48 | 32/32 | 1328, 688 |
| 21:9 | 1584×672 | 48×48 | 32/32 | 1504, 592 |
1376×768 and 1408×768 are both confirmed 16:9 entries at this tier; the second is a distinct catalog record, not a typo, which is exactly the kind of near-duplicate a hand-maintained list would be tempted to collapse into one.
gemini-3.x-image · 2K (14 sizes)
| Aspect | Size | Watermark | Margin | Position (x, y) |
|---|---|---|---|---|
| 1:1 | 2048×2048 | 96×96 | 64/64 | 1888, 1888 |
| 1:4 | 1024×4096 | 96×96 | 64/64 | 864, 3936 |
| 1:8 | 768×6144 | 96×96 | 64/64 | 608, 5984 |
| 2:3 | 1696×2528 | 96×96 | 64/64 | 1536, 2368 |
| 3:2 | 2528×1696 | 96×96 | 64/64 | 2368, 1536 |
| 3:4 | 1792×2400 | 96×96 | 64/64 | 1632, 2240 |
| 4:1 | 4096×1024 | 96×96 | 64/64 | 3936, 864 |
| 4:3 | 2400×1792 | 96×96 | 64/64 | 2240, 1632 |
| 4:5 | 1856×2304 | 96×96 | 64/64 | 1696, 2144 |
| 5:4 | 2304×1856 | 96×96 | 64/64 | 2144, 1696 |
| 8:1 | 6144×768 | 96×96 | 64/64 | 5984, 608 |
| 9:16 | 1536×2752 | 96×96 | 64/64 | 1376, 2592 |
| 16:9 | 2752×1536 | 96×96 | 64/64 | 2592, 1376 |
| 21:9 | 3168×1344 | 96×96 | 64/64 | 3008, 1184 |
gemini-3.x-image · 2K exception (1 size)
| Aspect | Size | Watermark | Margin | Position (x, y) | Alpha variant |
|---|---|---|---|---|---|
| 16:9 | 2816×1536 | 96×96 | 192/192 | 2528, 1248 | 20260520 |
gemini-3.x-image · 4K (14 sizes)
| Aspect | Size | Watermark | Margin | Position (x, y) |
|---|---|---|---|---|
| 1:1 | 4096×4096 | 96×96 | 64/64 | 3936, 3936 |
| 1:4 | 2048×8192 | 96×96 | 64/64 | 1888, 8032 |
| 1:8 | 1536×12288 | 96×96 | 64/64 | 1376, 12128 |
| 2:3 | 3392×5056 | 96×96 | 64/64 | 3232, 4896 |
| 3:2 | 5056×3392 | 96×96 | 64/64 | 4896, 3232 |
| 3:4 | 3584×4800 | 96×96 | 64/64 | 3424, 4640 |
| 4:1 | 8192×2048 | 96×96 | 64/64 | 8032, 1888 |
| 4:3 | 4800×3584 | 96×96 | 64/64 | 4640, 3424 |
| 4:5 | 3712×4608 | 96×96 | 64/64 | 3552, 4448 |
| 5:4 | 4608×3712 | 96×96 | 64/64 | 4448, 3552 |
| 8:1 | 12288×1536 | 96×96 | 64/64 | 12128, 1376 |
| 9:16 | 3072×5504 | 96×96 | 64/64 | 2912, 5344 |
| 16:9 | 5504×3072 | 96×96 | 64/64 | 5344, 2912 |
| 21:9 | 6336×2688 | 96×96 | 64/64 | 6176, 2528 |
gemini-2.5-flash-image · 1K (10 sizes)
| Aspect | Size | Watermark | Margin | Position (x, y) |
|---|---|---|---|---|
| 1:1 | 1024×1024 | 48×48 | 32/32 | 944, 944 |
| 2:3 | 832×1248 | 96×96 | 64/64 | 672, 1088 |
| 3:2 | 1248×832 | 96×96 | 64/64 | 1088, 672 |
| 3:4 | 864×1184 | 96×96 | 64/64 | 704, 1024 |
| 4:3 | 1184×864 | 96×96 | 64/64 | 1024, 704 |
| 4:5 | 896×1152 | 96×96 | 64/64 | 736, 992 |
| 5:4 | 1152×896 | 96×96 | 64/64 | 992, 736 |
| 9:16 | 768×1344 | 96×96 | 64/64 | 608, 1184 |
| 16:9 | 1344×768 | 96×96 | 64/64 | 1184, 608 |
| 21:9 | 1536×672 | 96×96 | 64/64 | 1376, 512 |
The 1024×1024 row above is where the one dimension collision lives: on its own, gemini-2.5-flash-image's 1K tier would put a 96×96 mark at a 64px margin there, matching its other nine sizes. But the catalog resolves any 1024×1024 file against the first entry that claims that pixel size, which is gemini-3.x-image's 1K tier, so the resolved watermark is actually 48×48 at a 32px margin. This only matters if you are cross-referencing a 1024×1024 file against the "wrong" table above; the removal engine itself does not need you to know which model produced a file, because it searches the catalog by pixel size, not by declared model.
Where the catalog stops and search begins
A file matching one of the 67 sizes above gets an exact catalog lookup. A file that is close but not exact, for example a re-export scaled by a consistent factor, does not get treated as unsupported by default. The engine projects the nearest official entry's watermark position onto the new dimensions when the aspect ratio is close enough and the horizontal and vertical scale factors agree closely enough with each other, then validates that projected candidate against the actual pixel data before trusting it. That is a search seed, not a guarantee: what a supported match still cannot save you from is any file where the mark itself has been cropped, resized non-uniformly, or recompressed past the point the calibrated edge profile survives.
Using this table
If you are validating your own pipeline against Gemini output, start from the exact pixel dimensions your generator reports, look up the matching tier above, and check both the watermark size and the margin before assuming a corner region. The supported sizes and formats guide covers the adjacent question of which file formats and workflows the tool accepts; this page is the geometry reference that guide points back to. If a result still looks wrong on a file whose dimensions are in this catalog, the troubleshooting guide walks through the most common reasons a specific file gets skipped. For automated, repeatable checks against many files at once, the batch workflow covers running the identical detection and removal engine outside the browser over a whole folder in one pass. Anyone who wants to verify any of the numbers on this page against the actual running code, rather than take this table on faith, can read the full open-source repository directly.
Last updated 2026-07-31