Warsaw Dynamics
Advanced search
Numbered Headings
Macro Pack
Macro Pack - PlantUML, Swagger, Open API, Markdown, HTML, Latex, AsciiDoc User guides Numbered Headings

Numbered Headings

What it does: applies (or removes) a consistent numbering prefix to every heading in a Confluence page - for example turning Overview / Goals / Background H1 headings into 1. Overview / 2. Goals / 3. Background. Re-running the tool re-numbers cleanly: the previously applied prefix is stripped before the new one is added, so headings never accumulate stale numbers.

  • 1 Opening the Editor
  • 2 The Configuration Form
    • 2.1 General Format
    • 2.2 Start Numbers
    • 2.3 Skip Headings
    • 2.4 Level 1–6 Format
    • 2.5 Import / Export
  • 3 Custom Format Syntax
    • 3.1 Worked Examples
  • 4 Preview Panel
  • 5 Applying the Changes
  • 6 Removing Numbering
  • 7 Limits at a Glance

1 Opening the Editor

  1. Open the Confluence page you want to number.

  2. Below the page title, in the byline row, click the Numbered Headings action (the pink macro-pack icon next to See views / Add a reaction).

The editor opens as a full-page dialog. See 2 The Configuration Form, 4 Preview Panel, and 5 Applying the Changes.

Screenshot_20260522_151523.png

The Numbered Headings trigger appears in the page byline, immediately below the page title.

2 The Configuration Form

The configuration form controls how the headings of the current page are numbered. It has five groups of controls - General format, Start numbers, Skip headings, the six Level 1–6 format fields, and the Import / Export buttons - each described in the subsections below. Every change updates the Preview Panel immediately; nothing is written to the page until you click Update.

Screenshot_20260523_063315.png

The editor with General format set to custom. The preview on the right shows the page's prior ISO 2145 numbering replaced with the default custom template.

2.1 General Format

A dropdown that picks one of the predefined numbering schemes - or custom, which unlocks the per-level format fields below. Picking any predefined scheme overwrites the level format fields with that scheme's templates (read-only).

The full list of predefined schemes. Each example shows the prefix applied to the first H1, H2, H3, H4 on a page, followed by a return to the next H2 (so you can see how the prefix shortens and how the H2 counter advances):

Scheme

Example sequence: H1 H2 H3 H4 next H2

none

removes all numbering

ISO 2145

1 1.1 1.1.1 1.1.1.1 1.2 …

compound decimal

1. 1.1. 1.1.1. 1.1.1.1. 1.2. …

local decimal

1. 1. 1. 2. …

compound outline

I. I.A. I.A.1. I.A.1.a. I.B. …

local outline

I. A. 1. a. B. …

compound alphanumeric

A. A.1. A.1.a. A.1.a.1. A.2. …

local alphanumeric

A. 1. a. 1. 2. …

compound / local lower Latin

a a.a a.a.a a.a.a.a a.b …  or  a a a a b …

compound / local upper Latin

A A.A A.A.A A.A.A.A A.B …  or  A A A A B …

compound / local lower Roman

i i.i i.i.i i.i.i.i i.ii …  or  i i i i ii …

compound / local upper Roman

I I.I I.I.I I.I.I.I I.II …  or  I I I I II …

compound / local lower Greek

α α.α α.α.α α.α.α.α α.β …  or  α α α α β …

compound / local upper Greek

Α Α.Α Α.Α.Α Α.Α.Α.Α Α.Β …  or  Α Α Α Α Β …

custom

edit each level format yourself (see Custom Format Syntax)

Compound styles render the counter from every ancestor level alongside the current one (e.g. an H3 heading gets 1.2.3.); local styles render only the counter for the current heading's level (e.g. the same H3 gets 3.).

2.2 Start Numbers

Six integers separated by commas - one for each numbering level. The default is 1,1,1,1,1,1. Use this to continue numbering from a previous page, or to start at zero for an appendix.

  • Exactly six values are required.

  • Each value must be between 0 and 501 inclusive.

  • Invalid input is highlighted as an error and the page will not update until it is fixed.

EXAMPLE

3,1,1,1,1,1 - start the document at 3. … 3.1. … 3.1.1. … (useful when this page is the third in a sequence).

2.3 Skip Headings

A multi-select that lets you exclude one or more heading levels from being numbered. Skipped headings keep their text but receive no prefix; the remaining heading levels are then mapped sequentially to the numbering levels.

  • You can skip up to five heading levels (at least one must remain numbered).

  • Skipped headings do not consume a counter - the next numbered heading uses the counter that would otherwise have applied to the level above it.

EXAMPLE

With compound decimal and Skip headings = H1:
H1: Introduction → Introduction (not numbered)
H2: Goals → 1. Goals
H3: Primary → 1.1. Primary
H2: Background → 2. Background

Tip - pages that don't use H1 (or any other top level). Compound schemes render every ancestor counter, including counters for heading levels that never appear on the page. A page that uses only H2 / H3 / H4 will therefore show 0.1., 0.1.1., 0.2. … because the H1 counter is never advanced past zero. The simplest fix is to skip every missing top level here - e.g. Skip headings = H1 for an H2-rooted page - so the numbering starts cleanly at the shallowest level that actually appears.

2.4 Level 1–6 Format

