Community

Apps

Emojito

Emojito is a small Nostr tool with a very specific job: make custom emoji sets portable. It is about shortcodes, image URLs, bookmarks, reactions and the strange way a community starts to speak in its own little pictures.

Emojito icon
Apps The product layer Clients, signers, publishing tools, wallets and protocol utilities.
Back to Nostr
Apps

Apps shelf

Apps pages collect clients, signers, tools, developer libraries and product research without turning the app into the whole network.

Apps All Apps pages App routeProduct profiles, categories, tools and source links Browse appsClose shelf

App orientation

App categories

App profiles

0xchatadvanced-nostr-searchAegisAlbyAlby GoAlby HubAlby HubAlby SDKAmberAmberAmethystAmethystApp and product researchApplication-specific dataBlossomBlossom spec NIP-B7BookstrBorisBouquetCalendar by FormstrChachiNostr Apps DirectoryCoracleCoracleCorny ChatCreatrDamusDamusDeveloper stack researchDittoDittodiVineDocstrDTANEmojitoFlotillaFlycatFormstrFountainFreeFromFundstrfutrGIF BuddyGittrgo-nostrGossipGossipGrimoireGroups NIP-29HablaHablaHello Nostr — ResourcesHighlighterHiveTalkhomebrew-nostrHORNET StorageHugo2NostrHyperNoteIrisIrisJumblekanbanstrKeys BandListrLNBits NostrmarketLumeLumilumiLUMINAMapstrMarmot Protocolmatrix-nostr-bridgeMeetstrMemestrMindsmonstrmostardMostronaknak — Nostr Army KnifeNalgorithmNarrnashboardNDKNegentropyngitNofluxNosNos Socialnos2xnosbinnosclNostorg Feature MatrixNostr App ManagerNostr Apps Directory GuideNostr clients feature listNostr Compass — ProjectsNostr Developer GuideNostr Development KitNostr Events MonitorNostr MCP ServerNostr NestsNostr PlaygroundNostr Service ProvidersNostr Writernostr-post-checkernostr-protocol/nostrnostr-rubynostr-sdknostr-sdk-ffinostr-sdk-flutternostr-to-rssnostr-toolsNostr.bandnostr.buildnostr.co.uk ClientsNostr.how — Clientsnostr.hsNostrabilityNostrAppsNostrApps category — AudioNostrApps category — CareerNostrApps category — CommunityNostrApps category — CurationNostrApps category — Direct MessageNostrApps category — DiscoveryNostrApps category — File SharingNostrApps category — Group ChatNostrApps category — MeatspaceNostrApps category — OnboardingNostrApps category — SignersNostrApps category — Toolsnostrchecknostrdbnostrdb-rsNostreeNostreonNostriaNostridNostrium / read.nostr.comNostrmoNostrubenoStrudelnoStrudelNostterNosturNosturNotedeckNpub.proNpub.worldnsec.appnsiteNsiteNstart.meObsidian Nostr WriterOlasOpenvibeOracoloOstrich WorkOwn Your PostsP2P BandPazPeridotPhoenixPlebeian MarketPostizPostr / write.nostr.comPrimalPrimalPrimal Article Editor / Reads authoringPrimal Studiopynostrpython-nostrRecommended Application HandlersRelay Toolsrsslayrust-nostrrust-nostr docsSatelliteSatellite EarthSatlantisSatShootShakespeareShopstrSlidestrSnortSnortStemstrswift-nostr-clientTreasuresWavlakeWavlakeWikifreediaWikistrYakiHonneYakiHonneYakiHonne mobile/web app directoryYondar

App pages

Deep dives

Field guides

Awesome Nostr branches

Research and library

Source inventory

