The version badge reads the GitHub tag: the family resolves through VCS repositories, not Packagist, so there is no registry listing to show.
Every Unicode emoji, and 7,000 special characters, as a fluent, typed PHP catalogue — render and convert between emoji, text, ASCII, emoticon, shortcode, image and escaped forms, for web and CLI, with a Laravel layer.
PHP ^8.4.1 || ^8.5. The core runs without booting Laravel; the Laravel layer targets Laravel ^13.0.
Add the laranail VCS repositories to your root composer.json (see
installation), then:
composer require laranail/emojis:^0.1Blade and Livewire need nothing else: the built picker ships inside the Composer package. For the picker in
your own JavaScript build, @laranail/emojis-picker (the vanilla picker and its React adapter) is published to
GitHub Packages while npm publishing is blocked
(npm/cli#9969). GitHub Packages asks for a token even for a public
package, so add a GitHub token with read:packages to the project's .npmrc:
@laranail:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}npm install @laranail/emojis-picker@^0.9The JavaScript package versions independently of the Composer package, which is why that constraint is
not ^0.1. Registry versions are immutable, so a package cannot follow a tag that moves: 0.8.2 is the
newest published build, and the Composer package's moving v0.1.0 does not publish a JavaScript version at
all. The picker's code is the same in both.
See installing from GitHub Packages.
The service provider and the Emojis facade are auto-discovered, so nothing is required. Publish
the config only to change a default, then check the install:
php artisan vendor:publish --tag=laranail::emojis-config
php artisan laranail::package-tools.doctoruse Simtabi\Laranail\Emojis\Facades\Emojis;
Emojis::text('Ship it :rocket: :)')->withEmoticons()->toEmoji(); // "Ship it 🚀 🙂"
Emojis::text('Ship it 🚀')->toAscii(); // "Ship it :rocket:"Emojis::strip('Great work 🎉👏🏽'); // "Great work "
Emojis::search('cat'); // 🐈 😹 😼 🐱 … rankedThe getting started guide walks through the rest; everything else is under Documentation.
Hosted at https://opensource.simtabi.com/documentation/laranail/emojis/.
- Installation — requirements, VCS repositories, extensions
- Getting started — the five calls you will use most
- Configuration — every key in
config/laranail/emojis.php - Modes and conversion — the conversion matrix and how degradation works
- Architecture — the scanner, the dataset, failure handling, and why
- Release — versioning, the moving tag, and refreshing the dataset
- Catalogue and lookups —
Emojis,Emoji,EmojiId, flags, skin tones - Querying and search —
Query, ranked localized search - Text conversion —
TextConverter, every option and inspection method - Emoticons — every ASCII smiley recognised, and the emoji it converts to
- Emoji list — every emoji by group, with its name, shortcode and version
- Images — image sets, fit (padding removal), a verified local copy, your own images, SVG sanitising
- Symbols — 7,354 special characters: arrows, currency, maths, letters, hieroglyphs
- Status tags —
[OK],[WARN],[FAIL]and 75 more, the emoji each stands for, andMode::Tag - Styles — the stylesheet: inline, link or
@usethe SCSS; tokens; the Vite build - Terminal output —
Mode::Auto, width and truncation - Localisation — shipped locales and fallback
- Kaomoji — text faces by group
- Security and safety — sanitising hidden payloads, emoji policies
- Japanese emoji — carrier emoji, the Japanese collection, names
- Extending — custom emoji, shortcodes, emoticons, image sets, macros
- Laravel integration — facade, helper, Blade, casts, rules, commands
- Emoji picker — search, tabs, recents, skin tones and keyboard support, as Blade, Livewire, React or a plain ES module
- HTTP API — nine read-only JSON endpoints, off by default: emoji, picker payload, symbols, kaomoji, tags
- Data sources — where every field comes from, what we check against, the weekly refresh
- Licences — the third-party data notices
- Sanitise user input
- Render emoji as images in Blade
- Emoji in console output
- Store emoji in a utf8mb3 column
- Add an emoji picker to a form
- Configure the emoji picker
- Feed a JavaScript emoji picker
- Target older platforms
- Fit emoji into UI without padding
- Block hidden prompt injection in user text
- Use your own emoji images
- Serve emoji images from your own origin
- Build a special-character picker
See CONTRIBUTING.md. Report vulnerabilities privately to security@simtabi.com — see
SECURITY.md.
MIT — see LICENSE. The generated data carries the Unicode, MIT and Apache-2.0 notices in docs/licences.md.