The six text fields define exactly what prefix is prepended at each numbering level. They are read-only for every predefined scheme and become editable only when General format = custom. Each field is limited to 250 characters.

See Custom Format Syntax for the template syntax.

2.5 Import / Export

The two buttons at the bottom of the form let you save and restore configurations as JSON:

  • Export - downloads the current configuration as numbered-headings-config.json.

  • Import - loads a previously exported JSON file. Invalid input is rejected with an inline error message.

Use this to share a house-style numbering convention across pages and teammates.

3 Custom Format Syntax

When General format = custom, each level format field accepts plain text mixed with two kinds of placeholder tags:

Tag

Meaning

{Ln.format}

The counter for level n (1–6), rendered in format.

{br}

A line break inside the prefix.

Supported format values:

Format

Sample sequence

Range

decimal

1, 2, 3, …, 999

0 – 999

lower-latin

a, b, …, z, aa, ab, …, zz

1 – 702

upper-latin

A, B, …, Z, AA, AB, …, ZZ

1 – 702

lower-roman

i, ii, iii, iv, …, mmmcmxcix

1 – 3999

upper-roman

I, II, III, IV, …, MMMCMXCIX

1 – 3999

lower-greek

α, β, γ, …, ω, αα, αβ, …, ωω

1 – 600

upper-greek

Α, Β, Γ, …, Ω, ΑΑ, ΑΒ, …, ΩΩ

1 – 600

The ranges are deliberately bounded to limit false-positive prefix stripping when the editor re-numbers a page. Re-applying numbering strips prefixes that match the previously saved scheme, so the wider a counter range is, the more often an ordinary heading word can be mistaken for a stale counter and lopped off the front. For example, a heading literally titled “no exceptions” matches a two-character lower-latin counter (no = 379) and would lose its leading word on the next re-number; allowing three-character Latin counters would push the same trap into much more common territory (and, the, act, …). The current caps keep the matchable counter strings short enough that such collisions stay rare.

Out-of-range counters render as ⍰ (the APL quad-question character). If you see ⍰ in the preview it means a counter has exceeded the chosen format's range - either lower the start number or pick a format with a wider range (e.g. decimal).

3.1 Worked Examples

SIMPLE - LOCAL DECIMAL, SUFFIX " - "

Level 1: {L1.decimal} -
Result: 1 - Introduction, 2 - Goals, …

COMPOUND, MIXED ALPHABETS

Level 1: {L1.upper-roman}.
Level 2: {L1.upper-roman}.{L2.upper-latin}.
Level 3: {L1.upper-roman}.{L2.upper-latin}.{L3.decimal}.
Result: I., I.A., I.A.1., I.A.2., I.B. …

MULTI-LINE - TITLE-STYLE "PART / CHAPTER" PREFIX

Level 1: Part {L1.upper-roman}{br}
Level 2: Chapter {L2.decimal}{br}
Result (across two lines per heading):
Part I
Overview

4 Preview Panel

The right column renders every heading in the page exactly as it will appear after the numbering is applied, including line breaks introduced by {br}. It updates live whenever you change the form. If the page contains no headings a warning banner is shown and there is nothing to apply.

5 Applying the Changes

Clicking Update:

  1. Re-fetches the current page content (in case it changed since the editor opened).

  2. Strips the previously applied numbering using the configuration that was last saved for this page.

  3. Prepends the new prefixes according to the current configuration.

  4. Saves the page as a new version. The version comment names the format that was applied (e.g. Applying ISO 2145 "1.2.3.4 " numbering to headings, or Removing headings numbering).

  5. Stores the configuration so the next run can strip it cleanly.

  6. Reloads the page so you see the result immediately.

Automatic Numbering Updates

To ensure heading numbers remain accurate without manual intervention, the app automatically triggers a re-numbering process whenever a Confluence page is updated and saved. Users no longer need to open the Numbered Headings editor to re-apply the formatting after modifying page content.

Saved per page (or blog post). The last configuration applied to a page is stored in the page's Confluence properties, so every user who re-opens the editor sees the format that is currently in effect. This is also how stale prefixes are detected and stripped when the numbering is re-applied.

Don't combine with other heading-numbering apps. Any other Confluence app or macro that prepends numbers to headings - especially one that re-writes the page automatically whenever it's edited - will conflict with this tool. Every Update here triggers the other app to re-process the same headings under its own scheme; the next re-apply by Numbered Headings then strips or rewrites that, and so on. Expect doubled prefixes, lost numbering, version-history churn, or in the worst case a save-loop between the two tools. Pick one heading-numbering tool per page and disable the others before using Update.

6 Removing Numbering

Set General format to none and click Update. The previously applied prefixes will be stripped and no new ones will be added. The page version comment will read Removing headings numbering.

7 Limits at a Glance

Setting

Limit

Heading levels supported

H1 – H6

Numbering levels

up to 6 (after skipped headings are removed)

Start number per level

0 – 501

Skipped heading levels

up to 5

Custom level format length

250 characters

Decimal counter

0 – 999

Latin counter

1 – 702 (a–zz / A–ZZ)

Greek counter

1 – 600 (α–ωω / Α–ΩΩ)

Roman counter

1 – 3999

About us
Our apps

© Warsaw Dynamics, 2025. All rights reserved.