Live demo: https://emoji.jujiplay.com/
Embed short secrets inside an emoji using invisible Unicode variation selectors, or reveal hidden messages from emoji payloads.
This small Next.js app provides a simple UI for encoding text into an emoji and decoding hidden payloads back into readable text.
- Encode a short secret into an emoji using invisible variation selectors
- Decode hidden payloads from emoji input
- Inline Emoji Picker (toggle with the Emoji Picker button)
- Copy output to clipboard with a transient "Copied!" notice and accessible
aria-livefeedback - Static export ready (see
next.config.ts->output: "export")
Prerequisites:
- Node.js (v18+ recommended)
pnpm(this project usespnpmbutnpmoryarnwill also work)
Install and run locally:
pnpm install
pnpm devOpen http://localhost:3000 in your browser.
Build and run production:
pnpm build
pnpm startExport static site (if you want an exported output):
pnpm build && next exportsrc/app— Next.js app routes and layoutsrc/components— UI components (includingemoji-picker)src/lib— encode/decode logic and emoji data
- Emoji Picker toggles inline beneath the emoji input and is keyboard accessible
- Copy action announces success via
aria-livefor screen reader users
- The app uses
next/fontfor Geist fonts - Metadata (site title & description) is defined in
src/app/layout.tsx - Conforms to simple, dependency-light approach
- The app is optimized for static export (
next export) or Vercel deployment - For Vercel, just connect the repository and deploy; set
NODE_ENV=productionduring builds - Live demo: https://emoji.jujiplay.com/
This project implements the technique described in Sushan Taneupane's article: "Unicode secrets — Hide and reveal text inside emojis using variation selectors". Read the original writeup here: