PHPackages                             grommasdietz/kirby-hidden-characters - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. grommasdietz/kirby-hidden-characters

ActiveKirby-plugin[Utility &amp; Helpers](/categories/utility)

grommasdietz/kirby-hidden-characters
====================================

Kirby CMS plugin for visualising hidden characters in the Panel

2.1.0(1mo ago)461.8kMITPHPPHP ^8.2CI passing

Since Oct 10Pushed 6d agoCompare

[ Source](https://github.com/grommasdietz/kirby-hidden-characters)[ Packagist](https://packagist.org/packages/grommasdietz/kirby-hidden-characters)[ RSS](/packages/grommasdietz-kirby-hidden-characters/feed)WikiDiscussions main Synced today

READMEChangelog (10)Dependencies (6)Versions (28)Used By (0)

Kirby Hidden Characters
=======================

[](#kirby-hidden-characters)

[Kirby CMS](https://getkirby.com) plugin to visually show hidden characters like spaces, soft hyphens, tabs, line breaks, or paragraph endings in focused [writer](https://getkirby.com/docs/reference/panel/fields/writer), [textarea](https://getkirby.com/docs/reference/panel/fields/textarea), and [text fields](https://getkirby.com/docs/reference/panel/fields/text). The dimmed visual feedback is inspired by Adobe InDesign's hidden-characters mode, providing a familiar experience for content editors.

[![Cover image showing an example of the plugin in use](/.github/assets/hero-image.png)](/.github/assets/hero-image.png)

Legend
------

[](#legend)

The plugin visualizes the following characters using a custom icon font:

NameUnicodeCharacterDescription**Space**`U+0020`[![Space](/.github/assets/characters/dark/gd-hc-space.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-space.svg#gh-dark-mode-only) [![Space](/.github/assets/characters/light/gd-hc-space.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-space.svg#gh-light-mode-only)Centered dot**Thin Space**`U+2009`[![Thin](/.github/assets/characters/dark/gd-hc-thin.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-thin.svg#gh-dark-mode-only) [![Thin](/.github/assets/characters/light/gd-hc-thin.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-thin.svg#gh-light-mode-only)Centered dot with chevron above**No-Break Space**`U+00A0`[![No break](/.github/assets/characters/dark/gd-hc-no_break.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-no_break.svg#gh-dark-mode-only) [![No break](/.github/assets/characters/light/gd-hc-no_break.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-no_break.svg#gh-light-mode-only)Centered dot with inverted chevron below**Narrow No-Break Space**`U+202F`[![Narrow no break](/.github/assets/characters/dark/gd-hc-narrow_no_break.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-narrow_no_break.svg#gh-dark-mode-only) [![Narrow no break](/.github/assets/characters/light/gd-hc-narrow_no_break.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-narrow_no_break.svg#gh-light-mode-only)Centered dot with inverted chevron above**Em Space**`U+2003`[![Em](/.github/assets/characters/dark/gd-hc-em.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-em.svg#gh-dark-mode-only) [![Em](/.github/assets/characters/light/gd-hc-em.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-em.svg#gh-light-mode-only)Centered dot with em dash below**En Space**`U+2002`[![En](/.github/assets/characters/dark/gd-hc-en.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-en.svg#gh-dark-mode-only) [![En](/.github/assets/characters/light/gd-hc-en.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-en.svg#gh-light-mode-only)Centered dot with en dash below**Three-Per-Em Space**`U+2004`[![Three](/.github/assets/characters/dark/gd-hc-three.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-three.svg#gh-dark-mode-only) [![Three](/.github/assets/characters/light/gd-hc-three.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-three.svg#gh-light-mode-only)Centered dot with large dot above**Four-Per-Em Space**`U+2005`[![Four](/.github/assets/characters/dark/gd-hc-four.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-four.svg#gh-dark-mode-only) [![Four](/.github/assets/characters/light/gd-hc-four.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-four.svg#gh-light-mode-only)Centered dot with large dot below**Six-Per-Em Space**`U+2006`[![Six](/.github/assets/characters/dark/gd-hc-six.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-six.svg#gh-dark-mode-only) [![Six](/.github/assets/characters/light/gd-hc-six.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-six.svg#gh-light-mode-only)Centered dot with same-sized dot below**Hair Space**`U+200A`[![Hair](/.github/assets/characters/dark/gd-hc-hair.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-hair.svg#gh-dark-mode-only) [![Hair](/.github/assets/characters/light/gd-hc-hair.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-hair.svg#gh-light-mode-only)Centered dot with two small dots above**Punctuation Space**`U+2008`[![Punctuation](/.github/assets/characters/dark/gd-hc-punctuation.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-punctuation.svg#gh-dark-mode-only) [![Punctuation](/.github/assets/characters/light/gd-hc-punctuation.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-punctuation.svg#gh-light-mode-only)Centered dot with dot below and vertical stroke above**Figure Space**`U+2007`[![Figure](/.github/assets/characters/dark/gd-hc-figure.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-figure.svg#gh-dark-mode-only) [![Figure](/.github/assets/characters/light/gd-hc-figure.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-figure.svg#gh-light-mode-only)Centered dot inside number sign**Medium Mathematical Space**`U+205F`[![Math](/.github/assets/characters/dark/gd-hc-math.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-math.svg#gh-dark-mode-only) [![Math](/.github/assets/characters/light/gd-hc-math.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-math.svg#gh-light-mode-only)Centered dot with negation sign above**Zero-Width Space**`U+200B`[![Zero width](/.github/assets/characters/dark/gd-hc-zero_width.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-zero_width.svg#gh-dark-mode-only) [![Zero width](/.github/assets/characters/light/gd-hc-zero_width.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-zero_width.svg#gh-light-mode-only)Dashed vertical stroke**Soft Hyphen**`U+00AD`[![Soft hyphen](/.github/assets/characters/dark/gd-hc-soft_hyphen.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-soft_hyphen.svg#gh-dark-mode-only) [![Soft hyphen](/.github/assets/characters/light/gd-hc-soft_hyphen.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-soft_hyphen.svg#gh-light-mode-only)Vertical stroke indicating possible hyphenation**Tab**`U+0009`[![Tab](/.github/assets/characters/dark/gd-hc-tabulator.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-tabulator.svg#gh-dark-mode-only) [![Tab](/.github/assets/characters/light/gd-hc-tabulator.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-tabulator.svg#gh-light-mode-only)Two rightward arrows spanning the tab stop width**Line Break**`U+000A`[![Break](/.github/assets/characters/dark/gd-hc-break.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-break.svg#gh-dark-mode-only) [![Break](/.github/assets/characters/light/gd-hc-break.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-break.svg#gh-light-mode-only)Negation sign representing hard line break**Paragraph End**[![Paragraph](/.github/assets/characters/dark/gd-hc-paragraph.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-paragraph.svg#gh-dark-mode-only) [![Paragraph](/.github/assets/characters/light/gd-hc-paragraph.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-paragraph.svg#gh-light-mode-only)Pilcrow sign representing the end of a paragraph**Story End**[![Paragraph end](/.github/assets/characters/dark/gd-hc-paragraph_end.svg#gh-dark-mode-only)](/.github/assets/characters/dark/gd-hc-paragraph_end.svg#gh-dark-mode-only) [![Paragraph end](/.github/assets/characters/light/gd-hc-paragraph_end.svg#gh-light-mode-only)](/.github/assets/characters/light/gd-hc-paragraph_end.svg#gh-light-mode-only)Number sign representing the end of the entire text block> Soft hyphens, tabulators, line breaks and paragraph endings are only rendered in `writer` and `textarea`, not on single-line `` elements.

Requirements
------------

[](#requirements)

- Kirby 5+
- PHP 8.2+

Installation
------------

[](#installation)

```
composer require grommasdietz/kirby-hidden-characters
```

Tip

If you don’t use Composer, you can download this repository and copy it to `site/plugins/kirby-hidden-characters`.

Quickstart
----------

[](#quickstart)

This plugin works out of the box with no configuration required.

### Configuration

[](#configuration)

Developers building Panel plugins can register additional field components as overlay targets or customize the overlay element before insertion via the JavaScript extension API. See [Extension API](docs/usage/architecture.md#extension-api) for details.

### Documentation

[](#documentation)

Full reference for [usage](docs/usage/index.md), [contributions](docs/contributions/index.md) and [maintenance](docs/maintenance/index.md) lives in [documentation](docs/index.md).

---

Credits
-------

[](#credits)

The overlaying logic is adapted from [Kirby Soft Hyphens](https://github.com/hansipete/kirby-soft-hyphens) plugin by [@hansipete](https://github.com/hansipete). Thank you!

---

Changelog
---------

[](#changelog)

See [CHANGELOG.md](CHANGELOG.md) for version history and changes.

---

Security
--------

[](#security)

See [SECURITY.md](SECURITY.md) for security policies and reporting vulnerabilities.

---

Contributing
------------

[](#contributing)

See [CONTRIBUTING.md](CONTRIBUTING.md) for guidance and expectations.

---

License
-------

[](#license)

[MIT](LICENSE.md) © 2024 Grommas Dietz

###  Health Score

55

—

FairBetter than 97% of packages

Maintenance94

Actively maintained with recent releases

Popularity30

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 77.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~59 days

Recently: every ~50 days

Total

23

Last Release

54d ago

Major Versions

0.1.4-beta → 1.0.02024-02-21

1.0.8 → 2.0.02025-06-25

PHP version history (2 changes)0.1.3-betaPHP &gt;=8.0.0

2.1.0PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/0bb3d1cab7f30711576ede9d0547977e67d14de0fb70ab1b417ced695bb1d8f6?d=identicon)[grommasdietz](/maintainers/grommasdietz)

---

Top Contributors

[![grommasdietz](https://avatars.githubusercontent.com/u/136818759?v=4)](https://github.com/grommasdietz "grommasdietz (102 commits)")[![grommas](https://avatars.githubusercontent.com/u/5681075?v=4)](https://github.com/grommas "grommas (24 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (5 commits)")[![semantic-release-bot](https://avatars.githubusercontent.com/u/32174276?v=4)](https://github.com/semantic-release-bot "semantic-release-bot (1 commits)")

---

Tags

hidden-characterskirbykirby-cmskirby-pluginkirbykirby-pluginkirby-cmspanelhidden-characters

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/grommasdietz-kirby-hidden-characters/health.svg)

```
[![Health](https://phpackages.com/badges/grommasdietz-kirby-hidden-characters/health.svg)](https://phpackages.com/packages/grommasdietz-kirby-hidden-characters)
```

###  Alternatives

[medienbaecker/kirby-modules

Easily add modules to your pages

895.5k1](/packages/medienbaecker-kirby-modules)[belugadigital/kirby-navigation

Kirby 5 field for hierarchical menus with drag &amp; drop level indentation.

8614.7k](/packages/belugadigital-kirby-navigation)[bnomei/kirby3-dotenv

Kirby Plugin for environment variables from .env

4149.6k2](/packages/bnomei-kirby3-dotenv)[bnomei/kirby3-janitor

Kirby Plugin for running commands like cleaning the cache from within the Panel, PHP code or a cronjob

9342.8k2](/packages/bnomei-kirby3-janitor)[bnomei/kirby3-recently-modified

Kirby Section to display recently modified content pages

3210.6k](/packages/bnomei-kirby3-recently-modified)[bnomei/kirby-janitor

Kirby Plugin for running commands like cleaning the cache from within the Panel, PHP code or a cronjob

935.5k2](/packages/bnomei-kirby-janitor)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
