HTML in Oracle APEX Plug-in Help Text & Examples: What Actually Works?

APEX Plug-in PL/SQL

HTML in Oracle APEX Plug-in Help Text & Examples: What Actually Works?

A tested reference for which HTML tags Oracle APEX really renders inside custom plug-in attribute help — and which ones it silently ignores.

📅 August 2026 👤 Sajjad Hanifa 🧪 Tested on Oracle APEX 23.2

When you build your own Oracle APEX plug-in, every custom attribute can carry two separate pieces of documentation: a Help Text and a separate Examples text. Both show up in the Page Designer's contextual help panel the moment a developer clicks on that attribute.

At first glance these look like plain text fields. In reality, Oracle APEX quietly renders a limited subset of HTML inside them — which means your help text can look a lot more polished than a plain paragraph: bold headings, real paragraphs, lists, inline code, and even emojis.

This post documents exactly which HTML tags worked in a hands-on test with Oracle APEX 23.2, which tags were silently ignored, and how to structure a genuinely professional Help Text for your own plug-in attributes.


Where Can These Texts Be Used?

The formatting described in this post applies to two fields on every custom Oracle APEX plug-in attribute:

📝
Help Text
Explains what the attribute does, what happens when it's enabled, which values are expected, what dependencies it has on other attributes, and what the behavior is when it's disabled. This text appears directly under the name of the selected plug-in attribute.
🧪
Examples
Reserved for concrete configuration and usage examples — a sample configuration, accepted values, rejected values, expected results, and typical error cases. Oracle APEX automatically displays this content under its own Examples heading, so you don't need to add that heading yourself.
Oracle APEX Page Designer showing a formatted Help Text panel for a plug-in attribute
The Page Designer's Help panel rendering bold text, a code block, and a checklist for a "Domain list" attribute.

Supported HTML Tags

The following tags were correctly processed in the test.

Bold Text

Both <b> and <strong> work.

html — bold
<b>Bold text</b>

<strong>Important information</strong>

Both variants render as bold. For semantically important information, <strong> is usually the better choice.

Italic Text

Both <i> and <em> work. <em> is especially well suited for hints or supplementary information at the end of a Help Text.

html — italic
<i>Italic text</i>

<em>Additional validation rules may still apply.</em>

Line Breaks

A simple line break can be created with <br>. Multiple <br> tags can be stacked to add extra spacing, but for larger blocks of text, real paragraphs with <p> are usually clearer.

html — line breaks
First line<br>
Second line<br>
Third line

First section<br><br>
Second section

Paragraphs

The <p> tag is correctly rendered as a paragraph, and paragraphs automatically get a visible gap between them. Note that custom CSS styles placed inside a <p> tag are not applied.

html — paragraphs
<p>
This is the first paragraph.
</p>

<p>
This is the second paragraph.
</p>

Unordered Lists

Bullet lists with <ul> and <li> work well, and emojis can be added for extra visual orientation — they're plain Unicode characters, not HTML, so they render regardless of which tags are supported.

html — unordered list
<ul>
  <li>👤 Local part before the @ symbol</li>
  <li>📧 The @ symbol</li>
  <li>🌐 Domain name</li>
  <li>🏷️ Top-level domain</li>
</ul>

Ordered Lists

Numbered sequences can be built with <ol> and <li> — ideal when using a plug-in attribute involves several steps.

html — ordered list
<ol>
  <li>Enable the validation.</li>
  <li>Enter the required value.</li>
  <li>Save the component.</li>
</ol>

Inline Code

The <code> tag is a good fit for single values, email addresses, parameter names, or technical terms — Oracle APEX displays it visually like a short code value.

html — inline code
<code>customer@example.com</code>

Use the value <code>50</code>.

Configure the attribute <code>Max. length</code>.

Multi-line Blocks

<pre> can be used to display multi-line configurations. Oracle APEX preserves the line breaks and formatting, and the block is visually separated from the surrounding text — great for configuration examples, SQL/PL-SQL snippets, expected outputs, or several related attribute values.

html — pre block
<pre>Min. check: Enabled
Min. length: 10
Max. check: Enabled
Max. length: 50</pre>
Confirmed working tags
In the tested Oracle APEX 23.2 environment, the following tags were processed successfully: <b>, <strong>, <i>, <em>, <br>, <p>, <ul>, <ol>, <li>, <code>, <pre>. For reliable plug-in documentation, stick to this confirmed set.

Tags That Are Not Supported