Deep Research: Clients, apps and product surfacesDeep Research: Developer stack and toolingResearch Map: nostrapps.comResearch Source: 0xchatResearch Source: 0xchat — NostrApps pageResearch Source: advanced-nostr-searchResearch Source: Aegis — NostrApps pageResearch Source: AlbyResearch Source: Alby — NostrApps pageResearch Source: Alby GoResearch Source: Alby HubResearch Source: Alby Hub GitHubResearch Source: Alby SDKResearch Source: AmberResearch Source: Amber — NostrApps pageResearch Source: AmethystResearch Source: Amethyst GitHubResearch Source: Awesome Nostr ResourcesResearch Source: BookstrResearch Source: BorisResearch Source: Boris — NostrApps pageResearch Source: BouquetResearch Source: Bouquet — NostrApps pageResearch Source: Calendar by FormstrResearch Source: ChachiResearch Source: Chachi — NostrApps pageResearch Source: CoracleResearch Source: Coracle — NostrApps pageResearch Source: Corny ChatResearch Source: DamusResearch Source: Damus — NostrApps pageResearch Source: DittoResearch Source: Ditto — NostrApps pageResearch Source: DocstrResearch Source: DTANResearch Source: DTAN — NostrApps pageResearch Source: EmojitoResearch Source: Emojito — NostrApps pageResearch Source: Flotilla — NostrApps pageResearch Source: FlycatResearch Source: FormstrResearch Source: Formstr — NostrApps pageResearch Source: FountainResearch Source: FreeFromResearch Source: FreeFrom — NostrApps pageResearch Source: FundstrResearch Source: futrResearch Source: futr — NostrApps pageResearch Source: GIF BuddyResearch Source: GIF Buddy — NostrApps pageResearch Source: GittrResearch Source: go-nostr GitHubResearch Source: GossipResearch Source: Gossip — NostrApps pageResearch Source: GrimoireResearch Source: Grimoire — NostrApps pageResearch Source: HablaResearch Source: Habla — NostrApps pageResearch Source: Hello Nostr — ResourcesResearch Source: HighlighterResearch Source: HiveTalkResearch Source: HORNET Storage — NostrCompassResearch Source: IrisResearch Source: Iris — NostrApps pageResearch Source: JumbleResearch Source: Jumble — NostrApps pageResearch Source: Keys BandResearch Source: Keys Band — NostrApps pageResearch Source: ListrResearch Source: LNBits NostrmarketResearch Source: LumeResearch Source: LumilumiResearch Source: LUMINAResearch Source: MapstrResearch Source: Marmot ProtocolResearch Source: MeetstrResearch Source: MemestrResearch Source: MindsResearch Source: monstr GitHubResearch Source: mostardResearch Source: MostroResearch Source: my.nostr.comResearch Source: nak — Nostr Army KnifeResearch Source: nak GitHubResearch Source: NalgorithmResearch Source: Narr — NostrApps pageResearch Source: nashboardResearch Source: NDK GitHubResearch Source: NDK NPMResearch Source: NegentropyResearch Source: Noflux — NostrApps pageResearch Source: Nos SocialResearch Source: Nos Social — NostrApps pageResearch Source: nos2xResearch Source: nos2x — NostrApps pageResearch Source: nosbinResearch Source: noscl GitHubResearch Source: Nostorg Feature MatrixResearch Source: Nostr App ManagerResearch Source: Nostr Book — KindsResearch Source: Nostr DesignResearch Source: Nostr Developer GuideResearch Source: Nostr NestsResearch Source: Nostr Nests — NostrApps pageResearch Source: Nostr PlaygroundResearch Source: nostr-post-checkerResearch Source: nostr-protocol/nostr GitHubResearch Source: nostr-sdk crates.ioResearch Source: nostr-sdk-ffi GitHubResearch Source: nostr-tools GitHubResearch Source: nostr-tools NPMResearch Source: Nostr.BandResearch Source: nostr.buildResearch Source: nostr.co.uk ClientsResearch Source: Nostr.howResearch Source: Nostr.how — ClientsResearch Source: Nostr.how — ProtocolResearch Source: Nostr.how — What is Nostr?Research Source: Nostr.orgResearch Source: NostrabilityResearch Source: NostrAppsResearch Source: NostrApps category — AudioResearch Source: NostrApps category — CareerResearch Source: NostrApps category — CommunityResearch Source: NostrApps category — CurationResearch Source: NostrApps category — Direct MessageResearch Source: NostrApps category — DiscoveryResearch Source: NostrApps category — File SharingResearch Source: NostrApps category — Group ChatResearch Source: NostrApps category — MeatspaceResearch Source: NostrApps category — OnboardingResearch Source: NostrApps category — SignersResearch Source: NostrApps category — ToolsResearch Source: nostrcheckResearch Source: nostrdb GitHubResearch Source: NostreeResearch Source: Nostree — NostrApps pageResearch Source: NostriaResearch Source: Nostria — NostrApps pageResearch Source: NostridResearch Source: Nostrmo — NostrApps pageResearch Source: Nostrmo GitHubResearch Source: NostrubeResearch Source: noStrudelResearch Source: noStrudel — NostrApps pageResearch Source: NostterResearch Source: NosturResearch Source: Nostur — NostrApps pageResearch Source: NotedeckResearch Source: Npub.proResearch Source: Npub.worldResearch Source: nsec.appResearch Source: NsiteResearch Source: Nstart.meResearch Source: Nstart.me — NostrApps pageResearch Source: Obsidian Nostr Writer — NostrApps pageResearch Source: OlasResearch Source: Olas — NostrApps pageResearch Source: OpenvibeResearch Source: OracoloResearch Source: Oracolo — NostrApps pageResearch Source: Ostrich WorkResearch Source: P2P BandResearch Source: PazResearch Source: PeridotResearch Source: Peridot — NostrApps pageResearch Source: PhoenixResearch Source: Phoenix — NostrApps pageResearch Source: Plebeian MarketResearch Source: Plebeian Market — NostrApps pageResearch Source: PrimalResearch Source: Primal — NostrApps pageResearch Source: Primal Article Editor / Reads authoringResearch Source: Primal StudioResearch Source: pynostr GitHubResearch Source: python-nostr GitHubResearch Source: Registry of KindsResearch Source: Relay Tools — NostrApps pageResearch Source: rsslayResearch Source: rust-nostr docsResearch Source: rust-nostr GitHubResearch Source: SatelliteResearch Source: SatShootResearch Source: ShakespeareResearch Source: Shakespeare — NostrApps pageResearch Source: ShopstrResearch Source: Shopstr — NostrApps pageResearch Source: SlidestrResearch Source: SnortResearch Source: start.nostr.netResearch Source: StemstrResearch Source: TreasuresResearch Source: WavlakeResearch Source: WikifreediaResearch Source: Wikifreedia — NostrApps pageResearch Source: WikistrResearch Source: Wikistr — NostrApps pageResearch Source: YakiHonne mobile/web app directoryResearch Source: YondarResearch Source: Yondar — NostrApps page
Apps18 min readcustom emoji sets

