Facebook Messenger is one of the most-mocked chat interfaces on the internet, and one of the most consistently wrong. The usual failure is not colour but geometry: generators draw it like WhatsApp, with a tail on every bubble and a timestamp tucked inside it, and anyone who uses Messenger daily registers the fakeness before reading a single message. Messenger has no tails, does not stamp time inside bubbles, and treats a run of messages from one person as a single visual block. Get those three structural facts right and the platform starts to read as itself.
This guide walks through the details that separate a convincing Messenger mockup from a generic one, using the free Messenger chat generator. Everything renders in the browser, the PNG is generated on your device, and nothing you type is uploaded anywhere.
Messenger is a geometry problem, not a colour problem
Messenger has almost no signature colour. There is one blue — #0084ff — and it fills outgoing bubbles in both light and dark mode. Everything else is greyscale: a white conversation in light mode, a pure black one in dark mode, grey incoming bubbles, grey secondary text. Compare that with WhatsApp, where the green is the identity, or Snapchat, where the yellow is. In Messenger, if your greys are a shade off nobody notices; if your bubble shape is wrong, everybody does.
The practical consequence is that details you might treat as minor elsewhere become the load-bearing ones here. Corner radius, the way consecutive bubbles stack, where the avatar hangs, and where the Seen line goes — all four are geometry or placement decisions rather than colour choices, and all four are what an experienced user is actually reading when they glance at a thread.
The values the real app uses
These are the values ChatMock bakes into the Messenger generator, taken from the real client. If you are rebuilding the interface by hand in a design tool, start from this table rather than from memory.
| Element | Light mode | Dark mode |
|---|---|---|
| Chat background | #ffffff | #000000 |
| Outgoing bubble | #0084ff — the same blue in both modes, white text | |
| Incoming bubble | #e4e6eb | #303031 |
| Bubble shape | 18px capsules with no tails | |
| Contact avatar | Beside the last bubble of each of their groups, not every bubble | |
| Seen / time labels | Small grey text under the groups, never inside bubbles | |
The single most common mistake is copying the iMessage tail. Messenger bubbles are capsules — fully rounded on all four corners when a message stands alone. There is no tail, ever. A fast sanity check while designing is to zoom out: a real Messenger thread looks like a column of rounded rectangles, not a column of speech balloons.
Grouped messages and the 6px corner rule
When one person sends several messages in a row, Messenger does not repeat the full capsule for each one. It draws the run as a block: the corners facing the next message in the same group tighten from 18px down to about 6px on the sender's side, so the bubbles visually connect into one thought. The first and last bubbles of a run are the ones that get this treatment, which is why a three-message run has two loosened ends and a tight middle.
This is why runs matter for realism. A thread where every bubble is a separate, perfectly rounded capsule reads as a list of unrelated lines, not a conversation. When you build a mockup, resist the urge to alternate senders on every line. Real chats cluster: someone types two words, then thinks, then adds a third message, and only then does the other person reply. Reproducing that rhythm does more for the screenshot than any amount of colour tuning.
Seen, timestamps and avatar placement
Three placement rules carry most of the authenticity. Each is easy to get wrong and easy to check.
- The Seen label sits under your last outgoing message only. Not under every outgoing message, and never inside a bubble. In the editor this is the Contact → Delivery field: write
Seen, write a time, or clear it entirely. - Time labels sit under each group as small grey text. Messenger does not stamp individual bubbles, so a timestamp inside a bubble is an immediate tell.
- Your contact's avatar hangs beside the last bubble of each of their groups, not beside every bubble. With no photo uploaded, the generator draws a blue-gradient initial circle — exactly what the real app does for a contact without a picture.
- Your own messages never carry an avatar on the right. Avatars mark the other person; the right side is anonymous by design.
There is a useful side effect hidden in the Seen rule. If your conversation ends on your own message with no Seen line underneath, it reads as a message the other person has not opened yet. That is a very specific emotional state — the unanswered message — and it costs nothing to stage once you know the Delivery field controls it. Clearing the field is a scene decision, not a missing setting.
Four moves, in order
- Choose the contact and the presence line. Type a name into Contact → Name and upload an avatar if the scene needs one. The header status line is editable too:
Active nowand its variants are the realistic choices. - Lay out the runs. Give one side two or three consecutive rows before the other answers — the avatar then hangs beside the last bubble of the run rather than beside every line. A row can carry an image, caption included.
- Group the runs. Let two or three consecutive messages come from the same sender before the other person answers. The generator applies the 6px corner rule automatically, but it only helps if your script has runs to group.
- Set the Seen status. Under Contact → Delivery, write
Seenor a time; leave it empty for an unanswered thread. The line only ever appears under the final outgoing message. - Export. 1x is 390px wide, 2x is 780px, 3x is 1170px. For thumbnails and blog images, 2x is the usual balance of sharpness and file size. Leave Phone frame off unless you specifically want a device mockup — a real screenshot never includes the phone body.
The tells that give a fake Messenger screenshot away
- Bubble tails. Messenger has never drawn them.
- Every bubble rounded to the same 18px, with no tightening where a run starts or ends.
- The avatar repeated beside every message instead of once per group.
- A timestamp inside a bubble, or a Seen line under more than the last outgoing message.
- A blue that shifts between light and dark mode. The outgoing fill is
#0084ffin both; only the background and the incoming bubble move. - A heavy coloured header bar. The real Messenger header is white (or black) with a name and a small grey status line underneath.
Troubleshooting the scenes that go wrong
Three situations come up again and again. The first is dark mode: Messenger dark is not an inverted light mode. The outgoing blue is unchanged, the incoming bubble moves to #303031, and the background goes to pure black. If you also darken the blue, the result looks like a different app entirely.
The second is image-heavy threads. A photo bubble keeps the same corner logic as a text bubble and can carry a caption underneath. The mistake to avoid is giving the photo a different radius from the text — they share the 18px capsule shape, and the run rule applies to mixed text-and-photo groups too.
The third is the group-versus-one-to-one mix-up. If more than two people are in the thread, you are no longer building Messenger: a multi-person conversation uses coloured sender names and a member-list header, which is what the group chat generator reproduces. Meta also runs a second messaging interface with its own rules, covered by the Instagram DM generator. Mixing Messenger conventions with either of those is what makes a mockup feel synthetic, even when every individual colour is correct.
The rule we hold to
A staged Messenger conversation in a sketch, a design review, a teaching exercise or a piece of fiction is a creative device. The same screenshot presented as proof that someone actually said something is not, and the difference is intent rather than pixels. We publish an Acceptable Use Policy covering that boundary, and there are deliberately no templates here for fake bank, government, medical or legal notices. If you would like to study complete scenes before building your own, the Messenger examples gallery renders live, and the messaging app colour reference lists the same values used above alongside the other platforms.