Many other HTML tags were not rendered at all. Instead, Oracle APEX displayed the full HTML markup as plain text. In the test, this affected — among others:

Not renderedNot renderedNot rendered
<span><div><font>
<u><s><small>
<mark><hr><blockquote>
<a><details><summary>
<table><tr> / <th> / <td><sup> / <sub>
<big><tt><kbd>, <center>

An unsupported tag becomes visible, literally, like this:

html — unsupported example
<span style="color:red;">Red text</span>
⚠️
Instead of red text, the Help panel may display that exact tag as raw, visible markup. Tags like these should not be used in production Help Texts.

CSS, Colors, and Old HTML Attributes

Inline CSS was not supported in the test. Examples like these did not work:

html — unsupported CSS
<b style="color:red;">Red bold text</b>

<p style="background-color:#fff3cd;">
Warning text
</p>

<span style="font-size:18px;">
Large text
</span>

Older HTML attributes such as color, size, face, or align were not processed either:

html — unsupported attributes
<font color="red">Red text</font>

<p align="center">Centered text</p>

So skip colors and CSS styles for visual emphasis. Instead, rely on what actually works reliably: bold text, italics, emojis, paragraphs, lists, inline code, and multi-line code blocks. In practice, that restricted set is more than enough for professional, well-structured plug-in help text.


Maximum Length of the Help Text Field

In the tested APEX 23.2 system, the HELP_TEXT column was capped at a maximum of 4,000 bytes. A text that was too long produced an error like this:

sql — error
Unable to process row of table WWV_FLOW_PLUGIN_ATTRIBUTES.

ORA-12899: value too large for column
"APEX_230200"."WWV_FLOW_PLUGIN_ATTRIBUTES"."HELP_TEXT"
(actual: 4034, maximum: 4000)
⚠️
This limit is measured in bytes, not necessarily characters. Plain English/ASCII characters normally take one byte each — but emojis can take up several bytes. A text with lots of emojis can hit the limit faster than a text made purely of simple ASCII characters.
Recommendation: Keep the Help Text well below the technical limit. A sensible target range is approximately 1,000 to 2,500 bytes per Help Text. Split longer content instead: general explanation in Help Text, concrete configurations in Examples, and further documentation in a separate plug-in doc or blog post. Since Help Text and Examples are separate fields, avoid stuffing everything into just one of them.

Recommended Structure for a Help Text

A good Help Text should be built in this order: a short description of the attribute, an explanation of its behavior, its dependency on other attributes, a list of what gets checked, the behavior when enabled and disabled, and optionally a short technical note. One possible structure:

html — help text structure
<b>Purpose of the attribute</b><br><br>

Short description of the setting.<br><br>

Explanation of what happens when the setting is enabled.

<b>📋 The validation includes:</b>

<ul>
  <li>First checked value</li>
  <li>Second checked value</li>
  <li>Third checked value</li>
</ul>

<b>✅ Enabled</b><br>
Description of the enabled behavior.<br><br>

<b>⏸️ Disabled</b><br>
Description of the disabled behavior.<br><br>

<em>Optional additional information.</em>

Recommended Structure for the Examples Field

The Examples field should be shorter and more practically oriented. A good structure includes: sample values, accepted input, rejected input, and a brief justification. Since Oracle APEX automatically adds the "Examples" heading, the content can start directly with the actual example:

html — examples structure
🧪 <b>Example configuration</b>

<pre>Attribute: Enabled
Value: 10</pre>

✅ <b>Accepted</b><br>
<code>valid-value@example.com</code><br><br>

❌ <b>Rejected</b><br>
<code>invalid-value</code><br><br>

The second value is rejected because it does not meet the configured rule.

Full Practical Example: Minimum Length

Here's how this comes together in a real plug-in. Imagine an email validator with two related attributes: ⬇️ Min. check (enables the check) and 🔢 Min. length (defines the required minimum number of characters).

Help Text for "Min. check"

html — help text: min. check
<b>⬇️ Minimum-length validation</b><br><br>

Enables the minimum-length validation for the complete email address.<br><br>

When enabled, the validator compares the total number of characters with
the value configured under <strong>🔢 Min. length</strong>.<br><br>

<b>📋 The character count includes:</b>

<ul>
  <li>👤 Local part before the @ symbol</li>
  <li>📧 The @ symbol</li>
  <li>🌐 Domain name</li>
  <li>🔹 Dots and hyphens</li>
  <li>🏷️ Top-level domain</li>