Emojito

Emojito is not trying to become a full social client. Its job is narrower and more revealing: create, browse and bookmark custom emoji sets so your reactions can move through Nostr instead of being trapped inside one platform's private sticker drawer.

The quick readEmojito is a focused tool for Nostr custom emoji. The official app listing says it creates custom emoji sets for supported clients, the code trail points into verbiricha's ngine monorepo, and the protocol work sits around NIP-30 and NIP-51. One important caveat: on June 6, 2026, the public emojito.meme domain returned a Vercel deployment-not-found response, so read this as a project with a real trail and a currently fragile live surface.

The joke has structure

Custom emoji looks unserious until you watch a community use it for a week. Then it becomes obvious that these tiny images are not just decoration. They are a shared accent. They are inside jokes, status signals, soft applause, mockery, membership, memory. A good custom emoji set can say "we know each other" faster than a paragraph.

That is why Emojito deserves a real article instead of the old catalog sentence. The app is not another general Nostr client. It is a small workshop for one social layer: the reaction language that grows around a group. NostrApps describes Emojito in plain terms as a web app to create custom emoji sets, with the highlight that those sets can be used on supported clients. The older public page metadata said the same thing in a more playful voice: stir up your reactions with custom emoji.

The important word is supported. Emojito does not magically make every Nostr app render your favorite GIF or meme face. It creates Nostr data that other clients can understand if they implement the relevant NIPs. That difference matters. A normal platform emoji pack lives inside one company's database. Emojito's idea is closer to: make the set a signed Nostr object, let people bookmark it, let clients read it, and let the culture move with the users instead of the other way around.

