PHPackages                             alecrabbit/php-wcwidth - 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. [CLI &amp; Console](/categories/cli)
4. /
5. alecrabbit/php-wcwidth

ActiveLibrary[CLI &amp; Console](/categories/cli)

alecrabbit/php-wcwidth
======================

Calculate width of unicode strings rendered to a terminal

1.0.0(2y ago)437.8k↓43.9%[4 PRs](https://github.com/alecrabbit/php-wcwidth/pulls)3MITPHPPHP &gt;=8.2

Since May 17Pushed 2y ago1 watchersCompare

[ Source](https://github.com/alecrabbit/php-wcwidth)[ Packagist](https://packagist.org/packages/alecrabbit/php-wcwidth)[ RSS](/packages/alecrabbit-php-wcwidth/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependencies (7)Versions (12)Used By (3)

🇺🇦 🇼 PHP Wide Character Width
=============================

[](#--php-wide-character-width)

[![PHP Version](https://camo.githubusercontent.com/281b2673207b62f55500f01c88f17e386fc6d0d24fd0887effc40dae7ce4f752/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f616c65637261626269742f7068702d776377696474682f6465762d6d61737465722e737667)](https://php.net)[![Build Status](https://github.com/alecrabbit/php-wcwidth/workflows/build/badge.svg)](https://github.com/alecrabbit/php-wcwidth/actions)

[![Build Status](https://camo.githubusercontent.com/4f9eb10e570bacd7efd7f83169e2676f4745ec6fabfcc476420e7201ead4d5b8/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f616c65637261626269742f7068702d776377696474682f6261646765732f6275696c642e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/alecrabbit/php-wcwidth/build-status/master)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/5e98279ff7298d7cce75c3d344680f10772aee37db37c2e6ea427675989b9fac/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f616c65637261626269742f7068702d776377696474682f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/alecrabbit/php-wcwidth/?branch=master)[![Code Coverage](https://camo.githubusercontent.com/7f1d63a83a91c2bb43534116cb3f6e6afa2dd7ba108ba8d6dccce710a3d43202/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f616c65637261626269742f7068702d776377696474682f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/alecrabbit/php-wcwidth/?branch=master)

[![Latest Stable Version](https://camo.githubusercontent.com/1943345939e95fe451d5050091fd734af2f4c36248feaa65954229cf05cee68b/68747470733a2f2f706f7365722e707567782e6f72672f616c65637261626269742f7068702d776377696474682f762f737461626c65)](https://packagist.org/packages/alecrabbit/php-wcwidth)[![Latest Stable Version](https://camo.githubusercontent.com/98abb84c379f447c53bb72d98b0e177f8f1ba7262b50f4e5817cd181b913cbe3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616c65637261626269742f7068702d776377696474682e737667)](https://packagist.org/packages/alecrabbit/php-wcwidth)[![Latest Unstable Version](https://camo.githubusercontent.com/8f9add940e838ff60edb50731222ecec89d30171b42b84c880f68e70e8a5b63e/68747470733a2f2f706f7365722e707567782e6f72672f616c65637261626269742f7068702d776377696474682f762f756e737461626c65)](https://packagist.org/packages/alecrabbit/php-wcwidth)

[![License](https://camo.githubusercontent.com/cd809044f4db39618aa109918fe63b6fd780ee579e1f06828295c0130c0a5347/68747470733a2f2f706f7365722e707567782e6f72672f616c65637261626269742f7068702d776377696474682f6c6963656e7365)](https://packagist.org/packages/alecrabbit/php-wcwidth)[![Total Downloads](https://camo.githubusercontent.com/d46d78f5e12dee97440565a6c56f312aba2d4bd4757e21769529d4b4808ec2c0/68747470733a2f2f706f7365722e707567782e6f72672f616c65637261626269742f7068702d776377696474682f646f776e6c6f616473)](https://packagist.org/packages/alecrabbit/php-wcwidth)

> This is kinda port of python's [jquast/wcwidth](https://github.com/jquast/wcwidth)

[🌐 Unicode release files](src/File/versions.md)

- [Installation](#installation)
- [Quick start](#quickstart)
- [Usage](doc/usage.md)
- [FFI Extension](#ffi-extension)

###  Installation

[](#-installation)

```
$ composer require alecrabbit/php-wcwidth
```

###  Quick start

[](#-quick-start)

```
use function AlecRabbit\WcWidth\wcwidth;
use function AlecRabbit\WcWidth\wcswidth;

echo wcwidth('a'); // 1
echo wcwidth('é'); // 1
echo wcwidth('🐘'); // 2
echo wcswidth('🐘🐘🐘'); // 6

echo wcwidth('🐘🐘🐘'); // 2 - only first char is considered
```

> see [doc/usage.md](doc/usage.md) for more details.

###  FFI extension

[](#-ffi-extension)

> **Note** ‼️ Experimental feature.

For improved performance, consider leveraging the Foreign Function Interface (`FFI`) extension, if available. To enable this feature, set the `USE_FFI` environment variable to `true`.

```
USE_FFI=true
```

> **Note** When using `ffi` extension `version` value is ignored completely.

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity33

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity75

Established project with proven stability

 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

Every ~305 days

Total

5

Last Release

1017d ago

Major Versions

0.1.x-dev → 1.0.0-BETA.22023-09-20

PHP version history (2 changes)0.0.8PHP &gt;=7.2

1.0.0-BETA.2PHP &gt;=8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/11045453?v=4)[Alec](/maintainers/alecrabbit)[@alecrabbit](https://github.com/alecrabbit)

---

Top Contributors

[![alecrabbit](https://avatars.githubusercontent.com/u/11045453?v=4)](https://github.com/alecrabbit "alecrabbit (339 commits)")

---

Tags

phpunicodewcswidthwcwidthphpcliconsolewcwidthwcswidth

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/alecrabbit-php-wcwidth/health.svg)

```
[![Health](https://phpackages.com/badges/alecrabbit-php-wcwidth/health.svg)](https://phpackages.com/packages/alecrabbit-php-wcwidth)
```

###  Alternatives

[nunomaduro/termwind

It's like Tailwind CSS, but for the console.

2.5k271.5M386](/packages/nunomaduro-termwind)[nunomaduro/laravel-console-task

Laravel Console Task is a output method for your Laravel/Laravel Zero commands.

2592.3M13](/packages/nunomaduro-laravel-console-task)[alecrabbit/php-console-spinner

Extremely flexible spinner for \[async\] php cli applications

24038.0k2](/packages/alecrabbit-php-console-spinner)[mehrancodes/laravel-harbor

A CLI tool to Quickly create On-Demand preview environment for your apps.

10097.5k](/packages/mehrancodes-laravel-harbor)[php-school/learn-you-php

An introduction to PHP's core features: i/o, http, arrays, exceptions and so on.

3202.0k](/packages/php-school-learn-you-php)[alecrabbit/php-cli-snake

Lightweight cli spinner with zero dependencies

29216.7k5](/packages/alecrabbit-php-cli-snake)

PHPackages © 2026

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