PHPackages                             simonlou/better-typo - 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. simonlou/better-typo

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

simonlou/better-typo
====================

Fix wrong quotation marks, apostrophes and hyphens in Kirby

1.0.0-beta2(2y ago)201[1 PRs](https://github.com/simonlouschueler/better-typo/pulls)MITPHP

Since Apr 25Pushed 2y ago1 watchersCompare

[ Source](https://github.com/simonlouschueler/better-typo)[ Packagist](https://packagist.org/packages/simonlou/better-typo)[ Docs](https://github.com/simonlouschueler/better-typo)[ RSS](/packages/simonlou-better-typo/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (1)Versions (2)Used By (0)

Better Typo
-----------

[](#better-typo)

*Better Typography for your Kirby Site*

“Better Typo” is a Kirby plugin tailored for enhancing typography especially for client-submitted content. It automatically transforms [dumb quotes](https://smartquotesforsmartpeople.com/) (`""`/`''`) into smart quotes, straight apostrophes (`'`) into their curved equivalents and lots more. Automation in typography ensures consistency and professionalism without requiring manual intervention from designers.

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

[](#installation)

The first option is to simply drag the `better-typo` folder inside your `site/plugins` folder.

The second option is to install “Better Typo” directly through the command line via Composer:

```
composer require simonlou/better-typo

```

How to Use
----------

[](#how-to-use)

Just add a `->bettertypo()` or `->bt()` to your chain which inputs the text you want to enhance.

For example:

```
$page->text()->bettertypo()
```

or

```
$page->text()->bt()
```

Language Configuration
----------------------

[](#language-configuration)

“Better Typo” is currently available for English and German. In your `site/config/config.php` file you can specify which language you want to use (`en` or `de`). English is the default if you don’t add anything in your config. It's really important to choose the right language because the corrections are different.

```
return [
    'simonlou.better-typo.language' => 'de',
];
```

Features
--------

[](#features)

- Fixes double quotes: `""` → `“”` (localized)
- Fixes single quotes: `''` → `‘’` (localized)
- Fixes guillemets facing the wrong direction: `« … »` → `» … «` (German)
- Fixes apostrophes: `'` → `’`
- Fixes hyphens that are used as en dashes: `… - …` → `… – …`
- Fixes wrong multiplication signs: `X`/`x` → `×`
- Adds thin space between number and unit: `1m`/`1 m` → `1 m`
- Adds thin spaces before and after slash: `/`/`/` → ` / `
- Fixes ellipsis: `...` → `‌…`

To Do
-----

[](#to-do)

- Handle special cases like ’90s, ’Twas, Rock ’n’ Roll, etc.
- If there is only one dumb single quote in a string, it’s probably an apostrophe
- Track open/closed state while iterating over the text to make more informed decisions
- Handle double primes for inch
- Add non-breaking spaces

Credits
-------

[](#credits)

“Better Typo” is developed by [Simon Lou](https://simonlou.com) ([@simonlou@typo.social](https://typo.social/@simonlou)).

Thanks to [Frank Rausch](https://frankrausch.com) ([@frankrausch@mastodon.social](https://mastodon.social/@frankrausch) for the inspiration, he did a similar project for swift a few years back.

License
-------

[](#license)

The “Better Typo” source code is released under the MIT License. Please view the LICENSE file for details.

###  Health Score

16

—

LowBetter than 5% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity27

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% 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

Unknown

Total

1

Last Release

744d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ccb2df553c95ebd1d73df1549a37b9ab19c1697cfb7dd043506fc3337517a8fa?d=identicon)[simonlou](/maintainers/simonlou)

---

Top Contributors

[![simonlouschueler](https://avatars.githubusercontent.com/u/105429304?v=4)](https://github.com/simonlouschueler "simonlouschueler (16 commits)")

---

Tags

kirbyplugin

### Embed Badge

![Health badge](/badges/simonlou-better-typo/health.svg)

```
[![Health](https://phpackages.com/badges/simonlou-better-typo/health.svg)](https://phpackages.com/packages/simonlou-better-typo)
```

###  Alternatives

[belugadigital/kirby-navigation

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

8713.4k](/packages/belugadigital-kirby-navigation)[rasteiner/k3-whenquery

Conditionally show fields and sections. Better.

6717.8k](/packages/rasteiner-k3-whenquery)[bogdancondorachi/kirby-table-field

Table field plugin for Kirby CMS

5317.7k](/packages/bogdancondorachi-kirby-table-field)[floriankarsten/kirby-plausible

Simple plugin providing Plausible tracking and iframe panel view to Kirby panel.

234.5k](/packages/floriankarsten-kirby-plausible)[swiegmann/kirby-menu

This Kirby CMS-Plugin lets you build and render structured menues with a variety of features.

141.4k](/packages/swiegmann-kirby-menu)

PHPackages © 2026

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