Titula

Description

Titula is about how an article reads. It gives your headings a consistent
treatment, builds a table of contents with stable anchors, puts the answer
where a reader looking for it will find it, and makes tables legible on a
phone. The markup it produces is semantic, scoped and small, and your post
content is never rewritten.

Better structure and readability make an article easier for a visitor to scan,
navigate and understand, and a clearer foundation for search-friendly content.
No plugin can promise a ranking, and this one does not.

What makes it different

Article design first. Heading styles you can see before you choose them, a
table of contents with anchors that stay readable in Arabic, Spanish and
French, answer-first components that render only when you have filled them in,
and tables that scroll or stack rather than overflowing. One screen, grouped by
what it is for, with a live preview where the choice is visual.

Editorial review, not a score. Open a post and Titula says whether it is
Excellent, Good or Needs attention, then lists the few improvements worth
making, most useful first: “The section Where to stay runs 820 words without
a subheading”, “The introduction runs 340 words before the first section”, “One
page is linked 3 times”, “2 images have no alt attribute”. It also notices
heading levels that skip, runs of dense paragraphs, long stretches a phone
reader has nothing to land on, long articles with no internal links, and
statements that will date. There is no word-count target, no keyword density
and no number to chase. Nothing is rewritten; every item is advice.

Internal link suggestions you approve. Titula reads your published articles
and finds places where one could link to another. Each suggestion shows the
source, the destination, the sentence around it, a score and the reason. You
accept or ignore it.

Accepting one never rewrites your post. The decision is stored and the link is
applied when the page renders, so your content stays exactly as you wrote it
and any choice can be undone. The anchor is always a phrase your article
already contains — nothing is reworded, and no keyword is forced in. Links are
never placed inside existing links, headings, code or captions.

Arabic and RTL, handled properly

Measurement built for the Latin alphabet gives wrong answers in Arabic, and
most plugins never notice. PHP’s own str_word_count() returns zero for Arabic
text, so reading times on Arabic sites are frequently nonsense.

Titula counts by Unicode word boundaries, strips diacritics and the tatweel
before measuring since neither is a letter, discards punctuation-only tokens,
and times Arabic and Latin words at separate adjustable speeds. Heading anchors
stay readable in Arabic instead of collapsing into numbered fragments.

Three optional extras for Arabic publishers:

  • Latin permalink suggestions. WordPress percent-encodes Arabic slugs, so a
    title becomes a URL of the form %d8%a7%d9%84. Valid, but unreadable once
    copied, printed or read aloud. Titula suggests a transliteration in the
    editor with a checkbox to apply it, warns you when the post is published and
    changing it would break existing links, and never changes anything on its
    own. Arabic permalinks are a legitimate choice.
  • Hijri dates, shown beside the Gregorian date rather than replacing it.
    The machine-readable date in the markup stays Gregorian, as the HTML
    specification requires. Where the intl extension is available the Umm
    al-Qura calendar is used; otherwise a tabular calculation, which can differ
    from an announced date by a day, so a manual adjustment is provided.
  • Arabic typography. Raises line height, which the script needs because
    letters carry taller ascenders and deeper descenders and diacritics sit above
    and below the line. Just as importantly it resets letter-spacing: Arabic
    letters join, and spacing them apart pulls the joins open. Themes designed
    for Latin text set letter-spacing on headings routinely, and it looks correct
    in their previews because those previews are in English.

Reading experience

  • Reading profiles – Editorial, Travel, Technology, Knowledge, Arabic Editorial
    and Minimal – that set the rhythm between paragraphs, lists, figures, tables
    and quotations. Fonts always stay your theme’s. Any post can use its own.
  • Table of contents from your H2 and H3 headings, with stable anchors that stay
    readable in Latin, Arabic and accented scripts, in six visual styles. It
    marks the section being read, closes itself on a phone after a jump, and, if
    you want it to follow the reader, docks in the empty margin beside the
    article rather than covering the text. An optional two-pixel progress line.
  • A Sources list at the end of an article: title, address, publisher and date,
    as plain semantic HTML.
  • Sixteen heading treatments and eight accent choices, so an article looks like
    your site rather than like a plugin.
  • Quick Answer, Key Takeaways and Article Summary, shown above the table of
    contents so a reader who wants only the answer finds it first.
  • FAQ, facts, pros and cons, steps, checklist, related reading and an author
    box. Every component optional; one with an empty field renders nothing.
  • Tables that take their colours from your theme’s own palette rather than
    imposing a second one, and that reorganise on a phone instead of asking the
    reader to drag them sideways. A table of three to seven columns becomes one
    card per row, each value labelled with its own column heading. Very wide
    reference tables keep their scroll, because a card that long stops being
    readable. Nothing is ever hidden: a phone reader sees exactly what a desktop
    reader sees.

