Skip to content

Atom label settings

Screen-space labels are opt-in and avoid displayed atoms and other labels. This is the exhaustive option table — for the narrative, see the dedicated Atom Labels section: activating labels, how placement works (the concepts behind the placement, repair, callout, and performance knobs below), and labels in the widget.

OptionTypeDefaultDescription
atomLabels.showString or Array"none"none, all, non-hydrogen, or an array of atom selectors/specifications.
atomLabels.placementModeString"auto-omit"auto-omit adaptively uses quality placement for ordinary visible workloads and performance placement for dense ones; quality-omit forces exact candidate evaluation with repair; performance-omit forces front-to-back, zoom-specific no-space reuse without repair; maximum-coverage searches farther and adds callouts. Omission modes reject confusing crossings.
atomLabels.textObject{}Optional display-text overrides keyed by base label or symmetry-qualified atom ID.
atomLabels.fontSizeNumber14Canvas text font size in CSS pixels.
atomLabels.fontWeightNumber500Canvas text font weight.
atomLabels.fontFamilyString"system-ui, -apple-system, sans-serif"Canvas text font family.
atomLabels.colorModeString"uniform"uniform uses atomLabels.color; atom uses each atom's element colour.
atomLabels.colorColor"#111111"Label text colour in uniform colour mode.
atomLabels.atomColorLuminanceCeilingNumber0.25In atom colour mode, the element palette is scaled so its brightest colour reaches this relative-luminance ceiling without clustering colours there.
atomLabels.atomColorLuminanceFloorNumber|nullnullWhen set (0–1), replaces the ceiling: in atom colour mode the palette is mixed towards white so its darkest element colour reaches this relative luminance — keeps labels readable on dark backgrounds. See the default dark theme.
atomLabels.haloColorColor"#ffffff"Contrast halo colour behind label text.
atomLabels.haloWidthNumber2Contrast halo width in CSS pixels.
atomLabels.leaderLinesString"auto"Controls when leader lines from a label to its atom are drawn.
atomLabels.leaderColorColor"rgba(17, 17, 17, 0.55)"Leader-line colour.
atomLabels.leaderWidthNumber1Leader-line width in CSS pixels.
atomLabels.atomPaddingNumber3Collision clearance around atoms in CSS pixels.
atomLabels.bondPaddingNumber2Collision clearance around bonds in CSS pixels.
atomLabels.labelPaddingNumber2Collision clearance between labels in CSS pixels.
atomLabels.viewportPaddingNumber4Collision clearance to the viewport edges in CSS pixels.
atomLabels.fallbackDistanceNumber18Farther fallback spacing when close placements are unavailable, in CSS pixels.
atomLabels.maxConnectorLengthNumberInfinityHard connector-length ceiling in CSS pixels. Labels which cannot fit within the ceiling are omitted rather than drawn with extreme connectors.
atomLabels.ringPenaltyNumber1000Candidate scoring penalty for interference with ADP rings.
atomLabels.movementPenaltyNumber80Candidate scoring penalty for movement between successive layouts.
atomLabels.repairDepthNumber2Maximum depth of displacement repair before a label is omitted or given a distant callout. Set to 0 to disable repair.
atomLabels.repairSearchLimitNumber48Maximum candidate evaluations during displacement repair. Set to 0 to disable repair.
atomLabels.autoPerformanceLabelThresholdNumber500Visible requested-label count above which auto-omit selects performance placement. Because this uses the current projection, zooming may switch policy.
atomLabels.performanceNoSpaceCellSizeNumber24Screen-space tile size used by performance placement. Larger tiles reuse more front-atom no-space results but may omit more deeper labels. Tiles are rebuilt after zoom or other camera changes.
atomLabels.spatialCellSizeNumber64Uniform screen-space collision-index cell size in CSS pixels.
atomLabels.useWorkerBooleantrueRuns collision placement in a Web Worker after the structure's first paint. Unsupported or failed workers fall back to the main thread.
atomLabels.showLoadingIndicatorBooleantrueShows an accessible progress status when asynchronous layout exceeds the configured delay.
atomLabels.loadingIndicatorDelayMsNumber120Delay in milliseconds before the loading indicator appears.
atomLabels.layoutThrottleMsNumber32Minimum time between relayouts during interaction, in milliseconds.
atomLabels.interactionLabelLimitNumber300Label count above which relayout is deferred until interaction ends.
atomLabels.hideLabelsDuringDeferredLayoutBooleantrueHides stale labels while a deferred layout is recomputed after dragging, avoiding after-images.
atomLabels.calloutPlacementString"structure"structure keeps maximum-coverage callouts just outside the projected structure; viewport uses the full viewport edges.
atomLabels.calloutGapNumber12Compact structure clearance for callouts in CSS pixels.
atomLabels.maximumCoverageDistanceStepsNumber6Number of local radial distance bands searched in maximum-coverage mode before callouts. More bands give repair additional moderate placements at added worker cost.
atomLabels.calloutColumnsNumber3Callout lane count used by maximum-coverage placement.
atomLabels.calloutColumnGapNumber8Horizontal spacing between callout lanes in CSS pixels.
atomLabels.calloutRowGapNumber4Vertical spacing between callout rows in CSS pixels.
atomLabels.calloutSearchLimitNumber64Maximum callout candidates examined per label.
atomLabels.calloutChoiceLimitNumber4Maximum callout candidates retained per label.
atomLabels.leaderBondCrossingPenaltyNumber25Candidate-score penalty for a leader line crossing a displayed bond.
atomLabels.maxVisibleNumberInfinityMaximum labels attempted; excess labels are reported as hidden.