</ul>

<b>⚙️ Behavior</b>

<ol>
  <li>Enable <strong>⬇️ Min. check</strong>.</li>
  <li>Enter a value under <strong>🔢 Min. length</strong>.</li>
  <li>The complete email address will be checked.</li>
</ol>

<p>
  <b>✅ Enabled:</b><br>
  The configured minimum length is validated.
</p>

<p>
  <b>⏸️ Disabled:</b><br>
  The configured minimum length is ignored.
</p>

<em>Other enabled validation rules may still reject the email address.</em>

Examples Text for "Min. check"

html — examples: min. check
🧪 <b>Example configuration</b>

<pre>Min. check: Enabled
Min. length: 10</pre>

✅ <b>Accepted</b><br>
<code>user@example.com</code><br><br>

❌ <b>Rejected</b><br>
<code>a@b.co</code><br><br>

The second email address is rejected because it contains fewer than 10 characters.

Full Practical Example: Maximum Length

Help Text for "Max. length"

html — help text: max. length
<b>🔢 Maximum length</b><br><br>

Defines the maximum number of characters allowed for the complete email
address.<br><br>

This value is only applied when <strong>⬆️ Max. check</strong> is enabled.

<b>📋 The character count includes:</b>

<ul>
  <li>👤 Local part before the @ symbol</li>
  <li>📧 The @ symbol</li>
  <li>🌐 Domain name</li>
  <li>🔹 Dots and hyphens</li>
  <li>🏷️ Top-level domain</li>
</ul>

<b>🔢 Required value</b><br><br>

Enter a positive whole number.

<p>
  <b>✅ Valid value:</b><br>
  <code>50</code>
</p>

<p>
  <b>❌ Invalid value:</b><br>
  <code>-10</code>
</p>

<em>This setting validates only the total character count. Other enabled
rules may still reject the email address.</em>

Examples Text for "Max. length"

html — examples: max. length
🧪 <b>Example configuration</b>

<pre>Max. check: Enabled
Max. length: 50</pre>

✅ <b>Accepted</b><br>
<code>customer.service@example.com</code><br><br>

❌ <b>Rejected</b><br>
<code>customer-service-international-department@very-long-example-domain.com</code><br><br>

The second email address is rejected because its total length exceeds 50 characters.

Best Practices for Professional Plug-in Help Text

Use short labels. The Page Designer has limited space — long attribute names quickly wrap onto multiple lines. Instead of "Enable minimum-length validation," use a shorter label like "⬇️ Min. check" and put the full explanation in the Help Text.
Don't repeat the label in the Help Text. Oracle APEX already shows the attribute name as a heading. If the attribute is named "🔢 Max. length," the Help Text doesn't need to restate it in a long opening sentence — start directly with the explanation instead.
Use emojis with purpose. Emojis like ✅ Accepted, ❌ Rejected, ⚙️ Behavior, 📋 Included values, and 🧪 Example help readers scan content quickly. Too many, though, look cluttered and add to the byte count — use them only where they carry real meaning.
Skip styles entirely. Since CSS and many HTML tags are filtered out or shown as raw text, don't design your documentation around colors, boxes, or complex layouts. The most reliable combination is bold text + emojis + lists + paragraphs + code.
Keep Help Text and Examples clearly separated. Help Text should explain the function — what it does, when to use it, which values are checked. Examples should show it in action — the configuration used, what's accepted, what's rejected, and why. This split keeps each field readable and prevents either one from becoming too long.

Final Thoughts

Oracle APEX does not support full HTML inside the Help and Examples fields of custom plug-in attributes — but the limited set of basic tags it does support is more than enough to build clean, professional help text. The most reliable elements are <b>, <strong>, <i>, <em>, <br>, <p>, <ul>, <ol>, <li>, <code>, and <pre>.

Colors, CSS, tables, links, containers, and other complex HTML elements should be avoided, since they weren't rendered in the tested APEX 23.2 system and instead showed up as plain text. With short labels, a clear separation between Help Text and Examples, purposeful emojis, and this simple set of HTML tags, you can noticeably improve the usability of your own Oracle APEX plug-ins.

SH
Sajjad Hanifa
Software Developer · Oracle APEX, PL/SQL & Plug-in Development
Oracle APEX PL/SQL Plug-in Page Designer Best Practice HTML

 {fullWidth}

Please Select Embedded Mode To Show The Comment System.*

Previous Post Next Post

نموذج الاتصال