Everything is free

There is no paid version, no upsell, no locked feature and no account.

Performance

  • Rendered articles are cached and reused until the post or a setting changes.
  • Content analysis is manual, batched and resumable. It never runs on a visitor
    request. Also available as wp titula scan.
  • Stylesheets load only on singular views of a supported post type, and are
    split by feature: the table rules are requested when a table is detected in
    the content or when dynamic content might render one, rather than on every
    article. The script loads only when the article actually has a table of
    contents or images, and is deferred.
  • The editor analysis reads each article once and shares that reading between
    every check.
  • No external requests, no tracking, no jQuery.

Articles built as raw HTML are left alone

If you publish some articles as a complete, self-contained HTML layout pasted
into a Custom HTML block, Titula detects them and does nothing to them at all:
no table of contents, no heading anchors, no components, no wrapper, and not
even a stylesheet request.

Detection is deliberately cautious, since wrongly skipping an ordinary article
is far worse than wrongly processing one. It looks for signals an ordinary post
never produces: a style element in the content, most of the article sitting
inside Custom HTML blocks, or heavy inline styling. A long article containing
one small embed block is not affected.

Every post also carries a Processing control in the editor, in both the block
and classic editors, so you can force either answer. Excluded articles are
still valid destinations for links from elsewhere: leaving an article alone
means not modifying it, not refusing to point at it.

What Titula does not do

  • It writes no SEO title, meta description, canonical URL, robots directive,
    Open Graph or Twitter tag, sitemap or redirect.
  • It produces no structured data – not for FAQs, articles, breadcrumbs or
    sources – and never modifies schema from another plugin.
  • It never changes an article’s published or modified date, and never
    optimises, converts or resizes an image file.
  • It generates no text and contacts no external service or AI model.
  • It cannot promise a ranking, a Google AI Overview placement or a citation in
    any AI assistant. No plugin can, and this one does not claim to.
  • It styles nothing outside the article container, so your theme is untouched.

Installation

  1. Install through Plugins > Add New, or upload the ZIP.
  2. Activate it.
  3. Open Titula in the admin menu. The Overview carries a five-step setup guide;
    follow it to Appearance and pick one of the four starting points: People
    First, Travel, Technology or Editorial, and a reading profile. That is the
    whole setup.
  4. Optional: run a scan from Analysis to see what your published articles are
    missing, or from Internal Linking to review link suggestions.

Everything is configured in that one screen; there is no separate Titula page
under Settings. Every individual setting is still there, but you should not
need it on day one.

FAQ

Does this replace Rank Math or Yoast?

No, and it is designed not to. Titula adds no schema and no meta tags. Keep
using your SEO plugin exactly as you do now.

Will it change my theme or my other pages?

No. Every CSS rule is scoped inside the article container. Your header, footer,
sidebar, widgets and every page outside the selected post types are untouched.

Does it modify my post content in the database?

No. Components and approved internal links are applied when the page renders.
Your content stays exactly as you wrote it, and anything you enable can be
switched off with no trace left behind.

Does it require Advanced Custom Fields?

No. Titula uses ACF when it is present and plain post meta when it is not.

Will it change my Arabic permalinks?

Only if you tick the box in the editor and save. Nothing happens in bulk,
nothing happens on activation, and the panel warns you first when the post is
already published.

How accurate is the Hijri date?

It is calculated, not announced. In most countries the start of a Hijri month
is declared by observation of the crescent, and no formula predicts that. The
settings screen tells you which method your server uses and offers a manual
adjustment of up to two days.

Does it send my content anywhere?

No. All analysis runs on your own server. The plugin makes no external requests
of any kind.

What happens to my data if I uninstall?

Plugin settings are removed. Editorial decisions stored on individual posts,
such as which link suggestions you accepted, are left in place so that
reinstalling does not lose your work.

Will it improve my rankings?

It cannot promise that, and no honest plugin can. What it does is make articles
clearer, better structured and better connected to each other.

Reviews

