- Starting values for the four phone canvases published.
- Light, dark and black appearances defined for the iMessage layout.
- Wallpaper dim and bubble alpha are stored per theme instead of as a filter.
Fake Text Message Generator
Type a conversation, pick a look (dark, light or black background), and download a screenshot. Multi-turn threads, timestamps and read receipts included.
- Safe top62 pt
- Logical frame402 × 874 pt
- Body type17 / 22 pt
- Safe bottom34 pt
- Canvas1206 × 2622 px
- Bubble radius18 pt
Measured on iPhone 17 Pro simulator, iOS 26.4 (2026-10-22)Grade A
Free download, watermarked
The free tier gives you a downloadable PNG with a small “Scenemock” watermark in the corner. No signup, no upload, no queue. When you need the watermark gone, a 2× export or a batch of images, see pricing.
Fake Text Message Generator mockups render entirely in your browser: the text you type is never sent to a server, never stored and never attached to an account.
How to make one in three steps
Write the thread
One message per line. Start a line with “me:” to send it from your side, leave it off to have the other person speak. Up to 50 lines and 2,000 characters per message.
Pick the look
Choose light, dark or black background and the OS version. Dark is the default: bubble colours, status-bar ink and wallpaper dim all shift together instead of just inverting.
Download
Press “Download PNG (free)”. The file is generated in the tab you are looking at — nothing is uploaded, queued or emailed.
Appearance system: light, dark and black background
Most chat mockup tools treat “dark mode” as a CSS filter. A phone does not: the status bar flips its ink, the outgoing bubble keeps its accent colour but loses a little opacity, the incoming bubble switches to a warm graphite, and the wallpaper is multiplied down instead of being covered with white. Those four things happen together, and they are what makes a screenshot look like it came off a device rather than out of a web page.
Three appearances, not two
Light is the daytime look: near-white page, pale grey incoming bubbles, saturated blue outgoing bubbles, black status-bar ink. Dark keeps the blue but moves everything else toward black; the page background becomes #000000, incoming bubbles become #26252A and text becomes#FFFFFF. Black background is a third, separate look — it is the one people choose for meme images and story posts — where the wallpaper is dimmed further still and the interface sits on pure black. It is not an alias for dark mode: the bubble groups are the same colours, but the page behind them is #000000 with a dim value of 0.6 versus dark's0.35.
Wallpaper dimming
When a wallpaper is present, modern chat apps do not simply lower its brightness; they multiply a dark layer over it so highlights stay distinct. Our renderer stores this as a singlewallpaperDim value per theme. Light uses 0, dark uses0.35 and black uses 0.6. Because the multiplication is applied before bubbles are drawn, text and bubbles keep their own contrast while the backdrop recedes — which is exactly why screenshots taken in dark mode look flat but readable.
Bubble opacity in the dark
Dark-mode bubbles are slightly translucent. On a device this lets the wallpaper texture show through at a low level and stops large bubble groups from looking like stickers. We follow the same rule: bubble alpha is 1 in light, 0.95 in dark and0.9 on black, so a long thread of outgoing messages still reads as one column.
Status-bar ink
The status bar is the fastest tell. If the time and battery icons stay black on a dark background, the image is obviously fake. Our themes flip the ink from #000000 to#FFFFFF the moment the background goes dark, and the header uses its own background (rgba(255,255,255,0.92) in light, rgba(28,28,30,0.92) in dark) with a hairline border so the conversation below still separates.
Timestamps and receipts
In the platform this layout reproduces, timestamps sit below the bubble and read receipts are written out as a word rather than drawn as ticks. Both are drawn with the theme's muted ink, so they never compete with message text. The generic generator uses the same geometry for all three appearances; only the colours change.
What the generator does not change
Switching themes never changes the conversation. Line breaks, bubble widths, avatar size and the position of the header stay put, which is what lets you export the same thread three times and place the images side by side.
Full token reference
The table below is generated from the same data the renderer reads, so the numbers you see here are the numbers used to draw your image.
| Parameter | iMessage (iOS 18) | WhatsApp-style | Messenger-style | Google Messages (Android) |
|---|---|---|---|---|
| Canvas (device px @3×) | 1206 × 2622 | 1080 × 2400 | 1080 × 2400 | 1080 × 2400 |
| Logical size (pt) | 402 × 874 | 360 × 800 | 360 × 800 | 360 × 800 |
| Safe top (pt) | 62 | 32 | 32 | 24 |
| Status bar height (pt) | 62 | 24 | 24 | 24 |
| Status bar | ios-island · signal, wifi, battery | android · signal, wifi, battery | ramless · signal, wifi, battery | android · dual-sim, signal, wifi, battery |
| Island / cutout (pt) | 125.3 × 36.7 @ top 14 | — | — | — |
| Calibration | A — iPhone 17 Pro simulator, iOS 26.4 (2026-10-22) | B — document values, pending device pass | B — document values, pending device pass | B — document values, pending device pass |
| Header height (pt) | 44 | 56 | 56 | 64 |
| Bubble max width | 72% | 75% | 70% | 75% |
| Bubble padding x / y (pt) | 16 / 10 | 18 / 12 | 18 / 12 | 20 / 12 |
| Bubble radius (pt) | 18 | 7.5 | 18 | 20 |
| Bubble tail | round | point | round | round |
| Text size / line height (pt) | 17 / 22 | 14.2 / 19 | 15 / 20 | 16 / 21 |
| Receipts | word: Sent / Delivered / Read | double tick | none | word: Sending / Sent / Delivered / Read |
| Composer placeholder | iMessage | Message | Aa | Text message |
| Timestamp position | below | inside | inside | inside |
| Outgoing / incoming bubbles (light) | #0B93F6 / #E9E9EB | #DCF8C6 / #FFFFFF | #0084FF / #F0F0F0 | #D3E3FD / #F1F3F4 |
| Outgoing / incoming bubbles (dark) | #0B93F6 / #26252A | #005C4B / #202C33 | #0084FF / #3A3B3C | #3D4F6B / #2D2F31 |
| Wallpaper dim (light / dark / black) | 0 / 0.35 / 0.6 | 0 / 0.35 / 0.6 | 0 / 0.35 / 0.6 | 0 / 0.35 / 0.6 |
| Bubble alpha (light / dark / black) | 1 / 0.95 / 0.9 | 1 / 0.95 / 0.9 | 1 / 0.95 / 0.9 | 1 / 0.95 / 0.9 |
Canvas sizes are device pixels at 3×; the iMessage canvas is 1206 × 2622, i.e. 402 × 874 points on the calibrated iPhone 17 Pro (iOS 26.4). All other measurements are device-independent points. The 390 × 844 / 47 pt layout from the first spec draft is kept as an uncalibrated variant and is not the default.
Starting values, pending device calibration: TODO(calibrate).
Appearance update log
Changes to the appearance system and the data behind the spec table.
Frequently asked questions
Does it support dark mode?
Yes. Dark is the default appearance, and dark mode changes the bubble colours, bubble opacity, status-bar ink and wallpaper dimming separately for each platform rather than simply inverting the light palette.
Do you store my conversation?
No. The thread is rendered locally on a canvas in your browser; the text never leaves the tab, and we have no account system that could hold it.
Is it free?
Yes. Watermarked PNG downloads are free and unlimited. Removing the watermark, 2× exports and batch exports are part of the paid plans.
Can I change bubble colours?
Not yet. The generator reproduces each platform's own palette so the result matches a device screenshot; an accent-colour option for Android's Material theme is planned.
What file do I get?
A PNG at the device's logical resolution (402 × 874 for the calibrated iPhone 17 Pro layout), with a small Scenemock watermark in the corner.