If you have ever been in a Discord, Slack, Telegram or forum group where the custom emoji carried half the tone of the place, you already understand the product. Emojito asks what that would look like if the emoji set were not locked to the platform account that uploaded it. It is a small question, but it touches something large: who owns the little rituals of an online community?

How Emojito wants you to use it

The app's own flow is beautifully short: create or find an emoji set, bookmark it, react. That is the whole loop. No grand manifesto is needed. You either want to make a pack, collect a pack, or use a pack in places where Nostr clients support custom emoji.

The source code makes that flow concrete. The home view shows featured packs such as SUSHIYUKI, Reacts and Nostopus, then asks Nostr for application handler events that advertise support for emoji sets or emoji lists. That last part is a nice piece of protocol thinking. Instead of pretending Emojito lives alone, the page tries to show which other apps say they can handle the same data. In a healthy Nostr ecosystem, that is exactly the point: one tool creates the object, another tool renders it, another tool may help you browse or edit it.

The new-set screen is just as direct. You give the set a name, add shortcodes, pick images, preview the result and save. Under the hood, save does not mean "send this to Emojito's private database." The code constructs an emoji set event, signs it through the user's signer, publishes it, then routes you to the encoded address for the set. If you own the set, the UI exposes edit behavior. If you like someone else's set, the UI exposes a bookmark action.

That bookmark action is not a browser favorite. It updates your Nostr emoji list, which means your chosen set can follow your public key. Again, this is the thing to notice. Emojito is useful because it turns a very social object into something that can be signed, referenced and discovered. You are not just copying a funny image URL; you are pointing at a set that has an author, a name, tags and an address.

The events under the smile

The protocol center is NIP-30 and NIP-51. NIP-30 defines custom emoji tags: a shortcode and an image URL that clients can use when a post contains the matching shortcode. NIP-51 then gives us list and set kinds. Kind 10030 is the user's preferred emoji list, and kind 30030 is an emoji set. If you want the product sentence in one breath, here it is: Emojito helps people create kind 30030 sets and bookmark them through kind 10030 lists so clients that support NIP-30 can render those shortcodes as images.

That sounds technical, but it is not abstract. Imagine you create a set called "Crays Kitchen" with shortcodes for a chef kiss, a tiny espresso machine, a dramatic table flip and a club-specific reaction GIF. The event does not need to carry the image files themselves. It can carry the names and URLs. A client reads the set, sees the shortcode, fetches the image and displays it where the text contains the matching marker. The event is small; the cultural effect can be big.

Emojito's code follows this shape closely. The new emoji set component builds a set with a stable identifier, a title and a list of emoji tags. The emoji set view reads those emoji tags, renders their images, shows the author and lets a signed-in user open, bookmark, unbookmark or edit when they are the creator. Reactions on the set itself can also be shown, including regular reactions and zaps. That makes the set feel like a Nostr object, not a settings screen.

There is also a subtle portability lesson here. A custom emoji event is not valuable because every image URL is eternal. It is valuable because the relationship between the shortcode, the image and the author can be expressed in open data. If the image host dies, the emoji breaks. If a client ignores custom emoji, the emoji disappears into text. But the object is still understandable in a way a closed-platform sticker pack usually is not.

The builder trail

The public listing for Emojito points to the author key npub107jk7htfv243u0x5ynn43scq9wrxtaasmrwwa8lfu2ydwag6cx2quqncxg. The Nostr profile behind that key uses the name verbiricha, describes the account as an avant-garde Nostr dev and points to Grimoire. That fits the code trail: the repository that matters here is verbiricha/ngine, a TypeScript Nostr application framework under the MIT license.

