---
title: Fields
description: Discover Storyblok's documentation with comprehensive developer guides, user manuals, API references, and examples to help you get the most out of the headless CMS platform.
url: https://storyblok.com/docs/concepts/fields
---

# Fields

A field is a content input. Storyblok has fields for different types of content. Stories and blocks are made up of fields.

All field types (except group) contain generic configuration options:

-   Required (boolean): Disable saving when the field is empty
-   Display name (string): Label for the field in the Visual Editor
-   Field name (string): The key for the field on the API
-   Description (string): Explanatory text under the field in the editor
-   Show description as tooltip (boolean): Replace the description text with a tooltip
-   Translatable (boolean): Allows translation when field-level [translations](https://storyblok.com/docs/concepts/internationalization) are enabled (not applicable to block or group fields)
-   Default value (string): Initial value when the block is instantiated (not applicable to asset, multi-asset, link, table, group, or plugin fields)

The following fields and field configurations are available.

## Asset (Single or Multi)

An input to upload, browse, and select files hosted on Storyblok’s infrastructure.

-   Allow external URL (boolean): Display an input to link to a file externally
-   Filetypes (select): Restrict uploads to specific filetypes
-   Default assets folder (select): Define a starting location when opening the asset browser

> [!NOTE]
> See which MIME types are supported in the [assets concept](https://storyblok.com/docs/concepts/assets#asset-mime-types).

## Blocks

An input to add nested [blocks](https://storyblok.com/docs/concepts/blocks).

-   Allowed minimum (number): Enforce a lower limit on the number of blocks
-   Allowed maximum (number): Enforce an upper limit on the number of blocks
-   Manage access to nestable blocks (boolean): Restrict which nestable blocks users can insert. Once enabled, allow or deny access to selected blocks, block folders, and block tags.

## Boolean

A toggle stored as true or false, defaults to false.

-   Inline label (boolean): Display label beside toggle

## Date/time

A picker for a date or timestamp stored as an ISO 8601 date value (YYYY-MM-DD HH:MM).

-   Disable time selection (boolean): Restrict input to only date

> [!WARNING]
> The time displayed in the UI is calculated based on the time zone set in your account. The API returns the UTC time. For example, if your time zone is GMT+2, and you set the field's value to `2025-04-04 11:33`, the API returns `2025-04-04 09:33`.

## Group

A widget that opens and closes by a toggle to reveal or hide other fields. In the field editor, select fields to include in the group.

The group field is only a visual aid for organizing fields in the Visual Editor. It doesn't affect the API response.

## Link

A dynamic input to create a link to a website, story, asset, or email.

-   Restrict to content types (boolean): Restrict internal links to certain content types. Enabling this option reveals a drop-down to select content types)
-   Enable email field (boolean): Allow an email input
-   Enable asset selection (boolean): Allow an asset uploader/selector
-   Enable anchor field on internal link (boolean): Display a text input to manually define link IDs (such as `example.com#example-id`) on internal links
-   Allow links to open in new tab (boolean): Display an “Open in new window” toggle below the link field to define `target` as either `_self` or `_blank`
-   Enable custom attributes (boolean): Display a form to add custom properties (such as `title` and `rel`) to the link object
-   Force folder restriction (boolean): Restrict internal links to a specific folder. Enabling this option reveals a text input to define the folder.

## Markdown

A text input for formatted text stored as Markdown.

-   Rich text as default (boolean): display formatted text by default
-   Allow empty paragraphs (boolean): preserve empty space between paragraphs
-   Customize toolbar (boolean): configure the formatting options in the toolbar (enabling this option will reveal a multi-select input)
-   Maximum characters (number): set a hard limit on the length of text in the input
-   Enable RTL (boolean): support right-to-left text direction

## Number

A number input.

-   Min value (number): Disable saving when input is below a limit
-   Max value (number): Disable saving when input is above a limit
-   Number of decimals (number): Define the number of allowed decimal places
-   Number of steps (number): Define an interval for the increment/decrement buttons on the number input

## Option (Single or Multi)

A dropdown to select one or more items from a list. Options can be key–value pairs, stories, datasources, languages, or properties from an API.

-   Source (select): define a source for the selection options
-   Minimum (number): enforce a lower limit on the number of items
-   Maximum (number): enforce an upper limit on the number of items

For single- and multi-option fields, set a default value as follows:

-   **Self:** the value as a plain string
-   **Stories:** the story UUID as a plain string
-   **Languages:** the language code (as defined under **Settings** → **Internationalization**)
-   **Datasource:** the value as a plain string
-   **External JSON**: a URL of a [field plugin](https://www.storyblok.com/docs/plugins#field-plugins)

For example: `value_1`

For multi-option fields, set one or multiple default values as an array of values (wrapped in double quotation marks).

For example: `["value_1", "value_3"]`

When you choose **Stories** as a **Source**, you can restrict the stories available for selection to a specific folder. To apply this functionality, define the desired folder in the **Path to folder of stories** field.

> [!TIP]
> Use `{0}` or `{0}/{1}` as dynamic placeholders for the story’s own folder and sub-folder, respectively.
> 
>   
> 
> A similar option is available in the references field and the link field (when you select **Force folder restriction**).

## Plugin

An extendable, customizable input. Learn more about plugins in the [Plugins section](https://www.storyblok.com/docs/plugins) of the documentation.

## References

Links to stories in the same space.

-   Path to folder of stories (string): restrict the stories available for selection to a specific folder
-   Restrict to content type (select): restrict the available stories by content type
-   Enable advanced search (boolean): enable search with filtering, sorting, and pagination
-   Appearance (radio): display stories as a link or an illustrative card in the selector that appears in the Visual Editor
-   Minimum (number): enforce a lower limit on the number of references
-   Maximum (number): enforce an upper limit on the number of references

## Rich text

A text input for content with advanced and highly customizable formatting, stored as JSON.

-   Maximum characters (number): limit the allowed number of characters
-   Custom CSS class (object): enable custom CSS classes with a display name and value
-   Customize toolbar items (boolean): change the formatting options in the toolbar (enabling this option will reveal a menu to select formatting options)
-   Allow only specific components to be inserted (boolean): restrict blocks allowed in rich text composing (enabling this option will reveal a menu to select blocks)
-   Allow links to be open in a new tab (boolean): display an “Open in new window” toggle in the link editor to define `target` as either `_self` or `_blank`
-   Enable custom attributes (boolean): display a form to add custom properties (such as `title` and `rel`) to the link object

> [!NOTE]
> The rich text field is based on the [TipTap Editor](https://tiptap.dev/docs/editor/getting-started/overview).

[Storyblok richtext resolver](https://www.storyblok.com/docs/libraries/js/richtext) A JavaScript resolver for Storyblok's rich text field.

[Storyblok PHP Tiptap extension](https://github.com/storyblok/php-tiptap-extension) Tiptap extensions for Storyblok’s rich text field (co-created with SensioLabs, the creators of Symfony).

## Table

A simple table editor that allows you to insert, move, and delete a flexible number of columns and rows, and insert values.

The API returns this field separated by `thead` (the first row) and `tbody` (the following rows) and adds a component identifier to differentiate between `_table_head`, `_tablerow`, and `_table_col`:

```json
{
  "tbody": [
    {
      "_uid": "86aa3186-0b5a-4260-a6d5-5f9a0b4d9484",
      "body": [
        {
          "_uid": "1bdbf0fd-4163-4024-b110-114d781f1ba6",
          "value": "Value 1",
          "component": "_table_col"
        },
        {
          "_uid": "8c815645-22e8-4a4a-a87a-b68eb4c63a78",
          "value": "Value 2",
          "component": "_table_col"
        }
      ],
      "component": "_table_row"
    }
  ],
  "thead": [
    {
      "_uid": "d91eb405-2bc7-4da8-9b4a-a99744b3ef9f",
      "value": "Column 1",
      "component": "_table_head"
    },
    {
      "_uid": "5d615ffa-e2b8-4f79-88de-5a4bf08ee9a4",
      "value": "Column 2",
      "component": "_table_head"
    }
  ],
  "fieldtype": "table"
},
```

> [!TIP]
> The rich text field supports tables with more advanced options, such as merging cells, setting header columns, and defining cell background colors.

## Text

A text input for short strings, such as a product or author name.

-   Maximum characters (number): limit the allowed number of characters
-   Regex validation (string): disable saving unless input matches a regex pattern (for example, an email address)
-   RTL (boolean): support right-to-left text direction

## Textarea

A text input for a paragraph without formatting, such as a meta description or teaser text.

-   Maximum characters (number): limit the allowed number of characters
-   Regex validation (string): disable saving unless input matches a regex pattern (for example, an email address)
-   RTL (boolean): support right-to-left text direction

## Conditional fields

Conditional fields are fields that can appear, disappear, or be required based on the value of other fields (for example, “Reveal the `internal_title` field only if the `title` field is empty, and make the `internal_title` field required”).

To create a conditional field, open the field editor; choose a conditional setting (if **all** or **any** of the following conditions are true), and choose whether to hide, show, or mark as required a field.

> [!NOTE]
> Conditional fields are only available on some plans. Check our [pricing plans](https://www.storyblok.com/pricing) for more information.

## Deprecated fields

The following fields are deprecated:

-   Image
-   File

## Pagination

-   [Previous: E-commerce](https://storyblok.com/docs/concepts/e-commerce)
-   [Next: FlowMotion](https://storyblok.com/docs/concepts/flowmotion)