August 30, 2026
I’ve been testing Titula and really like the concept and overall experience. The plugin is clean, useful, and has a lot of potential. I’d love to see more detailed and accurate feedback in the article quality assessment, along with more display/layout options in future updates. Great work so far!
Read all 1 review

Contributors & Developers

“Titula” is open source software. The following people have contributed to this plugin.

Contributors

Translate “Titula” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

2.0.2

  • Two new H2 treatments: Rail and rule (a short accent rail with a hairline below) and Section badge (a small numbered badge before the text). Both use logical properties, so they mirror in right-to-left articles.
  • Curated heading systems for how sites publish: Editorial, Travel Journal, Tech & Docs, Reviews, Professional and Learning, with Health Editorial and the earlier systems under “More heading systems”.
  • Each system card shows its H2/H3/H4 hierarchy, a one-line description and who it suits.
  • Systems only set existing heading values – no colours, no fonts. Every earlier treatment, system key and saved setting keeps working; the earlier Clean Editorial system is now shown as Editorial.

2.0.1

  • Admin redesign: a slim section sidebar (Dashboard, Article Design, Editorial, Advanced), a compact product header and quieter “Find a setting”.
  • Dashboard shows the current article experience and an editorial overview with the next few actions.
  • Article Design uses setting rows instead of form tables, one-line summaries on each subject, and a 60/40 Heading Studio with a sticky Desktop/Mobile and LTR/RTL preview.
  • Editorial reads as a work queue: Content Review and Internal Linking, with status labels and an “Edit article” link per item.
  • Advanced is grouped into Content scope, Performance & loading, Compatibility and Maintenance; every reset now lives under Maintenance.
  • Presentation only: no option was renamed, no setting migrated, and front-end output is unchanged.

2.0.0

Titula 2.0 is about the article itself: how it reads, how it is navigated and
what an editor should look at next. Upgrading changes nothing a visitor sees
until you choose a reading profile.

Reading

  • Reading profiles: Editorial, Travel, Technology, Knowledge, Arabic Editorial
    and Minimal. Each sets the spacing between paragraphs, lists, figures,
    tables, code and quotations, keeps a heading close to what it introduces,
    and lines unaligned figures up with the text. No font, size or colour is
    set. A post can choose its own profile in the editor. Upgraded sites stay on
    Classic, the 1.x spacing, until they pick one.
  • Under a profile, body text follows the theme’s alignment. 1.x justified it
    on wide screens.
  • Sources: an optional reference list at the end of an article, edited in a
    small box under the post or placed with [acaart_sources]. Plain HTML, no
    structured data, no rel values added.

Table of contents

  • The entry for the section being read is now always right, including in long
    sections and after scrolling back up. Its parent entry stays marked, and
    aria-current=”location” is set.
  • A closed panel on a phone names the section being read, and closes itself
    after a jump so the article is not pushed down.
  • Sticky mode no longer covers the text. The panel docks in the empty margin
    beside the article once the reader scrolls past it, leaves a placeholder so
    nothing moves, and stays in place where there is no room or a sidebar.
  • Optional reading-progress line.
  • Fixed: on block themes the table-of-contents script was never loaded,
    because the article is rendered before the script is registered.

Editorial review

  • Excellent, Good or Needs attention, and the three improvements most worth
    making, in both editors and on the dashboard. The 0-100 figures and
    dimension bars are gone from every screen.
  • New checks: an H1 in the body, sections running long without a subheading,
    runs of dense paragraphs, long stretches with nothing to scan by on a phone,
    long articles with no internal links, the same page linked repeatedly,
    internal links all in one section, images without alt text or dimensions,
    and source images far larger than any column needs.
  • Time-sensitive statements – recent years, prices, requirements, “currently”,
    “the latest” – are listed in the editor, in English, Spanish, French and
    Arabic. A review is suggested only when the article has not been checked
    for a year. Dates are never changed.
  • Classic-editor articles are now read with their paragraphs, so paragraph
    checks work on them.

Internal linking

  • The editor shows links in and out, whether the article is an orphan, the
    open suggestions, and related articles when there are none.
  • With Polylang or WPML, suggestions and related articles stay in the
    article’s own language. WPML posts are now read in their own language rather
    than the admin screen’s.
  • Suggestion confidence is shown in words rather than out of 100.
  • Link targets are resolved once per scan batch.

