Skip to main content
A scrollable gallery of your work — an image grid plus a row of embedded clips in one widget.

What goes in the widget

The portfolio schema has two arrays:
ArrayHoldsCap
imagesEach entry is { imageUrl, caption? }. The image URL must be https:// or a /uploads/... path uploaded from this widget.60 images.
clipsEach entry is { url } only. Allowed sources: YouTube, Twitch (video or clip), Streamable, Kick video.12 clips.
You need at least one image or one clip per portfolio widget — the schema rejects empty saves. For embedded clips we use the platform’s official iframe — no scraping, no proxying. Self-hosted video uploads are not part of the portfolio widget.

Per-item fields

Image entry

FieldWhat it does
Image URL / uploadThe image (uploaded via the widget editor or pasted as a URL — only https:// or /uploads/... accepted).
Caption (optional)Up to 200 chars. Shown under the thumbnail when item labels are on.
There’s no per-image “description”, “tags”, or alt-text override beyond the caption.

Clip entry

FieldWhat it does
URLPublic YouTube, Twitch (video or clip), Streamable, or Kick URL. Up to 2,048 chars.
Clips don’t have captions on the schema — the title shown in the embed is whatever the destination platform returns.

Widget options

OptionWhat it does
Image grid columns (portfolioGridColumnsPerRow)2–6. Omitted = 3.
Spread partial rowsWhen on, partial bottom rows use auto-fit to span full width. Off = fixed columns with empty space on the right.
Item labelsToggles the caption under each image (defaults on).
Item chromesolid / transparent / glass / blur (the same widgetItemChrome enum every widget uses).
There is no masonry / variable-height layout option — the grid is uniform tiles.

Tips

  • First image is the visual anchor — pick something that grabs attention.
  • Mix-and-match: a portfolio widget with 8 images and 1 hero clip reads cleanly.
  • For lots of video, use the Embed widget — it has dedicated grid columns + button/embed display modes.

Common questions

Not via the portfolio widget — the clips array only accepts YouTube / Twitch / Streamable / Kick URLs. For an <video>-style background, see Page background.
The Twitch player needs the page hostname to allowlist. We send the right parent= parameter — if you see this on a custom domain, drop us a message.
Yes. Add two portfolio widgets — one with images only, one with clips only.
Drop the column count. 2 columns is usually right for phones; 4 is comfortable on desktop.
Drag-and-drop the file from disk so it goes through the widget uploader, or paste a fully-qualified https:// URL. Local file paths (file://, C:\...) are not accepted.