Inside that monorepo, Emojito appears as apps/emojis. The package is a Next.js app and the package file names the working parts plainly: Next 14, React 18, Chakra UI, Nostr Development Kit, NDK cache Dexie, TanStack React Query, nostr-tools, react-intl and @ngine/core. The root monorepo uses pnpm and Turbo. This is not just a link directory with a logo; there is a real app surface in the source.

The repo facts are worth reading with the right temperature. GitHub shows verbiricha/ngine as a public TypeScript project created in December 2023, MIT licensed, with a small number of stars and forks, and its last push recorded in January 2025. The package itself is marked private, which in npm language means it is not meant to be published as a package. It does not mean the source is hidden. It means the app lives inside the framework repo.

The public domain story is messier. NostrApps still links to emojito.meme, search results preserve an older crawl of the live page, and the code's metadata sets the base URL to that same domain. But when checked on June 6, 2026, the domain returned Vercel's deployment-not-found response. That is not a reason to erase Emojito from the hub. It is a reason to be honest: the project has a real Nostr and code trail, but the live deployment is not something we should present as reliably available today.

Where it gets practical

The best use case is a community that already has its own tone. A public Nostr group, a dev circle, a music scene, a meme-heavy relay, a venue community, a DAO chat, a fan base, a zine crew: all of them can benefit from a shared pack that travels with people. You do not need Emojito if you only want the Unicode smiley everyone already has. You need it when the reaction belongs to your crowd.

For creators, the interesting part is identity. A musician could publish reaction GIFs for fans. A conference could publish event-specific emoji. A software project could turn release rituals into a pack. A local venue could use a custom set for regulars. Because the set is tied to a Nostr author and an address, it has a better chance of becoming part of the public social memory around that creator than a file tossed into one chat room.

For app builders, Emojito is a small test of interoperability. Can your client parse NIP-30? Can it let a user pick from bookmarked sets? Can it display kind 30030 groups without making the composer feel heavy? Can it avoid ugly broken images when a URL fails? Can it show enough context that users know whose set they are using? These are not giant features, but they are the details that make Nostr feel less like raw protocol and more like an inhabitable place.

For Crays, that is why the app belongs on the product shelf. We care about tools that turn a public key into social agency. Emojito does that at the smallest scale: a reaction. You sign a set, you share it, another client may use it, and the group gets a tiny piece of portable language. Small, yes. But culture is often made of small repeated signals.

The careful part

There are three things to check before you depend on Emojito or any tool like it. First, client support. If the apps used by your people do not render custom emoji or emoji sets, the pack becomes a clever object that nobody sees. That is why the source code's supported-apps section matters: the app itself knew this feature needed an ecosystem around it.

Second, media durability. A kind 30030 set can point to image URLs, but the images still live somewhere. If the host deletes them, blocks hotlinking or disappears, the set turns into names without pictures. A serious community pack should use media hosting it understands and can maintain. Nostr makes the reference portable; it does not make every image immortal.

Third, moderation and taste. Custom emoji can be delightful, but it can also carry copyright problems, harassment, spam, shock material or tracking-heavy image URLs. A client that renders everything without context can surprise its users. A community that publishes a pack should think like a publisher: who made these images, where are they hosted, are they safe to show, and what happens when someone tries to weaponize the joke?

Read Emojito with that adult caution and it becomes more valuable, not less. The app shows how Nostr can carry the soft, messy, funny parts of social life without needing one platform to own them. Even if the current public deployment needs repair, the idea is strong: your reaction language should be something your community can create, sign, share and carry.

Sources worth opening

Start here if you want to verify the project yourself. The official domain is included because it is the public project URL, but as checked on June 6, 2026 it was not serving the app.

Back to the Crays Nostr page
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

How to use this page

Find the product surface first.

Search clients, signers, product categories or developer tools when you need a specific app, source file or comparison clue.

AppsKeep exploring AppsApp routeProduct profiles, categories, signer guides and source links.Browse apps
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

Bring something back

Ask, suggest, submit or nominate.

Use these links when something is missing, a source is stale, or a public Nostr builder belongs in the map.