Headings

  • H2, H3 and H4 now form a real hierarchy. H3 has treatments of its own – a
    short underline, a small leading accent, a hairline divider – and “Follow
    the heading system” maps every H2 style to a lighter H3 rather than
    repeating the H2 decoration. H4 gains stronger type and a small accent,
    and is never smaller than the text around it.
  • Six heading systems – Theme Native, Clean Editorial, Accent, Magazine,
    Numbered and Minimal – each shown as H2, H3 and H4 together. Every earlier
    H2 style is kept under Customize headings. No saved setting is changed.
  • Quieter treatments: no gradients, lighter tints, the accent bar the height
    of the text, the section number sized as a label.
  • Heading spacing steps down level by level. The “spacious” value earlier
    heading families wrote, which the settings form could not keep, is now read
    as Relaxed.
  • The heading stylesheet loads whenever headings are styled, and the table of
    contents skins and palettes load only when changed.

Admin

  • Four destinations: Dashboard, Article Design, Editorial and Advanced.
    Article Design is one page of five collapsible panels; Editorial holds
    Analysis and Internal Linking. Every older address still opens the right
    place.
  • Much shorter copy throughout, and a dashboard that shows status only.
  • The heading preview uses the front-end stylesheets, with Desktop/Mobile
    and LTR/RTL switches.

Performance and housekeeping

  • The render cache key now includes the plugin version and a per-post
    revision, so an update or a changed field is never served stale. Before
    this, clearing one post’s cache never matched its entry.
  • One shared structural pass per article for the editor analysis; the
    diagnostics no longer run twice.
  • Removed code for schema that Titula stopped producing long ago: the unused
    Schema, Rank Math, Yoast and Search/AI readiness classes and four settings
    nothing read. The upgrade deletes those four keys from the Titula option.
  • Fixed a PHP notice from a conditional tag called before the query ran.
  • The Article Health box in the classic editor is styled again.

1.1.4

The table of contents shows the whole article again, and four issues Plugin
Check raised are fixed.

  • The list no longer folds away after eight entries. A table of contents exists
    to show the shape of the piece, and on a guide with twelve sections it was
    showing two thirds of it and a button. Sites still sitting on that old
    default are moved to the full list on upgrade; a site that chose its own
    number keeps it.
  • Fixed: on a theme that does not define screen-reader-text, the icon-only
    back link printed the word “Contents” beside the icon. The plugin now carries
    its own implementation of that class and no longer depends on the theme.
  • The row is the target in the table of contents, not just the words: hover and
    focus cover the whole entry, and the entry you are reading is marked on its
    edge without the text shifting.
  • The heading you arrive at from the table of contents is outlined for a moment,
    so a jump down a long article lands somewhere visible.
  • Headings wrap evenly rather than leaving one word on the last line.
  • Focus rings on the contents panel, its “view all” button and its entries.
  • A sticky contents panel stops scrolling the article when its list reaches the
    end.
  • Plugin Check: translator comments on three strings, the percent-encoded
    Arabic URL example moved out of a translatable sentence, and WPML’s own
    filter name documented rather than flagged.

1.1.3

The live preview moved to where it can be seen, and the back link got a choice
of arrow.

  • Live preview beside the heading controls instead of below them, following
    the page as you scroll. It was at the foot of a long section, far enough down
    that people did not know the plugin had one.
  • Six shapes for the “back to contents” link: the original list-and-arrow, a
    plain arrow, a chevron, an arrow meeting a rule, a return arrow and a plain
    list. Picked from cards that draw the real icon; mirrored in a right-to-left
    article so an arrow still points back the way the reader came.
  • Press / anywhere on the settings screen to jump to the finder, and the
    finder now counts a picker once rather than once per card.
  • The section list marks the group you are reading, opening a section takes
    you to the top of it, and its heading takes focus so a screen reader says
    where you are.
  • Printing an article no longer prints “Contents” beside every heading, keeps
    a heading with the section it introduces, and avoids breaking a panel, a
    table row or a figure across pages.
  • The icon-only back link has a tap target a finger can hit, and a focus ring
    a keyboard user can see.

1.1.2

