Emoji

Eight emoji sets, one browser each

Emoji are font glyphs, not images. A webshot server draws them in whatever colour-emoji font it happens to have — so we run a separate container per set, each with exactly one installed and fontconfig rebuilt around it.

The same page rendered with the Android emoji set
Android android

Google's Noto Color Emoji, as shipped on current Android. The set that redesigned the blobs away, and the default on most Linux servers — which is why so much of the web is accidentally rendered in it.

The same page rendered with the Apple emoji set
Apple apple

Apple Color Emoji — the glyphs most people picture when they picture an emoji, because most people compose them on a phone that draws these.

The same page rendered with the Blobmoji emoji set
Blobmoji blobmoji

Android's original blobs, retired by Google in 2017 and kept alive by the people who never forgave them for it. Gboard still hides a few.

The same page rendered with the Twemoji emoji set
Twemoji twemoji

Twitter's open-licensed set. Flat, high-contrast and unmistakable — and, because the licence is permissive, the set a great many sites deliberately load for themselves.

The same page rendered with the WhatsApp emoji set
WhatsApp whatsapp

WhatsApp draws its own emoji rather than the host system's, so the same message looks the same on an iPhone and on an Android — and looks like neither.

The same page rendered with the Samsung emoji set
Samsung samsung

Samsung One UI ships its own set over Android's. On the best-selling Android handsets on earth, this — not Noto — is what a person actually sees.

The same page rendered with the Facebook emoji set
Facebook facebook

Meta's in-app set, drawn rounder and warmer than the system emoji it replaces inside the app.

The same page rendered with the Microsoft emoji set
Microsoft microsoft

Segoe UI Emoji — the flat, geometric set on every Windows desktop, and therefore on most of the screens in most offices.

Asking for one

One parameter. No CSS is injected into your page and no font is substituted — the request is simply routed to the container that has that font and no other.

bash
curl -X POST https://webshotter.com/api/v1/webshots \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "emoji_set": "android"}' \
  -o webshot.png

Omit emoji_set and you get whatever the device you asked for would render: a MacBook draws Apple, a Galaxy draws Samsung. Sending one overrides that.

Pick the emoji, not the server's font

Free to start. Render the same page against three sets and put them side by side.