> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adriel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Widget layout

> Add, move, duplicate, resize, and remove widgets on a dashboard — plus how layout behaves in Report mode.

Every widget on the dashboard sits inside a grid cell. Move and resize widgets directly on the grid — there is no separate layout editor.

## Move a widget

Hover the widget header. The cursor turns into a grab handle in the top-left corner. Drag the widget anywhere on the grid; surrounding widgets reflow to make space.

## Resize a widget

Every widget starts at a default size that fits its content. To change it, hover the widget's bottom-right corner — a resize cursor appears. Drag outward to enlarge, inward to shrink. The widget snaps to grid cells, so the final size is always aligned with neighboring widgets. The dashboard grid is 6 columns wide.

## Duplicate a widget

**Duplicate widget** creates a copy of the widget on the same dashboard, placed near the original. All the widget's settings — breakdowns, filters, data sources, styling — carry over to the copy, so the duplicate starts as an exact match of the original.

To duplicate a widget, open the widget's quick menu and choose **Duplicate widget**. `[?]` Confirm the exact affordance (button label / icon location) with eng.

Once the duplicate is on the grid, move, resize, or reconfigure it independently. Changes to the copy don't affect the original, and vice versa.

**Notepad widgets** carry their content across too: the rich-text content of the original notepad is copied into the duplicate, so the copy opens with the same body text as its source.

Duplicating a widget requires the same permission as deleting a widget — workspace admins and members with **View and edit** access can duplicate; **View only** members cannot. See [Permissions and access](/data-sources/managing/permissions-and-access) for the role matrix.

As with any layout change, click **Save dashboard** to persist the duplication.

## Vertical vs custom alignment

The dashboard's style panel exposes two alignment modes:

* **Vertical** (default) — widgets auto-stack in the order they were added. Move and resize still work, but layout snaps back to vertical order after each change.
* **Custom** — widgets stay wherever they were dropped. Dragging a widget into an occupied space pushes the existing widget down instead of snapping.

Use vertical for simple list-style dashboards. Use custom for branded layouts where exact placement matters (executive dashboards, client reports).

## Move a widget between pages (report mode)

The dashboard grid is a single scrollable surface — there are no "pages" until Report mode is on. In **Report mode**, the grid is paginated to A4 pages, and widgets can be dragged from one page to another. The page acceptance is checked live as the widget is dragged: pages that don't have room highlight as unavailable.

To re-arrange pages without Report mode on, change the order in normal mode by moving widgets up or down the grid — top of the grid is page 1 in Report mode, and each configured page break starts a new page.

Detail: [Report creation](/dashboards/building/report-creation)

## Page breaks

When the dashboard uses custom alignment, hard page breaks can be enabled in the style panel. Each page break starts a new page in Report mode and PDF export. Page breaks have no visible effect outside Report mode.

## Save behavior

To apply any changes, click **Save dashboard**.

## When a widget value looks stale after moving

Moving a widget does not change its data — the same query, same date range, same filters. If a value looks wrong after repositioning, click **Refresh data** in the dashboard header to bypass cached results. A browser refresh alone only re-renders cached data.

## Related

* [Customizing dashboards](/dashboards/building/customizing-dashboards)
* [Report creation](/dashboards/building/report-creation)
* [Widget library overview](/widgets/widget-library/overview)
* [Bulk-delete widgets](/widgets/widget-actions/widget-list-actions)