Orientation. The dashboard now answers three questions before it is asked: what
is this section set to, what else is in it, and where is that one setting.

  • A finder above the settings. Type two letters and every matching control on
    the screen is listed with the section it lives in; choosing one opens that
    section, scrolls to the control and marks it.
  • Each section shows what it is currently set to, read from your saved settings
    • the article style, the heading system, how many components are on.
  • Every group of settings is now titled, and a section with several of them
    prints a short list of links to each.
  • The sixteen components are grouped by the job they do rather than listed in
    one run of sixteen.
  • A section you have edited but not saved is marked in the navigation, and the
    end of each design section offers the next one.
  • The screen was redrawn on two surfaces – a navigation panel and the open
    section – so a card no longer sits inside a card. The navigation follows you
    down a long section.
  • Fewer bytes: the settings form is printed only on a section that has
    controls, and the library summary only where a figure is shown.

1.1.1

One administrative home, and a clearer product. Every setting is now edited in
the Titula dashboard, grouped by what it is for: Article design, Article
health, Optional and Advanced. Nothing moved in storage and no setting was
renamed or removed.

  • Saving returns you to the section you were editing. The form’s return address
    is written by the server for the open section instead of being taken from the
    request URL, which is why a save used to land on Overview.
  • Settings > Titula is no longer a separate destination. The old address still
    works and forwards to the section that replaced it, as do the old tab
    addresses.
  • Information Quality is gone from the dashboard. The measurement itself stays:
    it is one of the five Editorial Readiness dimensions in the post editor.
  • Internal Linking keeps every feature and moves under Optional. Topic
    structure and decision history are shown inside it rather than as tabs of
    their own, and it no longer supplies the dashboard’s headline figures.
  • How It Works is replaced by a five-step setup guide on the Overview.
  • Arabic typography, text direction, reading speed, Latin permalinks and Hijri
    dates moved from the linking screen to Appearance, where reading comfort is
    decided. The editorial preset moved to Components; the interface language to
    Advanced.
  • The scoped reset buttons print after everything they reset, rather than in
    the middle of the section.
  • Analysis reports what articles are missing; its link counts moved to Internal
    Linking.
  • Fewer queries: the library summary is read only by the screens that show it.
  • Narrow screens no longer scroll sideways, and the link-rules table scrolls
    inside its own box.

1.1.0

Presentation, compatibility and correctness. An existing site keeps its current
behaviour on upgrade: the two settings introduced here that could change what a
visitor sees are written to their previous values during the upgrade, and only
change if you choose to change them.

New

  • Headings Studio: a Headings screen with a visual style picker instead of
    a dropdown of names, six coordinated heading systems that set H2, H3 and H4
    together, hierarchy controls for weight, accent strength, decoration width,
    numbering and alignment, and a live preview with desktop, tablet, mobile,
    LTR and RTL views. Nothing is saved until you press Save Changes.
  • Sixteen heading treatments and six table-of-contents styles.
  • Seven accent palettes plus a custom colour. The default still follows the
    colour detected from your theme.
  • Text direction read from the article’s own words rather than the site
    language, so an article written in a different script from the site is no
    longer laid out the wrong way round. Off for existing sites until enabled.

Fixed

  • Component stylesheets are chosen from a single list of every component, so an
    article using only Facts, Verdict, Pros and cons, Checklist, Key takeaways,
    Summary, Author or Related no longer renders unstyled.
  • Language is no longer guessed from text direction. Persian and Urdu are not
    Arabic and French is not English, so a lang attribute is now written only
    where a multilingual plugin, the site locale or a filter actually knows the
    answer, and omitted otherwise.
  • Generic meta names such as faq, summary and steps are no longer read on
    new installations, where they collide with ACF fields, themes and other
    plugins. Existing installations keep reading them, and no field belonging to
    another plugin is ever written to or deleted.
  • Custom fields returning repeaters, groups, image arrays, relationships or
    nested arrays no longer produce “Array to string conversion” warnings.
  • Live analysis in the editor now judges the content on screen rather than the
    last saved version, including whether the article is excluded from
    processing.
  • The table stylesheet is requested when a table is detected in the content or
    when a shortcode or dynamic block might render one, rather than on every
    article on a site with tables enabled. Detection is deliberately cautious:
    it errs towards loading rather than risk an unstyled table.
  • Admin confirmation dialogs and layout moved out of inline attributes into the
    enqueued stylesheet and script, keeping the messages translatable.
  • Dashboard progress text is fully translatable instead of assembling an
    English word onto a translated phrase.
  • Uninstall now also removes the rebuildable content index and suggestion list,
    while keeping editorial decisions such as chosen styles, accepted links and
    review dates.

1.0.0

  • First public release.