---
title: "ViewHelper index as JSON"
manual: "Render guides"
version: "main"
permalink: "https://docs.typo3.org/permalink/t3renderguides:viewhelperindexjson"
source: "Developer/ViewHelperIndex.rst"
rendered: "2026-10-05T15:51:40+00:00"
---

# ViewHelper index as JSON {#viewhelperindexjson}

A manual that documents ViewHelpers with `..  typo3:viewhelper::` is
rendered with a `viewhelpers.json` beside its
[toc.json](https://docs.typo3.org/permalink/t3renderguides:tableofcontentsjson). It lists every ViewHelper by the name a
template writes, with what the file describing it says and where the manual
shows it:

```json
{
  "project": {
    "title": "Fluid ViewHelper Reference",
    "version": "main",
    "permalink": "https://docs.typo3.org/permalink/t3viewhelper:{anchor}@main"
  },
  "viewhelpers": {
    "f:format.html": {
      "class": "TYPO3\\CMS\\Fluid\\ViewHelpers\\Format\\HtmlViewHelper",
      "namespace": "TYPO3\\CMS\\Fluid\\ViewHelpers",
      "xmlNamespace": "http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers",
      "summary": "ViewHelper to render a string which can contain HTML markup …",
      "documentation": "ViewHelper to render a string …",
      "docTags": {
        "@see": "https://docs.typo3.org/permalink/t3tsref:parsefunc"
      },
      "allowsArbitraryArguments": false,
      "source": "https://github.com/TYPO3/typo3/blob/main/…/Format/HtmlViewHelper.php",
      "arguments": {
        "current": {
          "type": "string",
          "required": false,
          "description": "Initialize the content object with this value …",
          "anchor": "viewhelper-argument-typo3-cms-fluid-viewhelpers-format-htmlviewhelper-current",
          "permalink": "https://docs.typo3.org/permalink/t3viewhelper:viewhelper-argument-…-current@main"
        }
      },
      "path": "Global/Format/Html",
      "anchor": "viewhelper-typo3-cms-fluid-viewhelpers-format-htmlviewhelper",
      "permalink": "https://docs.typo3.org/permalink/t3viewhelper:viewhelper-typo3-cms-fluid-viewhelpers-format-htmlviewhelper@main"
    }
  }
}
```

A ViewHelper is keyed by the prefix of its namespace, the
`namespaceAlias` of the describing file, and its tag name:
`f:format.html`, `be:moduleLink`, `core:icon`. That is the
name a template uses and a reader looks for. `objects.inv.json` lists the
same ViewHelpers by a key made from the class and a title without the prefix,
and says nothing about them.

Each ViewHelper carries:

-   **class, namespace, xmlNamespace**

    As the describing file states them.

-   **summary**

    The first paragraph of the documentation, as plain text.

-   **documentation**

    The documentation as the describing file writes it.

-   **docTags**

    The doc tags of the class, such as `@see` or `@deprecated`.
    Left out where there are none.

-   **allowsArbitraryArguments**

    Whether the ViewHelper takes arguments it does not declare.

-   **source**

    The class on GitHub, where the describing file says where its sources
    are.

-   **arguments**

    Each argument by its name, with its `type`, whether it is
    `required`, its `default` as a PHP literal where it has one,
    its `description`, and its own `anchor` and
    `permalink`.

-   **path, anchor, permalink**

    The page that shows the ViewHelper, relative to this file and without an
    extension as in `toc.json`, its anchor, and the permalink built
    from it. A manual without an interlink shortcode has no permalinks.

A ViewHelper shown with `:noindex:` is listed where it is documented,
not where it is shown again. A manual without ViewHelpers writes no
`viewhelpers.json`.

For the Fluid ViewHelper Reference the file lists 159 ViewHelpers with 712
arguments in about 630 KB.
