Visual Editor

The visual editor is where you'll spend most of your time editing. You'll see a copy of your webpage where you can edit metadata and any content regions you've defined.

To open the visual editor, choose the website you want to work with and then select a page to edit.

If you're working with a mouse, you'll see guides appear when you hover over content regions. To select a content region, just click or tap on it.

Some content regions, such as block and inline regions, will accept focus and provide a toolbar. Others will trigger a panel that appears on the right-side of the screen.

When you're done editing, select Publish from the sidebar to publish your changes back to the server.

Formatting Text

In block regions, sections can be formatted as headings, paragraphs, preformatted text, and blockquotes. The following elements can be produced using the paragraph menu in the toolbar.

Option Element Description
Heading 1–6 <h1> – <h6> A standard heading
Paragraph <p> A standard paragraph
Preformatted Text <pre> A block of text that leaves whitespace intact and is usually rendered with a monospace font
Blockquote <blockquote> A long quotation

In block, inline, and link regions, you can add formatting such as bold, italic, strikethrough, etc. The resulting markup is comprised of semantic HTML5 elements.

Option Element Description
Bold <strong> Strong or important text
Italic <em> Emphasized text
Strikethrough <del> Deleted text
Superscript <sup> Superscript text
Subscript <sub> Subscript text
Code <code> Computer code
Highlight <mark> Marked or highlighted text
Small Print <small> Small text, such as copyright, legal, and side comments


For best results, make sure your stylesheet has rules that target all possible elements.


The markup for links is pretty basic.

<a href="index.html">Home</a>

Links may also have a title or target attribute depending on the options chosen in the editor.


The markup for images depends on whether or not the image has a caption.

Images with captions will use the <figure> element.

<figure class="image">
  <img src="image.jpg" alt="Description">

Images without captions will use the <img> element.

<img src="image.jpg" alt="Description">


When an image is aligned, it will receive the align-left, align-right, or align-center class. You can use these classes to target specific alignments in your stylesheet.


Videos can be used to embed content from third-party websites. The markup used depends on the source of the embed. There are two ways to insert embeddable content.

You can copy and paste the embed code into the Video Panel and it will be added to the page as-is. This is the most reliable way, but it requires you to locate the embed code on the third-party's website. (Usually hidden behind a share button.)

For convenience, you can also paste a URL into the Video Panel and we'll try to fetch the embed code for you using the provider's oEmbed API. (For example, try pasting a YouTube or Vimeo URL.)

If the provider doesn't support oEmbed, you'll need to locate the embed code manually.


Tables are useful for displaying tabular data. New tables will use the following markup.

    <!-- more rows -->

Percentage units will be used when a table is resized. This ensures the table remains responsive even after resizing.


Anchors provide a way to deep link to specific parts of a page. New anchors will use this markup.

<a id="anchor-name"></a>

It's generally best to place anchors at the beginning of a heading or paragraph. When creating an anchor, make sure the id is unique from all others on the page.

Code Blocks

Code blocks are special elements that contains one or more lines of computer code. Surreal CMS uses the following W3C recommendation for structuring code blocks.

<pre class="cms-code">
  <code class="language-javascript">


You can use a third-party syntax highlighter to decorate code blocks. Learn more


Galleries are collections of images that you can add to any block region. You can make galleries interactive using JavaScript libraries such as Lightbox and Fancybox. Galleries use the following markup.

<div class="cms-gallery">
  <!-- images here -->

Gallery images use the markup shown below. Avoid adding classes and other attributes, as they will be removed when the gallery is parsed.

<a href="uploads/image.jpg">

Thumbnails are automatically generated when images are added to the gallery. They will be stored in the [uploads]/thumbnails/ folder on your server.

Galleries are very similar to Gallery Regions, but there are differences in how they're configured. The following data- attributes can be used on the containing content region to control how thumbnails and other features work.

Attribute Description Default
data-gallery-thumbnail-width The desired width of thumbnails. 256
data-gallery-thumbnail-height The desired height of thumbnails. 256
data-gallery-thumbnail-resize How to resize thumbnails.

fit – proportionally resize thumbnails to be no larger than the specified dimensions.

trim – proportionally resize thumbnails to the exact dimensions and trim the remaining overflow.
data-gallery-captions Captions are stored in each image's data-caption attribute. They're intended to be used with lightbox-style galleries. If you don't need them, set this to false. true
data-gallery-links A link to the full size image will be wrapped around each thumbnail. If you don't want your thumbnails wrapped in links, set this to false. true


If your gallery is a <ul> or <ol>, gallery images will be wrapped in <li>.

Section Breaks

You can insert section breaks into your document using the Insert menu. A section break is comprised of the following markup.


Historically, <hr> stood for horizontal rule and it was used to display a horizontal line on the page. The element was redefined in HTML5, and is now the semantically appropriate element for adding thematic breaks in content.