Skip to content

Top-level fields

These keys live at the root of links.json, alongside categories or links.

FieldTypeNotes
$schemastringOptional. URL of the JSON Schema for editor autocomplete. See JSON Schema.
brandstringOrganization name. Shown in the top bar, used as the browser tab title. Editable from /admin.
titlestringCollection title shown as a sub-label next to the brand. Editable from /admin.
descriptionstringPage description / meta.
faviconstringURL or /api/icons/... path for the favicon. Set via the Branding panel in /admin.
imagestringOG image used when the page is shared on social platforms. Absolute URL or /api/icons/... path; recommended 1200×630.
themestringFirst-time-visitor theme: light, dark, or system. Both palettes are Catppuccin (Latte / Mocha).
accentstringOptional six-digit hex (e.g. #f38ba8) that overrides the accent color in both themes. Editable from /admin.
groupByTagbooleanFlat shape only. If true, links bucket into synthetic categories by their first tag.

brand vs title

brand is your wordmark (the thing on the left of the top bar — “Acme Co”). title is the sub-label (the collection name — “Internal links”). They render together as Acme Co / Internal links. Either is optional; both are editable from the admin Branding panel.

favicon

Accepts either an absolute URL or a /api/icons/<hash>... path. The admin panel lets you upload a file (cached locally) or paste an external URL (which jabol downloads and caches). Both produce the same /api/icons/... form in the persisted JSON.

image

Used at the head-tag layer only — jabol emits it as og:image and twitter:image so social platforms can render a large card when someone shares your URL. Kept separate from favicon because favicons are small icons (16–32px) and OG cards are large banners (1200×630 is the recommended size); reusing one for the other looks bad in previews.

If image is unset, jabol simply omits the og:image / twitter:image tags rather than falling back to the favicon — Slack/Twitter/Discord will render a plain text card instead of a broken icon-as-banner.

theme

Picks the default colour scheme for new visitors. Once a visitor has loaded the site once, their preference is stored in localStorage and overrides the file-level setting. Three values: light (Catppuccin Latte), dark (Catppuccin Mocha), or system (follows the visitor’s prefers-color-scheme).