Watermarks

Watermarks are a native runtime customization surface: text or an image drawn as chart pixels behind the series, not surrounding DOM.
The live watermark renders once per chart, within the main candle pane's bounds, at one of five positions — top-left, top-right, bottom-left, bottom-right, or center. Separate indicator panes do not repeat it.
Each outcome below states its exact visible result.
Choose the visible outcome
| Outcome | Settings | Persistence |
|---|---|---|
| Symbol/interval identity | autoText fields | Recomputed from active chart state |
| Fixed compliance text | text, position, typography, opacity | Persist with chart customization |
| Brand image | imageUrl, position, opacity, max size | Requires CORS-readable image for export |
| No watermark | visible: false | Explicitly disabled |
Symbol and interval identity
Visible result: the active symbol ticker, interval, and description composed as dimmed text (for example "BTCUSDT · 15m · Bitcoin / TetherUS") at the configured position of the main pane. The text recomputes automatically when the user changes symbol or interval — nothing is persisted as literal text.
chart.customization().setWatermark({
visible: true,
autoText: {
tickerVisible: true,
intervalVisible: true,
descriptionVisible: true,
},
position: 'center',
color: '#94a3b8',
opacity: 0.14,
fontSize: 34,
fontFamily: 'Inter, sans-serif',
fontWeight: 600,
maxWidth: 520,
});
Fixed custom text
Visible result: the literal string rendered with the configured typography. text is the highest-precedence content field — when set, it wins over autoText. The string persists with chart customization state, so it survives symbol changes.
chart.customization().setWatermark({
visible: true,
text: 'Internal — not for redistribution',
position: 'bottom-right',
opacity: 0.2,
fontSize: 18,
});
Brand image
Visible result: the image drawn at the configured position, constrained by maxWidth/maxHeight, faded by opacity. Remote images must be loadable by the browser and CORS-readable, or canvas export of the watermark will fail.
chart.customization().setWatermark({
visible: true,
imageUrl: 'https://cdn.example.com/brand-mark.svg',
position: 'top-left',
opacity: 0.12,
maxWidth: 160,
maxHeight: 64,
});
Opacity and contrast guidance
Keep opacity high enough to remain identifiable but low enough not to obscure candles, drawings, labels, or accessible contrast. The examples above use 0.12–0.2; center-positioned large text sits behind the densest content, so it tolerates the least opacity. Verify against both your light and dark themes, and verify the main pane and every separate pane — the watermark anchors to the main pane, so confirm separate panes are not unintentionally covered at your chosen position and size.
No watermark
visible: false disables the watermark explicitly; omitting the settings object leaves whatever the current customization state carries.
Settings reference
WatermarkSettings supports: visible, text, autoText (true or WatermarkAutoTextSettings), imageUrl, position, color, opacity, fontSize, fontFamily, fontWeight, maxWidth, maxHeight, and metadata.
text remains the highest-precedence content field. When text is omitted and autoText is enabled, the chart composes the watermark from the active symbol ticker, interval, and description.
Persistence in exports
Set includeWatermark: true on exportImage, exportImageAsync, uploadSnapshot, or copyImageToClipboard to draw the current native watermark into the exported bitmap. The synchronous exportImage path draws text and auto-composed watermarks. Image watermarks use exportImageAsync; uploadSnapshot and copyImageToClipboard call that async path automatically. Remote image watermarks must be loadable by the browser and CORS-readable for canvas export. Preview the export to verify text or branding, opacity, contrast, and placement — the exported artifact is the authoritative check that the watermark reads correctly.
Related pages
- Snapshots — the export paths that can persist the watermark.
- Styling Themes — theme context the watermark must stay readable against.
- Legend — the other identity surface on the main pane.