A packing engine for words, emoji and images
PackText
01
Any shape
Hand it an outline and it fills it edge to edge.
0 pieces in 0.0 ms
02
Words, emoji, images
Anything you can rasterize is a piece. Bring your own.
0 pieces in 0.0 ms
03
Fast
Pieces and the board are 1-bit bitmaps, so a fit test is a few ANDs.
0.0ms 0 pieces, 0 µs each
Pieces
What the packer sees
04
The engine
A small C++ core with no dependencies. It runs here as WebAssembly, and natively inside Word Mess on iPhone, iPad and Mac.
…
packtext.wasm, the whole engine, as this browser received it
- Core
- C++20, about 3,000 lines, no dependencies.
- Board
- 1 bit per pixel, 64 pixels to a machine word. An 800 by 600 board is 60 KB and sits in L1 cache.
- Fit test
- Bitwise AND over a 3-level mipmap. The coarse levels reject most candidate spots before the full bitmap is touched.
- Search
- A precomputed Archimedean spiral outward from the origin. A rectangular spiral is available.
- SIMD
- NEON on Apple silicon and WebAssembly SIMD on this page: 128 bits per operation on the collision, stamp and mask paths.
- Pieces
- Any bitmap. Text set by Core Text or FreeType, or alpha you bring; this page rasterizes on a canvas.
- API
- C, 25 calls: boards, shapes, masks, place, test, stamp, remove.
- Runs on
- This page as WebAssembly. Word Mess on iPhone, iPad and Mac.
Built for Word Mess
Every level of Word Mess is a word cloud packed by PackText: a fresh mess of words in mixed faces and angles, laid out the moment you tap play. Find the words before the clock runs out.
- Over a million downloads
- Featured by Apple as a Staff Favorite and in New Games We Love
- Four modes: Find, Rhymes, Categories and a bonus round
- Rebuilt from the ground up in 2026 for today's iPhone and iPad
iPhone, iPad and Mac with Apple silicon.